Как обрабатывать всплывающее окно загрузки IE с помощью селена webdriver
Мне нужно решение, чтобы загрузить файл PDF из веб-приложения в IE11 с помощью веб-драйвера selenium. Пожалуйста, найдите ниже всплывающее окно, с которым я пытаюсь справиться.
Ниже приведены способы обработки всплывающего окна IE, но, к сожалению, ничего не помогло.
Я пытался справиться с этим сценарием, используя AutoIT, используя скрипт AutoIT ниже.
Sleep (5000)
Локальный $hIE = WinGetHandle("[Класс: IEFrame]")
Local $ hCtrl = ControlGetHandle ($ hIE, "", "[ClassNN: DirectUIHWND1]")
Если WinExists($hIE,""), то
WinActivate($ ГИЭ, "")
ControlSend ($ hIE, "", $ hCtrl, "{F6}")
Sleep (500)
ControlSend ($ hIE, "", $ hCtrl, "{TAB}")
Sleep (500)
ControlSend ($ hIE, "", $ hCtrl, "{enter}")
EndIf
Sleep (25000)
Хотя вышеуказанный скрипт AutoIT работал, но после выполнения скрипта AutoIT скрипты веб-драйвера зависают. Даже обычный оператор system.out.println не выполняется после обработки всплывающего окна с использованием вышеуказанного сценария AutoIT.
Я пытался обработать это всплывающее окно с помощью класса Robot, но мне не повезло, что, похоже, это тоже не сработало.
Я попытался отключить это всплывающее окно IE, выполнив некоторые настройки реестра, перейдя по указанному ниже пути: HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\AttachmentExecute\
После выполнения определенных настроек реестра это всплывающее окно успешно отключается для файлов.xlsx или.RDP, а не для файлов.PDF. Но в моем случае у меня есть тестовый пример, в котором мне нужно скачать файл.pdf и продолжить работу со скриптами веб-драйвера.
Ребята, предложение любого другого обходного пути будет с благодарностью.
Спасибо, Судхендран П.Л.
1 ответ
У меня такая же проблема. Нажмите кнопку не работает должным образом в этом случае с IE. Я переключил кнопку для фокусировки sendKeys()
а затем нажав клавишу Enter.
Попробуй это:
Robot robot;
try {
// pressing download button
button.sendKeys("""");
robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
// handling download
webDriver.wait(2000);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_S);
webDriver.wait(200);
robot.keyRelease(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_ALT);
} catch (Exception e) {
e.printStackTrace();
}
Ты можешь использовать Thread.sleep()
вместо driver.wait()
и должен работать так же.