我在chrome浏览器上运行自动(python)硒测试,有时重新加载页面时,屏幕上会出现一个弹出窗口:
是否可以通过这种方式配置Chrome硒浏览器,使该弹出窗口不出现?如果是这样,该怎么做?还是有其他方法可以阻止此弹出窗口?还是接受它?
答案 0 :(得分:1)
此弹出窗口,文本为重新加载网站?您所做的更改可能不会保存,是对WindowEventHandlers
的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();