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

Selenium webdriver 如何使用selenium webdriver处理IE下载弹出窗口,selenium-webdriver,popup,internet-explorer-11,autoit,Selenium Webdriver,Popup,Internet Explorer 11,Autoit,我需要一个解决方案,使用SeleniumWebDriver从IE11中的web应用程序下载PDF文件。请找到下面我正在尝试处理的弹出窗口 下面是我尝试处理IE弹出窗口的方法,但不幸的是没有任何帮助 我尝试使用下面的AutoIT脚本使用AutoIT处理此场景 睡眠(5000) 本地$hIE=wingthandle(“[Class:IEFrame]”) 本地$hCtrl=ControlGetHandle($hIE,“,”[ClassNN:DirectUIHWND1]”) 如果WinExists(

我需要一个解决方案,使用SeleniumWebDriver从IE11中的web应用程序下载PDF文件。请找到下面我正在尝试处理的弹出窗口

下面是我尝试处理IE弹出窗口的方法,但不幸的是没有任何帮助

  • 我尝试使用下面的AutoIT脚本使用AutoIT处理此场景

    睡眠(5000)

    本地$hIE=wingthandle(“[Class:IEFrame]”)

    本地$hCtrl=ControlGetHandle($hIE,“,”[ClassNN:DirectUIHWND1]”)

    如果WinExists($hIE,“”),那么

    WinActivate($hIE,“”)

    ControlSend($hIE,“,$hCtrl,“{F6}”)

    睡眠(500)

    ControlSend($hIE,“,$hCtrl,“{TAB}”)

    睡眠(500)

    ControlSend($hIE,“,$hCtrl,“{enter}”)

    恩迪夫

    睡眠(25000)

  • 虽然上面的AutoIT脚本工作正常,但在执行AutoIT脚本后,webdriver脚本挂起。在使用上述AutoIT脚本处理弹出窗口后,即使是公共system.out.println语句也不会执行

  • 我试图用Robot类来处理这个弹出窗口,但不幸的是,这似乎也不起作用

  • 我试图通过以下路径进行一些注册表设置来禁用这个IE弹出窗口, HKEY\ U当前\用户\软件\ Microsoft\Windows\Shell\AttachmentExecute\

    执行某些注册表设置后,此弹出窗口将成功禁用.xlsx或.RDP文件,而不是.PDF文件。但在我的例子中,我有一个测试用例,我需要下载一个.pdf文件,然后继续编写更多的webdriver脚本

  • 伙计们,任何其他解决方法的建议都将不胜感激

    谢谢,,
    Sudheendran P L

    我也有同样的问题。在这种情况下,使用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()
    ,并且应该也可以工作。

    问题是,当robot运行headless job时,它不能与Jenkins一起工作。可以使用这种方法,它不需要任何像AutoIt这样的工具