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

Ale*_*lex 6 javascript python selenium google-chrome onbeforeunload

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

在此处输入图片说明

是否可以通过这种方式配置Chrome硒浏览器,以使该弹出窗口不出现?如果是这样,该怎么做?还是有其他方法可以阻止此弹出窗口?还是接受呢?

Deb*_*anB 6

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


卸载前

WindowEventHandlers mixin的onbeforeunload属性是用于处理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')
    
    Run Code Online (Sandbox Code Playgroud)
  • 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)
    
    Run Code Online (Sandbox Code Playgroud)
  • 跨浏览器解决方案:作为跨浏览器解决方案,您可以禁用此对话框调用executeScript()window.onbeforeunload设置为function() {};,您可以使用以下解决方案:

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

    $I->executeJS( "window.onbeforeunload = null" );
    
    Run Code Online (Sandbox Code Playgroud)

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

  • 我刚刚意识到我已经为 Chrome 设置了这个标志 `--disable-popup-blocking`。但是,它似乎无法正常工作。我仍然不时收到弹出窗口(重复完全相同的网页)。 (3认同)