如何使用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()
- 如何使用Selenium WebDriver在新标签页(chrome)中打开链接?
- 如何在多个浏览器中运行Selenium测试,以便使用Java进行跨浏览器测试?
- 在Chrome浏览器的GXT EditorGrid中单击鼠标时,TextField不会显示焦点
- 从Selenium和chromedriver下载文件
- 使用ChromeDriver和无头模式下载Java,Selenium中的文件
- 获取无法使用java / selenium将元素集中在chrome和edge中
- 使用selenium自定义Chrome webdriver以保存文件,而不会在下载时提示保存或丢弃文件
- WebDriver与ChromeDriver
- 无头地在Ubuntu Server上运行Chromedriver