Selenium 2.53 no funciona en Firefox 47

107

Recibo un error al utilizar 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 de 64 bits

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

veena k
fuente
1
Sí, yo también obtengo el mismo error. Lo estoy desinstalando y volviendo a instalar. Si su navegador está abierto, reinícielo e intente.
Kishan Patel
Hola Kishan, lo intenté como mencionaste pero sigue siendo el mismo error ... así que bajé la calificación a 46.0.1
veena k
Si. Hubo un problema de show stopper de mozilla. actualizaron la versión. Puede retroceder nuevamente a 47. :-)
Kishan Patel
1
Este problema se manifiesta en OSX con un error, '"Firefox.bin" no se puede abrir porque no se puede confirmar la identidad del desarrollador:'. La degradación a 46 lo resolvió.
hoosteeno

Respuestas:

93

Desafortunadamente, Selenium WebDriver 2.53.0 no es compatible con Firefox 47.0. El componente WebDriver que maneja los navegadores Firefox ( FirefoxDriver) dejará de estar disponible. A partir de la versión 3.0, Selenium WebDriver necesitará el geckodriverbinario para administrar los navegadores Firefox. Más información aquí y aquí .

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

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

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

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>4.1.0</version>
</dependency>

... y luego ejecute esta línea en su programa 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 (versión 0.9.0 en el momento de escribir este artículo) no es muy estable. Echar un vistazo a la hoja de ruta de marionetas para más detalles.

ACTUALIZAR

Selenium WebDriver 2.53.1 se lanzó el 30 de junio de 2016. FirefoxDriverestá funcionando nuevamente con Firefox 47.0.1 como navegador.

Boni García
fuente
9
Esto es incorrecto. En realidad, MarionetteDriver NO es compatible con 47, a pesar de que FirefoxDriver no funciona. Aparentemente se lanzará 47.0.1 (en algún momento) en el que FirefoxDriver volverá a funcionar. Working MarionetteDriver no llegó a 47 como se esperaba. Ver github.com/mozilla/geckodriver/issues/89 y bugzilla.mozilla.org/show_bug.cgi?id=1279950 - Nota: No estoy diciendo MarionettDriver no funcionará en absoluto, sólo que se rompe por una tonelada de casos de uso con 47. Downgrade es la única opción a día de hoy.
dmansfield
7
Actualicé a 47.0.1 y Selenium todavía no se conecta a Firefox. Ya no bloquea Firefox, pero sigo sin poder conectarme a 127.0.0.1:7055. Cuando ejecuto TcpView, no hay escucha del puerto 7055 después de que se inicia Firefox.
BardMorgan
2
Veo el mismo comportamiento que BardMorgan, usando Mac, Mono y Selenium .NET 2.53.0. Firefox 47.0.1 se inicia, pero aparece el error de tiempo de espera OpenQA.Selenium.WebDriverException: no se pudo iniciar el socket en 45000 milisegundos. Intentó conectarse a las siguientes direcciones: 127.0.0.1:7055 - netstat no muestra ningún oyente en ese puerto.
Otto G
1
Y ahora también he probado en Windows 10 y .NET nativo, y el problema es el mismo. Netstat muestra que Selenium intenta conectarse, pero ningún servicio está escuchando:C:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
Otto G
1
Para el registro, cuando visite about: addons en Firefox 47.0.1 lanzados por Selenium 2.53.0, la pestaña Extensiones mostrará "Firefox WebDriver es incompatible con Firefox 47.0.1". Esto se debe a que la versión máxima es 47.0 en github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… - la versión principal está corregida, por lo que una compilación del último código de Selenium de GitHub debería solucionar el problema.
Otto G
18

Intente usar firefox 46.0.1. Combina mejor con Selenium 2.53

