gpt4 book ai didi

Selenium new Chrome 无法禁用浏览器通知(尝试过其他解决方案)

转载 作者:行者123 更新时间:2023-12-01 15:02:15 27 4
gpt4 key购买 nike

我知道这是一个老问题,我已经尝试了一些帖子的答案,例如 Disable Chrome notifications (Selenium)

不幸的是,没有任何效果,浏览器通知弹出窗口仍然出现并中断了我的模拟。

我的 Chrome 版本是 75.0.3770.100(正式版)(64 位),在 MacOS 上运行。


编辑:

在这个问题被标记为 How to disable push-notifications using Selenium for Firefox and Chrome? 的副本之后,我已经尝试了这些解决方案,但它仍然对我不起作用。

            String chromePath = "somepath/selenium-2.48.2/chromedriver";
System.setProperty("webdriver.chrome.driver", chromePath);


Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_setting_values.notifications", 2);
prefs.put("credentials_enable_service", false);
prefs.put("profile.password_manager_enabled", false);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
options.addArguments("start-maximized");
options.addArguments("disable-infobars");
options.addArguments("--disable-extensions");
options.addArguments("--disable-notifications");

driver = new ChromeDriver(options);

以下是我尝试过的原始解决方案。

        String chromePath = "somepathto/chromedriver";
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--disable-notifications");
System.setProperty("webdriver.chrome.driver", chromePath);
WebDriver driver = new ChromeDriver(chromeOptions);

// Login
try {
driver.get(sometestURL);
driver.manage().window().maximize();
// do some operations
} catch (Exception ex) {
System.out.println(ex);
}

我也试过这个:

        String chromePath = "somepath/selenium-2.48.2/chromedriver";
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_setting_values.notifications", 2);
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("prefs", prefs);
System.setProperty("webdriver.chrome.driver", chromePath);
WebDriver driver = new ChromeDriver(chromeOptions);

但是通知仍然出现在窗口左上角“xxxxwebsite wants to show notifications Allow Block”。

我做错了什么?

最佳答案

我刚刚在 Windows 上使用 Chrome 75.0.3770.142(64 位)和 ChromeDriver 75.0.3770.90(参见下面的日志)针对网站 https://www.nzz.ch 进行了测试(因为它要求获得显示推送通知的许可)。我使用的是 Selenium 3.14.0。

08:27:37.184 [main] INFO  i.g.bonigarcia.wdm.WebDriverManager - Exporting webdriver.chrome.driver as C:\Users\xxxxx\.m2\repository\webdriver\chromedriver\win32\75.0.3770.90\chromedriver.exe
Starting ChromeDriver 75.0.3770.90 (a6dcaf7e3ec6f70a194cc25e8149475c6590e025-refs/branch-heads/3770@{#1003}) on port 32864

对我来说,这里和链接资源中也提到了开关可靠地停用显示的弹出窗口:

options.addArguments("--disable-notifications");

更改默认设置 profile.default_content_setting_values.notifications 对我来说不是必需的。所以如果这对你不起作用

  • 您没有正确设置选项,
  • 您使用的(可能是过时的)ChromeDriver 版本不支持它或
  • 出于某种原因,在 MacOS 上驱动程序没有实现它。

P.S.:对于我来说,在 Firefox 和 Chrome 中都没有问题,例如即使在显示通知弹出窗口期间,也可以单击链接并导航到其他页面。您在那里有任何问题还是弹出窗口只是一个烦恼?

关于Selenium new Chrome 无法禁用浏览器通知(尝试过其他解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57015268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com