Selenium 2.53 no funciona en Firefox 47

Recibo un error al usar Firefox con WebDriver.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. 
  • Versión de Firefox: 47.0
  • Selenio: 2.53.0
  • Windows 10 64 bit

¿Alguien tiene un problema similar o alguna idea de cuál es la solución para esto? Funciona bien con Chrome, pero con Firefox, ninguna de las URL se está cargando.

Lamentablemente, Selenium WebDriver 2.53.0 no es compatible con Firefox 47.0. El componente WebDriver que maneja los navegadores Firefox ( FirefoxDriver ) se descontinuará. A partir de la versión 3.0, Selenium WebDriver necesitará el geckodriver binary para administrar los navegadores Firefox. Más información aquí y aquí .

Por lo tanto, para usar Firefox 47.0 como navegador con Selenium WebDriver 2.53.0, necesita descargar el controlador de Firefox (que es un archivo binario llamado geckodriver desde la versión 0.8.0, y anteriormente los wires ) y exportar su ruta absoluta a la variable webdriver.gecko.driver como propiedad del sistema en su código de Java:

 System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver"); 

Afortunadamente, la biblioteca WebDriverManager puede hacer este trabajo por usted, es decir, descargar el binario Marionette adecuado para su máquina (Linux, Mac o Windows) y exportar el valor de la propiedad adecuada del sistema. Para usar esta biblioteca, debe incluir esta dependencia en su proyecto:

  io.github.bonigarcia webdrivermanager 2.2.5  

… y luego ejecuta esta línea en tu progtwig antes de usar WebDriver:

 WebDriverManager.firefoxdriver().setup(); 

