java selenium firefox webdriver profile

java - ¿Cómo evitar que Selenium cree perfiles temporales de Firefox con Web Driver?



webdriver profile (10)

  1. Inicie Firefox con: firefox -P
  2. Cree un nuevo perfil (ej. Webdriver1), agregue los complementos necesarios, etc.
  3. Agregue a su caso de prueba:

    DesiredCapabilities desiredCapabilities = new DesiredCapabilities("firefox", "", Platform.ANY); FirefoxProfile profile = new ProfilesIni().getProfile("webdriver1"); desiredCapabilities.setCapability("firefox_profile", profile); WebDriver webdriver = new RemoteWebDriver(desiredCapabilities);

Estoy usando Selenium Web Driver API con Java. Cada vez que quiero depurar mis casos de prueba, se crea un perfil temporal para Firefox en el directorio de archivos temporales. Este es un dolor de cabeza de dos maneras.

  1. Definitivamente se está tomando un tiempo innecesario para crear un perfil y se está tomando un espacio innecesario.
  2. No puedo instalar ningún complemento que esté disponible la próxima vez que inicie mis casos de prueba.

¿Cómo puedo evitar esto?


Asegúrate de llamar

driver.quit();

en lugar de

driver.close();

close () no eliminará archivos temporales


La respuesta fue en realidad bastante fácil después de pasar por esta pregunta donde encontré la documentación. Encontré la clase FirefoxProfile y el constructor tomó la ruta al perfil de Firefox.

WebDriver driver = null; FirefoxProfile profile = new FirefoxProfile(new File("C://Users//Ranhiru//AppData//Roaming//Mozilla//Firefox//Profiles//qp1nizdo.Selenium")); driver = new FirefoxDriver(profile);

Creé un nuevo perfil ejecutando "Firefox.exe" con el indicador -p .

Firefox.exe -p

Instalé las extensiones que necesitaba para este perfil y ¡estaba listo para empezar! :)

Actualizar

No importa si asigna un perfil o no, sin embargo, se crea el perfil temporal en la carpeta temporal. Al crear y asignar un perfil, tiene la oportunidad de usar firebug / xpather / su extensión favorita al realizar pruebas.


No puede evitar que Selenium cree archivos temporales incluso si especifica uno. Pero puede borrarlo después de las pruebas completadas.

TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()

Probado bajo MacOS y Ubuntu.


Puede cargar FirefoxWebDriver con los complementos deseados llamando al addExtension(File) en la clase FirefoxProfile .

Ejemplo:

try { File firebug = new File("C://FFPlugins//firebug-1.7.3.xpi"); File xpathChecker = new File("C://FFPlugins//xpath_checker-0.4.4-fx.xpi"); profile.addExtension(firebug); profile.setPreference("extensions.firebug.currentVersion", "1.7.3"); profile.addExtension(xpathChecker); profile.setPreference("extensions.xpath_checker.currentVersion", "0.4.4"); } catch(IOException e) { e.printStackTrace(); } driver = new FirefoxDriver(profile);



Puede utilizar siempre el perfil denominado default , que es el utilizado por defecto por el usuario. Allí tendrá todas sus cookies, complementos, etc. y podrá usarlo sin complicaciones, utilizando

System.setProperty("webdriver.firefox.profile", "default");

antes de crear WebDriver

WebDriver driver = new FirefoxDriver();

para crear un nuevo perfil puedes ejecutarlo en el shell firefox -p que te mostrará

y obtener un nuevo perfil además del default . Eso te dará toda la libertad que quieras.


Tengo crear un perfil personalizado ejecutando el comando:

firefox -profileManager

(luego agrego cualquier excepción, etc. Exijo, como debido al selenio, la apertura del perfil limpio / instancia cada vez que se pierden las excepciones)

Entonces estaba creando directamente mi Firefox con este perfil usando lo siguiente:

private static String profilePath = "C://fitnesse//Selenesse//FFProfiles"; private static FirefoxProfile ffprofile = new FirefoxProfile(profilePath); private static IWebDriver driver = new FirefoxDriver(ffprofile);


puede especificar una ubicación diferente para los archivos temporales antes de que comience el programa, para que su programa no se detenga debido a "falta de espacio en la memoria"

if(!new File("c:/temp_data").isDirectory()) //to check dir exist FileUtils.forceMkdir(new File("c:/temp_data")); //create dir if not exists TemporaryFilesystem.setTemporaryDirectory(new File("c:/temp_data")); //set new dir as temp file path for selenium FirefoxProfile profile = new FirefoxProfile();


Puede controlar cómo el controlador de Firefox elige el perfil. Establezca la propiedad webdriver.firefox.profile en el nombre del perfil que desea usar. La mayoría de la gente piensa que es una mala idea, porque heredarás todas las cookies, el contenido del caché, etc. de los usos anteriores del perfil, pero está permitido si realmente quieres hacerlo.

Por ejemplo:

System.setProperty("webdriver.firefox.profile", "MySeleniumProfile"); WebDriver driver = new FirefoxDriver(...);

ACTUALIZACIÓN - Desde

Cómo lo manejé para Java

FirefoxProfile profile = new FirefoxProfile(new File("D://Selenium Profile")); WebDriver driver = new FirefoxDriver(profile);

Luego cambié la configuración en Firefox para borrar todas las cookies y el caché al salir. Mire here cómo hacerlo.