如何从浏览器中删除通知和警报? selenium python 2.7.7

时间:2015-10-05 16:34:03

标签: python python-2.7 selenium selenium-webdriver selenium-firefoxdriver

我正在尝试在网页中提交信息,但是selenium会抛出此错误:

  

UnexpectedAlertPresentException:警告文本:此页面正在询问您   确认您要离开 - 您输入的数据可能不是   保存。 ,   >

这不是请假通知;这是通知的图片 -

enter image description here

如果我点击进来再也没有显示此通知,我的操作就不会被保存;有没有办法保存或禁用所有通知?

编辑:我使用的是Firefox。

6 个答案:

答案 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,但这也适用于指定可执行文件路径。