Появилась проблема с Internet explorer 11 под windows 10 - при запуске теста с WebDriver, который должен пройти по всем ссылкам на странице - и скачать файлы - вылезает диалоговое окно “Открыть-Сохранить-Сохранить как” убрать его как я понял и включить функцию автозагрузки файлов в Internet explorer 11 невозможно… (возможно настроить на автоматическое открытие файла - но тогда мешает word)… решил прикрутить скрипт Autoit и запускать его после каждого нажатия на ссылку, чтобы он закрывал диалоговое окно… но после выполнения скрипта - тест зависает на первой ссылке.
Отсюда вопрос: Как обойти эти диалоговые окна в internet explorer 11?? и возможно ли запустить скрипт Autoit внутри теста Cest с последующим выполнением сценария… Спасибо!
Всем привет. Что никто не сталкивался с такой проблемой? Тоже не могу побороть.
Вебдрайвером, кликаю на ссылку, затем AutoIt открывает файл, открывается ворд, AutoIt закрывает окно вода и передает фокус IE.
Но дальнейшее выполнение теста не идет. Происходит зависание.
Java:
Process proc = Runtime.getRuntime().exec("d:\\AUTOtest\\DownloadTemplate\\DownloadTemplate.exe");
WebElement DownloadTemplate = driver.findElement(By.cssSelector("a[data-qtip='скачати шаблон']"));
(new WebDriverWait(driver, 30))
.until(ExpectedConditions.visibilityOf(DownloadTemplate));
DownloadTemplate.click();
}
@AfterClass
public static void tearDown() {
driver.switchTo().defaultContent();
WebElement profileButton = driver.findElement(By.id("btnProfile"));
profileButton.click();
WebElement logoutButton = driver.findElement(By.xpath("//*[@id='userProfile']/div[2]/a[2]"));
logoutButton.click();
driver.quit();
}
}
И собственно код AutoIT
Sleep(5000)
Local $hIE = WinGetHandle("[Class:IEFrame]")
Local $hCtrl = ControlGetHandle($hIE, "", "[ClassNN:DirectUIHWND1]")
If WinExists($hIE,"") Then
WinActivate($hIE,"")
ControlSend($hIE ,"",$hCtrl,"{F6}") ; Gives focus to Open Button
Sleep(500)
ControlSend($hIE ,"",$hCtrl,"{enter}") ; Submit whatever control has focus
EndIf
Sleep(3000)
Local $hWnd3 = WinGetHandle("DPT_STROK_PENS (защищенный просмотр) - Word")
If WinExists($hWnd3,"") Then
WinActivate($hWnd3,"")
Sleep(2000)
WinClose($hWnd3)
Else
MsgBox(4096, "", "Окно не существует")
EndIf
Sleep(2000)
WinActivate($hIE,"")
ControlSend($hIE ,"",$hCtrl,"{F6}")
Exit
Заранее спасибо откликнувшимся
Добавь в код autoit перезагрузку текущей страницы
1 лайк
Огромное спасибо!!! прошло
А может подскажешь, как сделать, что бы тест фейлился, если в autoit будет ошибка( например выскочит окно MsgBox(4096, “”, “Окно не существует”) )?
А то теперь получается, что при успешном прохождении все хорошо, а если нет, остается открытым и окно autoit и в джаве тест крутится(подвисает)
Добавь условие if not winexist:)
Зачем добавлять if not winexist, если есть if winexist c else, которое выполняется если окна нет?
С меседжом от autoit я в принципе разобрался, просто таймаут на него повесил.
Долго не мог понять как сделать что бы джава тест падал, если в автоит ошибка. Оказалось все просто: добавил в else скрипта aotoit, возврат на браузер и его закрытие. Теперь все работает. Спасибо за подсказки.
Оставлю свой скрипт, может кому пригодится…
AutoIt скрипт
Sleep(5000)
Local $hIE = WinGetHandle("[Class:IEFrame]")
Local $hCtrl = ControlGetHandle($hIE, "", "[ClassNN:DirectUIHWND1]")
If WinExists($hIE,"") Then
WinActivate($hIE,"")
ControlSend($hIE ,"",$hCtrl,"{F6}") ; Gives focus to Open Button
Sleep(500)
ControlSend($hIE ,"",$hCtrl,"{enter}") ; Submit whatever control has focus
EndIf
Sleep(5000)
Local $hWnd3 = WinGetHandle("DPT_STROK_PENS (защищенный просмотр) - Word")
If WinExists($hWnd3,"") Then
WinActivate($hWnd3,"")
Sleep(5000)
WinClose($hWnd3)
Sleep(2000)
WinActivate($hIE,"")
ControlSend($hIE ,"",$hCtrl,"{F5}")
Else
MsgBox(4096, "Error", "Окно не существует", 1)
WinActivate($hIE,"")
WinClose($hIE,"")
EndIf
Exit