如何让Selenium回应Chrome的网站初始化弹出窗口?

时间:2012-07-20 13:25:44

标签: testing selenium selenium-chromedriver

我正在尝试使用ChromeDriver的Selenium来自动化一些音频/视频测试。 但当我用我的应用程序启动Chrome浏览器时,它会问我http:...想要使用你的相机和麦克风的问题允许拒绝选项我想点击允许并继续在网站上编写脚本。但是如果不选择允许我就无法继续。不幸的是,Chrome以某种非DOM格式弹出这个问题,我无法以明显的方式执行driver.findElement,并在“允许”选项上单击“响应”。有没有人遇到过这种情况,处理这个问题的最佳方法是什么?

干杯!      - 布赖恩

2 个答案:

答案 0 :(得分:1)

请参阅this answer(打印对话框)或this answer(“运行方式...”对话框)。

不同的对话框,但原因(简而言之,WebDriver无法处理这些对话框)和可能的解决方案完全相同:

  • Robot类,它允许您以编程方式“按下”键盘上的任何内容(或盲目地点击),从而通过按 Enter 或 Esc 。但是,如上所述,任何高级交互都依赖于OS /语言/打印机。

    // press Escape programatically - the print dialog must have focus, obviously
    Robot r = new Robot();
    r.keyPress(KeyEvent.VK_ESCAPE);
    r.keyRelease(KeyEvent.VK_ESCAPE);
    

    当然,您也可以通过此课程输入任何内容。

  • AutoIt。它是一个Windows程序,可用于处理任何系统级自动化。与上述相同。

请注意(据我所知)您无法真正检查对话框是否显示,因此如果在没有相机的计算机上运行,​​您将无法捕获可能的错误...

答案 1 :(得分:1)

如果您使用的是ChromeDriver,则可以使用

进入任何“原生”弹出窗口
Alert popup = webDriver.switchTo().alert();
// here you can examine the text within the alert using popup.getText();
popup.accept();