如何使用Java在Selenium WebDriver中禁用Chrome插件

Chrome插件弹出

当我为此应用程序执行自动化代码时,将显示上面的弹出窗口。 现在我需要知道如何使用Java在Selenium WebDriver中禁用PDF Viewer插件。

这就是我现在正在使用的不起作用的地方。

DesiredCapabilities capabilities = DesiredCapabilities .chrome(); ChromeOptions options = new ChromeOptions(); options.addArguments(new String[] { "test-type" }); options.addArguments(new String[] { "disable-extensions" }); String pluginToDisable = "Chrome PDF Viewer"; options.addArguments("plugins.plugins_disabled", pluginToDisable); capabilities.setCapability("chrome.binary", chromeDriver.getAbsolutePath()); capabilities.setCapability(ChromeOptions.CAPABILITY, options); options.addArguments("--lang=en-gb"); GlobalVars.driver = new ChromeDriver(capabilities); 

以下是使用Selenium / Chrome禁用Flash和PDF查看器的示例:

 ChromeOptions options = new ChromeOptions(); Map preferences = new Hashtable(); options.setExperimentalOption("prefs", preferences); // disable flash and the PDF viewer preferences.put("plugins.plugins_disabled", new String[] { "Adobe Flash Player", "Chrome PDF Viewer" }); // launch the browser and navigate to the page ChromeDriver driver = new ChromeDriver(options); driver.get("https://www.google.co.uk"); 

已针对Chrome V更新:57

此解决方案不再有效。

这是C#中的有效实现:

  var options = new ChromeOptions(); // This was a PAIN. If this ever does not work, here is how I got the preference name: // 1. Navigate to : chrome://settings/content // 2. Scroll to the bottom "PDF Documents" section // 3. Right-Click and inspect element on the check box titled "Open PDF files in the default PDF viewer application" // 4. The preference name is the pref key for the input, in this case: pref="plugins.always_open_pdf_externally" options.AddUserProfilePreference("plugins.always_open_pdf_externally", true); // The constructor must be pointed to the chrome driver .exe // Or you must set a PATH variable pointing to the location using (var driver = new ChromeDriver(options)) { .......... 

似乎“plugins.plugins_disabled”或“plugins.plugins_list”不再起作用了。 “plugins.always_open_pdf_externally”选项对我有用 ( mheirendt的解决方案)。 Java中的示例:

 ChromeOptions co = new ChromeOptions(); Map prefs = new HashMap<>(); prefs.put("plugins.always_open_pdf_externally", true); co.setExperimentalOption("prefs", prefs); WebDriver driver = new ChromeDriver(co); 

—这对我有用 –

 HashMap chromePrefs = new HashMap(); chromePrefs.put("plugins.plugins_disabled", new String[] {"Adobe Flash Player", "Chrome PDF Viewer"}); chromePrefs.put("profile.default_content_settings.popups", 0); ChromeOptions options = new ChromeOptions(); options.setExperimentalOption("prefs", chromePrefs); DesiredCapabilities cap = DesiredCapabilities.chrome(); cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); cap.setCapability(ChromeOptions.CAPABILITY, options); GlobalVars.driver = new ChromeDriver(cap); 

由于Chrome的设置页面也是一个Web应用程序,因此您可以通过编程方式抓取设置页面并禁用PDF查看器。 这是一个示例python代码:

 browser = webdriver.Chrome("./chromedriver") browser.get("chrome://settings-frame/content") pdf_section = browser.find_element_by_id("pdf-section") pdf_disable_checkbox = pdf_section.find_element_by_tag_name("input") if not pdf_section.is_selected(): pdf_disable_checkbox.click()