ChromeDriver Remote - 使用 browserstack 禁用通知

ChromeDriver Remote - disable notifications using browserstack

我在 BrowserStack 服务上使用 selenium,我需要禁用 chrome 通知 [例如。在屏幕截图]。我在本地使用以下代码执行此操作,但 Internet 上的所有手册都没有帮助我让它在 BrowserStack 上的远程 ChromeDriver 上运行。

ChromeDriver notification.jpg

>@Before
    public void SetUP() throws Exception {
        ChromeOptions options = new ChromeOptions();
        Map<String, Object> prefs = new HashMap<String, Object>();
        prefs.put("profile.default_content_setting_values.notifications", 2);
        options.setExperimentalOption("prefs", prefs);
        options.addArguments("--start-maximized");
        options.addArguments("disable-popup-blocking");
        DesiredCapabilities caps = DesiredCapabilities.chrome();
        caps.setCapability("browser", "Chrome");
        caps.setCapability("browser_version", "49.0");
        caps.setCapability("os", "Windows");
        caps.setCapability("os_version", "10");
        caps.setCapability("resolution", "1280x1024");
        caps.setCapability(ChromeOptions.CAPABILITY, options);
        caps.setCapability("browserstack.debug", "true");
        driver = new RemoteWebDriver(new URL(URL), caps);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

前段时间,在 Chrome 上远程执行测试时,我在使用 WebPageTest(性能测量工具)时遇到了同样的问题。我可以在这里给你的一个提示是从关闭所有通知的状态恢复浏览器配置文件。我 "lied" 通过以下方式手动执行该工具:

  1. 关闭浏览器实例上的通知。您可以手动执行此操作,请参见屏幕截图
  2. 获取使用此更改创建的配置文件(在默认位置的 Internet 中搜索)
  3. 将配置文件放置在默认文件夹中,在每个 运行 之前恢复配置文件或将其放置在这里:

prefs.put("profile.default_content_setting_values.notifications", 2);

希望这对您有所帮助, 萝拉

BrowserStack 支持人员找到了解决方案!非常感谢他们。

此代码在 ChromeDriver 中远程运行:

        ChromeOptions options = new ChromeOptions();
        Map<String, Object> prefs = new HashMap<String, Object>();
        Map<String, Object> profile = new HashMap<String, Object>();
        Map<String, Object> contentSettings = new HashMap<String, Object>();
        contentSettings.put("notifications", 2);
        profile.put("managed_default_content_settings", contentSettings);
        prefs.put("profile", profile);
        options.setExperimentalOption("prefs", prefs);
        options.addArguments("--disable-plugins");
        options.addArguments("--start-maximized");
        DesiredCapabilities caps = DesiredCapabilities.chrome();
        caps.setCapability("browser", "Chrome");
        caps.setCapability("browser_version", "49.0");
        caps.setCapability("os", "Windows");
        caps.setCapability("os_version", "10");
        caps.setCapability("resolution", "1280x1024");
        caps.setCapability("browserstack.debug", "true");
        caps.setCapability(ChromeOptions.CAPABILITY, options);
        driver = new RemoteWebDriver(new URL(URL), caps);