3

これは古い質問であることは知っています。Disable Chrome notifications (Selenium)などのいくつかの投稿から回答を試しました。

残念ながら、どれも機能しませんでした。ブラウザの通知ポップアップが引き続き表示され、シミュレーションが中断されます。

私の Chrome バージョンは 75.0.3770.100 (公式ビルド) (64 ビット) で、MacOS で実行されています。


編集:

この質問の後、Firefox および Chrome で Selenium を使用してプッシュ通知を無効にする方法の複製としてマークされましたか? 、解決策を試しましたが、それでもうまくいきませんでした。

            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が通知を表示したい」という通知が引き続き表示されます。ブロックを許可します。

私が正しくしなかったことは何ですか?

4

1 に答える 1

0

Chrome 75.0.3770.142 (64 ビット) と ChromeDriver 75.0.3770.90 (以下のログを参照) を使用して、Web サイトhttps://www.nzz.chに対して Windows でこれをテストしました (プッシュ通知を表示する許可を求めるため)。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 ではドライバーがそれを実装していません。

PS: Firefox と Chrome の両方で、通知ポップアップが表示されている間でも、リンクをクリックして他のページに移動するなどの問題はありませんでした。そこで何か問題がありましたか、それともポップアップはただの煩わしさですか?

于 2019-07-22T01:37:17.267 に答える