如何在 chrome 中禁用 (python) selenium 测试的 "Reload site? Changes you made may not be saved" 弹出窗口?

How to disable a "Reload site? Changes you made may not be saved" popup for (python) selenium tests in chrome?

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

是否可以将 chrome selenium 浏览器配置为 不显示此弹出窗口?如果是这样,该怎么做?还是有其他方法可以抑制此弹出窗口?还是接受?

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

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

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

此弹出窗口的文本为 重新加载站点?您所做的更改可能无法保存onbeforeunload 属性 的 WindowEventHandlers

的实现

onbeforeunload

WindowEventHandlersmixin的onbeforeunload属性是处理EventHandler beforeunload 事件。这些事件在 window 即将 卸载 其资源时触发。此时,文档仍然可见,事件仍然可以取消。


解决方案

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

  • 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" );
    

You can find a relevant discussion in