Desactivar imágenes en Selenium Python

Debido a que Webdriver espera a que se cargue toda la página antes de pasar a la siguiente línea, creo que deshabilitar las imágenes, CSS y JavaScript acelerarán las cosas.

from selenium import webdriver from selenium.webdriver.firefox.firefox_profile import FirefoxProfile def disableImages(self): ## get the Firefox profile object firefoxProfile = FirefoxProfile() ## Disable CSS firefoxProfile.set_preference('permissions.default.stylesheet', 2) ## Disable images firefoxProfile.set_preference('permissions.default.image', 2) ## Disable Flash firefoxProfile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false') ## Set the modified profile while creating the browser object self.browserHandle = webdriver.Firefox(firefoxProfile) 

Obtuve el código de stackoverflow No quiero que las imágenes se carguen y CSS se muestre en Firefox en las pruebas de Selenium WebDriver con Python

Pero cuando agrego

 driver = webdriver.Firefox() driver.get("http://www.stackoverflow.com/") 

Hasta el final, todavía carga imágenes: /

ACTUALIZACIÓN : es posible que la respuesta ya no funcione ya que permissions.default.image convirtió en una configuración congelada y no se puede cambiar. Por favor intente con la extensión de quickjava (enlace a la respuesta ).


webdriver pasar la instancia de firefox_profile al constructor webdriver :

 from selenium import webdriver firefox_profile = webdriver.FirefoxProfile() firefox_profile.set_preference('permissions.default.stylesheet', 2) firefox_profile.set_preference('permissions.default.image', 2) firefox_profile.set_preference('dom.ipc.plugins.enabled.libflashplayer.so', 'false') driver = webdriver.Firefox(firefox_profile=firefox_profile) driver.get('http://www.stackoverflow.com/') driver.close() 

Y así se mostraría:

introduzca la descripción de la imagen aquí

Desafortunadamente, la opción firefox_profile.set_preference('permissions.default.image', 2) ya no funcionará para deshabilitar las imágenes con la última versión de Firefox – [para ver la respuesta de Alecxe a mi pregunta No puedo apagar las imágenes en Selenium / Firefox ]

La mejor solución que tuve fue usar la extensión de Firefox quickjava, que entre otras cosas puede deshabilitar las imágenes: https://addons.mozilla.org/en-us/firefox/addon/quickjava/

Mi código de Python:

  from selenium import webdriver firefox_profile = webdriver.FirefoxProfile() firefox_profile.add_extension(folder_xpi_file_saved_in + "\\quickjava-2.0.6-fx.xpi") firefox_profile.set_preference("thatoneguydotnet.QuickJava.curVersion", "2.0.6.1") ## Prevents loading the 'thank you for installing screen' firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Images", 2) ## Turns images off firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.AnimatedImage", 2) ## Turns animated images off driver = webdriver.Firefox(firefox_profile) driver.get(web_address_desired) 

Otras cosas también se pueden apagar agregando las líneas:

  firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.CSS", 2) ## CSS firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Cookies", 2) ## Cookies firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Flash", 2) ## Flash firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Java", 2) ## Java firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.JavaScript", 2) ## JavaScript firefox_profile.set_preference("thatoneguydotnet.QuickJava.startupStatus.Silverlight", 2) ## Silverlight 

La respuesta aceptada tampoco funciona para mí. De los enlaces de “motivos” referidos por kyrenia, obtuve que Firefox reemplaza la preferencia “permissions.default.image” en el primer inicio y pude evitarlo haciendo lo siguiente:

 # Arbitrarily high number profile.set_preference('browser.migration.version', 9001) 

Lo que parece estar bien, ya que creo el perfil en cada inicio de controlador, por lo que no hay nada para migrar realmente.

Entiendo que esta es una pregunta de Python , pero me ayudó con facebook / php-webdriver . (Primer resultado en el motor de búsqueda para php webdriver disable javascript )

Pensé que publicaría mi código (versión modificada de @kyrenia respuesta para php ) para ayudar a otros a ponerse en marcha.


Instalar todo

  1. Descargar e instalar facebook / php-webdriver . composer require facebook/webdriver

  2. Descargar Selenium & Start it. java -jar selenium-server-standalone-#.jar

  3. Descarga Quick Java y colócalo en el directorio de tu proyecto.


Uso

 use Facebook\WebDriver\Firefox\FirefoxProfile; use Facebook\WebDriver\Firefox\FirefoxDriver; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; // Change this to the path of you xpi $extensionPath = $this->container->getParameter('kernel.root_dir').'/../bin/selenium/quickjava-2.0.6-fx.xpi'; // Build our firefox profile $profile = new FirefoxProfile(); $profile->addExtension($extensionPath); $profile->setPreference('thatoneguydotnet.QuickJava.curVersion', '2.0.6.1'); $profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.Images', 2); $profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.AnimatedImage', 2); $profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.CSS', 2); //$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.Cookies', 2); $profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.Flash', 2); $profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.Java', 2); //$profile->setPreference('thatoneguydotnet.QuickJava.startupStatus.JavaScript', 2); $profile->setPreference("thatoneguydotnet.QuickJava.startupStatus.Silverlight", 2); // Create DC $dc = DesiredCapabilities::firefox(); $dc->setCapability(FirefoxDriver::PROFILE, $profile); // Create our new driver $driver = RemoteWebDriver::create($host, $dc); $driver->get('http://stackoverflow.com'); // The HTML Source code $html = $driver->getPageSource(); // Firefox should be open and you can see no images or css was loaded 

Ver más configuraciones de preferencias aquí: https://github.com/ThatOneGuyDotNet/QuickJava/blob/master/defaults/preferences/defaults.js