chromedriver无头警报

Ale*_*Pas 12 selenium-chromedriver selenium-webdriver google-chrome-headless

我用chromedriver进行了selenium webdriver测试.虽然我可以在使用Chrome浏览器时成功运行测试,但我无法在无头模式下运行相同的测试.

我无法处理Js警报.实际上,当拍摄屏幕截图时,似乎警报甚至不会弹出.

提醒截图

我尝试了几种解决方法:

1)driver.window_handles- >似乎没有其他窗口存在

2)driver.execute_script("window.confirm = function(){return true;}")- >该脚本没有任何改变

3)element = WebDriverWait(driver, 20).until(EC.alert_is_present())当然是明确的等待

在浏览器模式下我使用普通:

try:
    print driver.switch_to.alert.text
    driver.switch_to.alert.accept()
except NoAlertPresentException as e: 
    print("no alert")
Run Code Online (Sandbox Code Playgroud)

其他人在无头模式下遇到此问题的警告?

  • chromedriver v.2.30.477691
  • Chrome版本59.0.3071.115

小智 16

Chrome 61还有这个问题,所以我花了一些时间寻找不同的解决方案.我最喜欢的是因为它的简单性是在显示警报之前注入javascript以便自动接受警报.

只需将以下代码行放在导致警报显示的行之前:

driver.ExecuteJavaScript("window.confirm = function(){return true;}");
Run Code Online (Sandbox Code Playgroud)

适用于无头镀铬和PhantomJS.