我正在尝试在网页中提交信息,但是selenium会抛出此错误:
UnexpectedAlertPresentException:警告文本:此页面正在询问您 确认您要离开 - 您输入的数据可能不是 保存。 , >
这不是请假通知;这是通知的图片 -
如果我点击进来再也没有显示此通知,我的操作就不会被保存;有没有办法保存或禁用所有通知?
编辑:我使用的是Firefox。
答案 0 :(得分:15)
您可以使用Chrome选项停用浏览器通知。示例代码如下:
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
答案 1 :(得分:7)
使用最新版本的Firefox,上述偏好无效。
以下是使用Firefox对象
禁用通知的解决方案_browser_profile = webdriver.FirefoxProfile()
_browser_profile.set_preference("dom.webnotifications.enabled", False)
webdriver.Firefox(firefox_profile=_browser_profile)
使用远程对象时禁用通知:
webdriver.Remote(desired_capabilities=_desired_caps, command_executor=_url, options=_custom_options, browser_profile=_browser_profile)
硒== 3.11.0
答案 2 :(得分:2)
通常使用这样的浏览器设置,下次Selenium启动新的浏览器实例时,您所做的任何更改都会被抛弃。
您是否使用专用的Firefox配置文件来运行硒测试?如果是这样,在该Firefox配置文件中,将此设置设置为您想要的设置,然后关闭浏览器。这应该妥善保存,以备下次使用。您需要告诉Selenium使用此配置文件,这是由SetCapabilities在您启动驱动程序会话时完成的。
答案 3 :(得分:1)
这可以做到:
from selenium.webdriver.firefox.options import Options
options = Options()
options.set_preference("dom.webnotifications.enabled", False)
browser = webdriver.Firefox(firefox_options=options)
答案 4 :(得分:0)
此答案是对TH Todorov代码段的改进,基于Chrome的版本(版本80.0.3987.163)。
lk = os.path.join(os.getcwd(),“ chromedriver”,)->在此行中,您提供了chromedriver的链接,您可以从chromedrive link下载该链接
import os
from selenium import webdriver
lk = os.path.join(os.getcwd(), "chromedriver",)
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(lk, options=chrome_options)
答案 5 :(得分:0)
对于Google Chrome和v3的Selenium,您可能会收到“ DeprecationWarning:使用选项而不是chrome_options”,因此您需要执行以下操作:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
options = webdriver.ChromeOptions()
options.add_argument('--disable-notifications')
driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
注意:我使用的是webdriver-manager,但这也适用于指定可执行文件路径。