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

时间:2019-04-09 07:12:16

标签: javascript python selenium google-chrome onbeforeunload

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

enter image description here

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

2 个答案:

答案 0 :(得分:1)

此弹出窗口,文本为重新加载网站?您所做的更改可能不会保存,是对WindowEventHandlers

onbeforeunload 属性的实现

onbeforeunload

onbeforeunload混合的WindowEventHandlers属性是用于处理EventHandler事件的beforeunload。当窗口即将unload其资源时,将触发这些事件。此时,文档仍然可见,事件仍然可以取消。


解决方案

有多种策略可用于处理此弹出窗口

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

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

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

答案 1 :(得分:0)

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

尝试以下代码以接受弹出窗口:

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