如何使用selenium webdriver处理IE下载弹出窗口

时间:2017-04-04 13:54:30

标签: selenium-webdriver popup internet-explorer-11 autoit

我需要一个解决方案,使用selenium webdriver从IE11中的Web应用程序下载PDF文件。请找到我想要处理的以下弹出窗口。

enter image description here

enter image description here

以下是我尝试处理IE弹出窗口的方法,但遗憾的是没有任何帮助。

  1. 我尝试使用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)

  2. 虽然上面的AutoIT脚本有效,但在执行AutoIT脚本后,webdriver脚本会挂起。在使用上述AutoIT脚本处理弹出窗口后,即使是常见的system.out.println语句也没有执行。

    1. 我尝试使用机器人类来处理这个弹出窗口,但运气不好,这似乎也没有用。

    2. 我尝试通过转到下面的路径进行一些注册表设置来禁用此IE弹出窗口, HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ AttachmentExecute \

      执行某些注册表设置后,此弹出窗口已成功禁用.xlsx或.RDP文件,而不是.PDF文件。但在我的情况下,我有一个测试用例,我需要下载.pdf文件并继续使用其他webdriver脚本。

    3. 伙计们,建议任何其他解决方法将不胜感激。

      谢谢你, Sudheendran P L

1 个答案:

答案 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(),也可以使用。