Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Selenium Python中设置UnexpectedAlertBehaviour_Python_Selenium_Exception_Selenium Chromedriver - Fatal编程技术网

如何在Selenium Python中设置UnexpectedAlertBehaviour

如何在Selenium Python中设置UnexpectedAlertBehaviour,python,selenium,exception,selenium-chromedriver,Python,Selenium,Exception,Selenium Chromedriver,处理在Java中设置Selenium Web驱动程序的意外AlertBehaviour。如何在Python的ChromeDriver中执行相同的操作 我试过以下方法 options = ChromeOptions() options.headless = True options.set_capability("UNEXPECTED_ALERT_BEHAVIOUR", "ACCEPT") options.set_capability("unexpectedAler

处理在Java中设置Selenium Web驱动程序的意外AlertBehaviour。如何在Python的ChromeDriver中执行相同的操作

我试过以下方法

    options = ChromeOptions()
    options.headless = True
    options.set_capability("UNEXPECTED_ALERT_BEHAVIOUR", "ACCEPT")
    options.set_capability("unexpectedAlertBehaviour", "accept")
    options.set_capability("CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR", "ACCEPT")
    options.set_capability("UnexpectedAlertBehaviour", "ACCEPT")
    webdriver.DesiredCapabilities.CHROME["unexpectedAlertBehaviour"] = "accept"
    cls.driver = webdriver.Chrome(chrome_options=options)
但是,我仍然随机经历了这个意外的AlertPresent异常:

selenium.common.exceptions.UnexpectedAlertPresentException:警报文本: 消息:意外警报打开:{警报文本:}


当我在非headless模式(head模式?)下运行浏览器时,我没有看到这样的警报,但是测试仍然随机失败,出现了这个异常,尽管我努力设置了这个难以捉摸的选项

随着chromedriver逐渐与W3C兼容。我们需要使用 在ChromeDriver 76.0.3809.126上选中(默认情况下在W3C标准兼容模式下运行)


参考Chromedriver:

您是否尝试捕捉到了此处链接问题的python编码答案中所述的错误:我宁愿接受意外警报,而不是处理异常,因为我希望测试继续进行,即使出现意外警报。我可以切换到警报,如果我知道它存在,但在这种情况下,警报出现是随机的(有时会弹出,有时不会)。我的下一步是总是尝试接受一个警报,如果警报不存在,就抛出异常,但它看起来有点难看。谢谢。仅供将来的谷歌参考,你可以对Firefox geckodriver使用相同的代码(特别是set_功能行),它的工作原理也是一样的。同样对于“accept and notify”选项,我发现只有当我将其设置为单个单词“acceptandnotify”时,它才起作用,但是它仍然会导致使用该选项的单元测试失败。
chrome_options = Options()
chrome_options.set_capability('unhandledPromptBehavior', 'accept')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.google.com")
driver.execute_script('alert(\"HI\");')
time.sleep(10)
print(driver.title)
time.sleep(10)