如何禁用Chrome中(python)selenium测试的“重新加载站点?您所做的更改可能无法保存”弹出窗口?

IT技术 javascript python selenium google-chrome onbeforeunload
2021-03-04 07:13:01

我在 Chrome 浏览器上运行自动化 (python) selenium 测试,有时当页面重新加载时,屏幕上会出现一个弹出窗口:

在此处输入图片说明

是否可以以不出现此弹出窗口的方式配置 chrome selenium 浏览器如果是这样,该怎么做?或者有其他方法可以抑制这个弹出窗口吗?还是接受?

2个回答

这个带有文本的弹出窗口作为重新加载站点?您所做的更改可能无法保存WindowEventHandlersonbeforeunload属性的实现


卸载前

WindowEventHandlers mixinonbeforeunload属性处理beforeunload事件EventHandler当窗口即将卸载其资源时会触发这些事件此时,文档仍然可见,事件仍然可以取消。


解决方案

有不同的策略可用于处理此弹出窗口

  • Chrome解决方案:--disable-popup-blocking通过ChromeOptions() 使用

    from selenium import webdriver
    
    options.add_argument("--disable-popup-blocking")
    driver=webdriver.Chrome(chrome_options=options, executable_path=/path/to/chromedriver')
    
  • Firefox解决方案:dom.disable_beforeunload通过FirefoxProfile() 使用

    from selenium import webdriver
    profile = webdriver.FirefoxProfile()
    profile.set_preference("dom.disable_beforeunload", True)
    driver = webdriver.Firefox(firefox_profile = profile)
    
  • 跨浏览器解决方案:作为跨浏览器解决方案,您可以禁用此对话框调用executeScript()window.onbeforeunload设置function() {};,您可以使用以下解决方案:

    driver.execute_script("window.onbeforeunload = function() {};")
    
  • 基于JQuery的解决方案:

    $I->executeJS( "window.onbeforeunload = null" );
    

您可以在 Internet Explorer 弹出“您确定要离开此页面吗?”下方的如何处理中找到相关讨论。通过selenium

请忽略我之前的评论。无论您在何处浏览页面并出现此弹出窗口,您都需要添加此行以摆脱它。
2021-04-21 07:13:01
有时仍会出现弹出窗口。
2021-04-23 07:13:01
我刚刚意识到我--disable-popup-blocking已经为 Chrome设置了这个标志但是,它似乎无法正常工作。我仍然不时收到弹出窗口(重复完全相同的网页)。
2021-04-27 07:13:01
您是否尝试过跨浏览器解决方案?请问可以给我一个状态吗?
2021-04-28 07:13:01
我什么时候必须执行脚本?就在我创建驱动程序后一次?每次换一个新页面?
2021-05-02 07:13:01

我知道这不能回答问题的抑制部分,但是..

试试这段代码来接受弹出窗口:

driver.SwitchTo().Alert().Accept();

是的,我想我会使用这个建议。但警报只是偶尔弹出。
2021-04-30 07:13:01
您可以尝试添加“尝试除外”块以尝试切换到警报窗口
2021-05-13 07:13:01