我需要一个解决方案,使用selenium webdriver从IE11中的Web应用程序下载PDF文件。请找到我想要处理的以下弹出窗口。
以下是我尝试处理IE弹出窗口的方法,但遗憾的是没有任何帮助。
我尝试使用AutoIT脚本使用AutoIT来处理这种情况。
睡眠(5000)
本地$ hIE = WinGetHandle(" [Class:IEFrame]")
本地$ hCtrl = ControlGetHandle($ hIE,""," [ClassNN:DirectUIHWND1]")
如果是WinExists($ hIE,"")那么
WinActivate($ HIE,"&#34)
ControlSend($ hIE,"",$ hCtrl," {F6}")
睡眠(500)
ControlSend($ hIE,"",$ hCtrl," {TAB}")
睡眠(500)
ControlSend($ hIE,"",$ hCtrl," {enter}")
ENDIF
睡眠(25000)
虽然上面的AutoIT脚本有效,但在执行AutoIT脚本后,webdriver脚本会挂起。在使用上述AutoIT脚本处理弹出窗口后,即使是常见的system.out.println语句也没有执行。
我尝试使用机器人类来处理这个弹出窗口,但运气不好,这似乎也没有用。
我尝试通过转到下面的路径进行一些注册表设置来禁用此IE弹出窗口, HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ AttachmentExecute \
执行某些注册表设置后,此弹出窗口已成功禁用.xlsx或.RDP文件,而不是.PDF文件。但在我的情况下,我有一个测试用例,我需要下载.pdf文件并继续使用其他webdriver脚本。
伙计们,建议任何其他解决方法将不胜感激。
谢谢你, Sudheendran P L
答案 0 :(得分:0)
我遇到了同样的问题。在这种情况下,使用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()
,也可以使用。