instalar - Cómo deshabilitar los complementos de Chrome en Selenium WebDriver con Java
¿cómo activar el plugin de java en google chrome? (5)
Cuando estoy ejecutando mi código de automatización para esta aplicación, se muestra la ventana emergente de arriba. Ahora necesitaría saber cómo deshabilitar el complemento de PDF Viewer en Selenium WebDriver usando Java.
Esto es lo que estoy usando en este momento, que no está funcionando.
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);
Aquí hay un ejemplo para desactivar el flash y el visor de PDF con Selenium / Chrome:
ChromeOptions options = new ChromeOptions();
Map<String, Object> preferences = new Hashtable<String, Object>();
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");
--- Esto funcionó para mí--
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
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);
Actualizado para Chrome V: 57
Esta solución ya no funciona.
Aquí hay una implementación válida en 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))
{
..........
Como la página de configuración de Chrome también es una aplicación web, puede rastrear la página de configuración mediante programación y desactivar el visor de PDF. Aquí hay un código de ejemplo de 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()
Parece que "plugins.plugins_disabled" o "plugins.plugins_list" ya no funcionan. La opción "plugins.always_open_pdf_externally" funcionó para mí (solución de mheirendt ). Ejemplo en Java:
ChromeOptions co = new ChromeOptions();
Map<String,Object> prefs = new HashMap<>();
prefs.put("plugins.always_open_pdf_externally", true);
co.setExperimentalOption("prefs", prefs);
WebDriver driver = new ChromeDriver(co);