https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
Mahbub Rahman
fuente
Gracias Rahman ... está funcionando ahora ... pero ¿y si el requisito es trabajar con la última versión?
veena k
Si la solución funciona, ¿puede aceptar la respuesta? :-)
Mahbub Rahman
8
eso no es una solución, es degradado a una versión anterior.
TiGreX
1
También hice esto (pero fui a la v45): si sigue esta ruta, asegúrese de cambiar el nombre de <ruta> \ Mozilla Firefox \ Updater.exe a Updater.exe.disable para evitar que su versión degradada se actualice a la versión actual automáticamente. También puede haber otras formas de lograr esto, pero deshabilitar las actualizaciones en la configuración de opciones no funcionó para mí.
Dibujó el
10

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

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

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

Nota rápida

Todavía no funciona como se esperaba, pero al menos hace que el navegador se inicie ahora. Necesito averiguar por qué; ahora mismo parece que necesito reescribir mis pruebas para que funcionen.

Fragmento de Java

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

Si está en OSX usando Homebrew, puede instalar versiones antiguas 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 necesitará cambiar el nombre de su ejecutable FF en el directorio de Aplicaciones a "Firefox".

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

Dan Caddigan
fuente
6

Si estás en una Mac, ¡hazlo brew install geckodrivery listo!

El genio de Oz
fuente
3

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));

Anulación de FirefoxOptions para proporcionar la función para agregar capacidad adicional y configurar el perfil de Firefox porque el 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: El lanzamiento con perfil no funciona con FF 47, funciona con FF 50 Nightly.

Sin embargo, intentamos convertir nuestra prueba para usar Marionette, y simplemente no es viable en este momento porque la implementación del controlador no está completa o tiene errores. Sugeriría que las personas degraden su Firefox en este momento.

Steven
fuente
2

Las nuevas bibliotecas de selenio ya están disponibles, según: https://github.com/SeleniumHQ/selenium/issues/2110

La página de descarga http://www.seleniumhq.org/download/ parece no estar actualizada todavía, pero agregando 1 a la versión menor en el enlace, podría descargar la versión C #: http: // selenium-release. storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip

Me funciona con Firefox 47.0.1.

Como nota al margen, pude construir solo la extensión webdriver.xpi de Firefox desde la rama maestra en GitHub, ejecutando ./go //javascript/firefox-driver:webdriver:run, lo que dio un mensaje de error, pero construyó el archivo build / 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.

Otto G
fuente
Puedo confirmar que actualizar selenium a 2.53.1 resolvió el problema por mí.
Disper
Esta es ahora la mejor respuesta.
Desarrollador holístico
2

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

Cambie a FF 46 o inferior (o pruebe el desarrollador de 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 es en Mac, como sugirió otra persona en este hilo, use brew.

Supra
fuente
Según un comentario de hace 19 horas: “ Firefox 47.0.1 ha sido lanzado con una solución. Ahora necesitamos liberar bibliotecas cliente para detectar un aumento de versión en el xpi que utiliza FirefoxDriver ". Eso parece explicar por qué todavía hay problemas con 2.53.0 y 47.0.1.
Otto G
2

Firefox 47.0 dejó de funcionar con Webdriver.

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

user7610
fuente
Ahora Firefox 47.0.1 también funciona bien con Webdriver 2.53.0. He probado esta combinación.
veena k
2

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 de esa carpeta en las comillas "Su ruta al controlador". No olvide poner geckodriver.exe en la ruta.

suketup
fuente
1

Finalmente instalé una versión antigua adicional de Firefox (utilizada solo para pruebas) para resolver esto, además de mi última instalación de Firefox regular (segura, actualizada).

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

Lo que funcionó para mí (mac, maven, /tmp/ff46como 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.

avandeursen
fuente
1

A septiembre de 2016

Firefox 48.0y selenium==2.53.6funciona bien sin errores

Para actualizar Firefox Ubuntu 14.04 solo

sudo apt-get update
sudo apt-get upgrade firefox
Levon
fuente
1

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();
Tomas Kubes
fuente
0

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

Bernard 'Beta Berlin' Parah
fuente