Un ejemplo completo de ejecución de un caso de prueba JUnit 4 usando WebDriver podría ser el siguiente:

 public class FirefoxTest { protected WebDriver driver; @BeforeClass public static void setupClass() { WebDriverManager.firefoxdriver().setup(); } @Before public void setupTest() { driver = new FirefoxDriver(); } @After public void teardown() { if (driver != null) { driver.quit(); } } @Test public void test() { // Your test code here } } 

Tenga en cuenta que Marionette será la única opción para el futuro (para WebDriver 3+ y Firefox 48+), pero actualmente (la versión 0.9.0 en el momento de la escritura) no es muy estable. Eche un vistazo a la hoja de ruta de Marionette para más detalles.

ACTUALIZAR

Selenium WebDriver 2.53.1 se lanzó el 30 de junio de 2016. FirefoxDriver está trabajando nuevamente con Firefox 47.0.1 como navegador.

Intenta usar Firefox 46.0.1. Lo mejor coincide con Selenium 2.53

 https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/ 

Tuve el mismo problema y descubrí que debe cambiar de controlador porque se eliminó el soporte . En lugar de utilizar el controlador de Firefox , debe utilizar el controlador de Marionette para ejecutar sus pruebas. Actualmente estoy trabajando en la configuración y puedo publicar algunos pasos sugeridos si lo desea cuando tengo un ejemplo de trabajo.

Estos son los pasos que seguí para que esto funcione en mi entorno Java en Mac (también funcionó para mí en mis instalaciones de Linux (Fedora, CentOS y Ubuntu)):

  1. Descargue el ejecutable nocturno de la página de lanzamientos
  2. Descomprime el archivo
  3. Crea un directorio para Marionette (es decir, mkdir -p /opt/marionette )
  4. Mueva el archivo ejecutable desempaquetado al directorio que creó
  5. Actualice su $PATH para incluir el ejecutable (también edite su .bash_profile si lo desea)
  6. : bangbang: asegúrate de que chmod +x /opt/marionette/wires-xxx para que sea ejecutable
  7. En su lanzamiento, asegúrese de usar el siguiente código a continuación (es lo que usé en Mac)

Nota rápida

Todavía no funciona como se esperaba, pero al menos ahora se lanza el navegador. Necesito averiguar por qué, en este momento parece que tengo que volver a escribir mis pruebas para que funcione.

Fragmento de Java

 WebDriver browser = new MarionetteDriver(); System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX"); 

Si usa OSX con Homebrew, puede instalar viejas versiones de Firefox a través de brew cask:

 brew tap goldcaddy77/firefox brew cask install firefox-46 # or whatever version you want 

Después de la instalación, solo tendrá que cambiar el nombre de su ejecutable FF en el directorio de aplicaciones a “Firefox”.

Se puede encontrar más información en el git repo homebrew-firefox . Apoyos a smclernon para crear el barril original .

Si estás en una Mac, brew install geckodriver y ¡listo!

En caso de que alguien se pregunte cómo usar Marionette en C #.

 FirefoxProfile profile = new FirefoxProfile(); // Your custom profile var service = FirefoxDriverService.CreateDefaultService("DirectoryContainingTheDriver", "geckodriver.exe"); // Set the binary path if you want to launch the release version of Firefox. service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe"; var option = new FirefoxProfileOptions(profile) { IsMarionette = true }; var driver = new FirefoxDriver( service, option, TimeSpan.FromSeconds(30)); 

Anula FirefoxOptions para proporcionar la función para agregar capacidad adicional y establecer el perfil de Firefox porque selenium v53 aún no proporciona esa función.

 public class FirefoxProfileOptions : FirefoxOptions { private DesiredCapabilities _capabilities; public FirefoxProfileOptions() : base() { _capabilities = DesiredCapabilities.Firefox(); _capabilities.SetCapability("marionette", this.IsMarionette); } public FirefoxProfileOptions(FirefoxProfile profile) : this() { _capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String()); } public override void AddAdditionalCapability(string capabilityName, object capabilityValue) { _capabilities.SetCapability(capabilityName, capabilityValue); } public override ICapabilities ToCapabilities() { return _capabilities; } } 

Nota: La ejecución con perfil no funciona con FF 47, funciona con FF 50 Nightly.

Sin embargo, tratamos de convertir nuestra prueba para usar Marionette, y simplemente no es viable en este momento porque la implementación del controlador no está completa o no funciona. Sugeriría que la gente degradara su Firefox en este momento.

Las nuevas bibliotecas de Selenium ahora están disponibles, de acuerdo con: https://github.com/SeleniumHQ/selenium/issues/2110

La página de descarga http://www.seleniumhq.org/download/ parece que todavía no se ha actualizado, pero al agregar 1 a la versión menor en el enlace, pude descargar la versión de C #: http: // selenium-release. storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip

Funciona para mí con Firefox 47.0.1.

Como nota al margen, pude construir solo la extensión de Firefox webdriver.xpi desde la twig principal en GitHub, ejecutando ./go //javascript/firefox-driver:webdriver:run – que dio un mensaje de error pero construyó la comstackción /javascript/firefox-driver/webdriver.xpi , que podría cambiar el nombre (para evitar un conflicto de nombres) y cargar correctamente con el método FirefoxProfile.AddExtension. Esa fue una solución razonable sin tener que reconstruir toda la biblioteca de Selenium.

Es un problema FF47 https://github.com/SeleniumHQ/selenium/issues/2110

Cambie de categoría a FF 46 o inferior (o pruebe el desarrollador FF48 https://developer.mozilla.org/en-US/Firefox/Releases/48 )

Instrucciones sobre cómo degradar: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/ O si está en Mac, como lo sugirió alguien más en este hilo, use brew.

Firefox 47.0 dejó de funcionar con Webdriver.

La solución más fácil es cambiar a Firefox 47.0.1 y Webdriver 2.53.1. Esta combinación nuevamente funciona. De hecho, restaurar la compatibilidad con Webdriver fue la razón principal detrás de la versión 47.0.1, de acuerdo con https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ .

Puedes intentar usar este código,

 private WebDriver driver; System.setProperty("webdriver.firefox.marionette","Your path to driver/geckodriver.exe"); driver = new FirefoxDriver(); 

Actualicé a Selenium 3.0.0 y la versión de Firefox es 49.0.1

Puede descargar geckodriver.exe desde https://github.com/mozilla/geckodriver/releases

Asegúrese de descargar solo el archivo zip, el archivo geckodriver-v0.11.1-win64.zip o win32 uno según su sistema y extraerlo en una carpeta.

Ponga la ruta para esa carpeta en las citas “Su ruta al conductor”. No olvide poner geckodriver.exe en la ruta.

Eventualmente instalé una versión anterior de Firefox (usada solo para pruebas) para resolver esto, además de mi instalación de Firefox más reciente (segura y actualizada).

Esto requiere que webdriver sepa dónde puede encontrar el binario de Firefox, que se puede establecer a través de la propiedad webdriver.firefox.bin .

Lo que funcionó para mí (mac, maven, /tmp/ff46 como carpeta de instalación) es:

 mvn -Dwebdriver.firefox.bin=/tmp/ff46/Firefox.app/Contents/MacOS/firefox-bin verify 

Para instalar una versión anterior de Firefox en una carpeta dedicada, cree la carpeta, abra el Finder en esa carpeta, descargue el dmg de Firefox y arrástrelo a ese Finder.

Así es el problema en Wireshar k

Simplemente cargue 2.53.1 y todo funcionará.

A partir de septiembre de 2016

Firefox 48.0 y selenium==2.53.6 funcionan bien sin ningún error

Para actualizar Firefox solo en Ubuntu 14.04

 sudo apt-get update sudo apt-get upgrade firefox 

Me parece que la mejor solución es actualizar a Selenium 3.0.0, descargar geckodriver.exe y usar Firefox 47 o superior.

Cambié la inicialización de Firefox a:

  string geckoPathTest = Path.Combine(Environment.CurrentDirectory, "TestFiles\\geckodriver.exe"); string geckoPath = Path.Combine(Environment.CurrentDirectory, "geckodriver.exe"); File.Copy(geckoPathTest, geckoPath); Environment.SetEnvironmentVariable("webdriver.gecko.driver", geckoPath); _firefoxDriver = new FirefoxDriver(); 

Puedo confirmar que el selenium 2.53.6 funciona con firefox 44 para mí en ubuntu 15.