Selenium 2.53 ne fonctionne pas sur Firefox 47


107

J'obtiens une erreur lors de l'utilisation de Firefox avec WebDriver.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • Version de Firefox: 47.0
  • Sélénium: 2,53,0
  • Windows 10 64 bits

Quelqu'un a-t-il un problème similaire ou une idée de la solution à ce problème? Cela fonctionne bien avec Chrome, mais avec Firefox, aucune des URL ne se charge.


1
Oui, moi aussi, j'ai la même erreur. Je désinstalle et réinstalle à nouveau. Si votre navigateur est ouvert, réinitialisez-le et essayez.
Kishan Patel

Salut Kishan, j'ai essayé comme vous l'avez mentionné mais toujours la même erreur ... donc j'ai rétrogradé à 46.0.1
veena k

Ouais. il y avait un problème de stopper de mozilla. ils ont mis à jour la version. Vous pouvez à nouveau revenir au 47. :-)
Kishan Patel

1
Double

1
Ce problème se manifeste sous OSX avec une erreur '"Firefox.bin" ne peut pas être ouvert car l'identité du développeur ne peut pas être confirmée:'. Le déclassement à 46 l'a résolu.
hoosteeno le

Réponses:


93

Malheureusement, Selenium WebDriver 2.53.0 n'est pas compatible avec Firefox 47.0. Le composant WebDriver qui gère les navigateurs Firefox ( FirefoxDriver) sera abandonné. À partir de la version 3.0, Selenium WebDriver aura besoin du geckodriverbinaire pour gérer les navigateurs Firefox. Plus d'infos ici et ici .

Par conséquent, pour utiliser Firefox 47.0 comme navigateur avec Selenium WebDriver 2.53.0, vous devez télécharger le pilote Firefox (qui est un fichier binaire appelé à geckodriverpartir de la version 0.8.0, et anciennement wires) et exporter son chemin absolu vers la variable webdriver.gecko.drivercomme une propriété système dans votre code Java:

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

Heureusement, la bibliothèque WebDriverManager peut faire ce travail pour vous, c'est-à-dire télécharger le binaire Marionette approprié pour votre machine (Linux, Mac ou Windows) et exporter la valeur de la propriété système appropriée. Pour utiliser cette bibliothèque, vous devez inclure cette dépendance dans votre projet:

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

... puis exécutez cette ligne dans votre programme avant d'utiliser WebDriver:

WebDriverManager.firefoxdriver().setup();

Un exemple d'exécution complet d'un cas de test JUnit 4 utilisant WebDriver peut être le suivant:

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
    }
}

Tenez compte du fait que Marionette sera la seule option pour l'avenir (pour WebDriver 3+ et Firefox 48+), mais actuellement (version 0.9.0 au moment de l'écriture) n'est pas très stable. Jetez un oeil à la feuille de route Marionette pour plus de détails.

METTRE À JOUR

Selenium WebDriver 2.53.1 est sorti le 30 juin 2016. FirefoxDriverfonctionne à nouveau avec Firefox 47.0.1 comme navigateur.


9
Ceci est une erreur. MarionetteDriver n'est en fait PAS pris en charge dans 47, malgré le fait que FirefoxDriver est cassé. Apparemment, 47.0.1 sera publié (parfois) dans lequel FirefoxDriver fonctionnera à nouveau. Le travail MarionetteDriver n'a pas réussi à atteindre 47 comme prévu. Voir github.com/mozilla/geckodriver/issues/89 et bugzilla.mozilla.org/show_bug.cgi?id=1279950 - Remarque: je ne dis pas que MarionettDriver ne fonctionnera pas du tout, juste qu'il est cassé pour un TON des cas d'utilisation avec 47. La rétrogradation est la seule option à ce jour.
dmansfield

7
J'ai mis à jour vers 47.0.1 et Selenium ne se connecte toujours pas à Firefox. Il ne plante plus Firefox, mais je reçois toujours un échec de connexion à 127.0.0.1:7055. Lorsque j'exécute TcpView, il n'y a pas d'écouteur du port 7055 après le démarrage de Firefox.
BardMorgan

2
Je vois le même comportement que BardMorgan, en utilisant Mac, Mono et Selenium .NET 2.53.0. Firefox 47.0.1 démarre, mais j'obtiens l'erreur de délai d'expiration OpenQA.Selenium.WebDriverException: Impossible de démarrer le socket dans les 45000 millisecondes. Tentative de connexion aux adresses suivantes: 127.0.0.1:7055 - netstat n'affiche aucun écouteur sur ce port.
Otto G

1
Et j'ai maintenant également testé sous Windows 10 et .NET natif, et le problème est le même. Netstat montre que Selenium tente de se connecter, mais aucun service n'écoute:C:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
Otto G

1
Pour mémoire, lors de la visite de about: addons dans Firefox 47.0.1 lancés par Selenium 2.53.0, l'onglet Extensions affichera «Firefox WebDriver est incompatible avec Firefox 47.0.1.» Cela est dû au fait que la version max est 47.0 dans github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… - la version principale est corrigée, donc une version du dernier code Selenium de GitHub devrait résoudre le problème.
Otto G

18

Essayez d'utiliser Firefox 46.0.1. Il correspond le mieux avec Selenium 2.53

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

Merci Rahman .. cela fonctionne maintenant ... mais que faire si l'exigence est de travailler avec la dernière version.
veena k

Si la solution fonctionne, pouvez-vous accepter la réponse? :-)
Mahbub Rahman

8
ce n'est pas une solution, est rétrograder à une version précédente.
TiGreX

1
Je l'ai fait aussi (mais je suis allé à la v45) - si vous suivez ce chemin, assurez-vous de renommer <chemin> \ Mozilla Firefox \ updater.exe en updater.exe.disable pour empêcher votre version rétrogradée d'être mise à niveau vers la version actuelle automatiquement. Il peut y avoir d'autres moyens d'y parvenir également - mais la désactivation des mises à jour dans les paramètres d'options n'a pas fonctionné pour moi.
Tiré

10

J'ai eu le même problème et j'ai découvert que vous devez changer de pilote car le support a été abandonné . Au lieu d'utiliser le pilote Firefox , vous devez utiliser le pilote Marionette pour exécuter vos tests. Je travaille actuellement sur la configuration moi-même et je peux publier des suggestions d'étapes si vous le souhaitez lorsque j'ai un exemple fonctionnel.

Voici les étapes que j'ai suivies pour que cela fonctionne sur mon environnement Java sur Mac (a également fonctionné pour moi dans mes installations Linux (Fedora, CentOS et Ubuntu)):

  1. Téléchargez l'exécutable de nuit à partir de la page des versions
  2. Décompressez l'archive
  3. Créer un répertoire pour Marionette (c.-à-d. mkdir -p /opt/marionette)
  4. Déplacez le fichier exécutable décompressé dans le répertoire que vous avez créé
  5. Mettez $PATHà jour votre pour inclure l'exécutable (également, modifiez-le .bash_profilesi vous le souhaitez)
  6. : bangbang: Assurez-vous chmod +x /opt/marionette/wires-x.x.xque c'est exécutable
  7. Lors de votre lancement, assurez-vous d'utiliser le code suivant ci-dessous (c'est ce que j'ai utilisé sur Mac)

Note rapide

Ne fonctionne toujours pas comme prévu, mais lance au moins le navigateur maintenant. Besoin de comprendre pourquoi - pour le moment, il semble que je doive réécrire mes tests pour que cela fonctionne.

Extrait de code Java

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

6

Si vous êtes sur OSX en utilisant Homebrew, vous pouvez installer les anciennes versions de Firefox via brew cask:

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

Après l'installation, il vous suffira de renommer votre exécutable FF dans le répertoire Applications en "Firefox".

Plus d'informations peuvent être trouvées sur le git repo homebrew-firefox . Accessoires à smclernon pour créer le fût original .


6

Si vous êtes sur un Mac, faites brew install geckodriveret c'est parti!


3

Au cas où quelqu'un se demanderait comment utiliser 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));

Remplacer FirefoxOptions pour fournir la fonction permettant d'ajouter des fonctionnalités supplémentaires et de définir le profil Firefox car le sélénium v53 ne fournit pas encore cette fonction.

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

Remarque: le lancement avec profil ne fonctionne pas avec FF 47, il fonctionne avec FF 50 Nightly.

Cependant, nous avons essayé de convertir notre test pour utiliser Marionette, et ce n'est tout simplement pas viable pour le moment car l'implémentation du pilote n'est pas terminée ou boguée. Je suggérerais aux gens de déclasser leur Firefox en ce moment.


2

De nouvelles bibliothèques Selenium sont maintenant disponibles, selon: https://github.com/SeleniumHQ/selenium/issues/2110

La page de téléchargement http://www.seleniumhq.org/download/ ne semble pas encore être mise à jour, mais en ajoutant 1 à la version mineure dans le lien, j'ai pu télécharger la version C #: http: // selenium-release. storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip

Cela fonctionne pour moi avec Firefox 47.0.1.

En remarque, j'ai pu créer uniquement l' extension Firefox webdriver.xpi à partir de la branche principale de GitHub, en exécutant ./go //javascript/firefox-driver:webdriver:run- ce qui a donné un message d'erreur mais a créé le fichier build / javascript / firefox-driver / webdriver.xpi , que j'ai pourrait renommer (pour éviter un conflit de nom) et charger avec succès avec la méthode FirefoxProfile.AddExtension. C'était une solution de contournement raisonnable sans avoir à reconstruire toute la bibliothèque Selenium.


Je peux confirmer que la mise à niveau du sélénium vers 2.53.1 a résolu le problème pour moi.
Disper le

C'est maintenant la meilleure réponse.
Développeur holistique

2

C'est un problème FF47 https://github.com/SeleniumHQ/selenium/issues/2110

Veuillez rétrograder vers FF 46 ou inférieur (ou essayez le développeur FF48 https://developer.mozilla.org/en-US/Firefox/Releases/48 )

Instructions pour rétrograder: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/ Ou si vous êtes sur Mac, comme suggéré par quelqu'un d'autre dans ce fil, utilisez brew.


Selon un commentaire il y a 19 heures: « Firefox 47.0.1 a été publié avec un correctif. Nous devons maintenant publier des bibliothèques clientes pour récupérer une modification de version dans le xpi utilisé par FirefoxDriver . » Cela semble expliquer pourquoi il y a encore des problèmes avec 2.53.0 et 47.0.1.
Otto G

2

Firefox 47.0 a cessé de fonctionner avec Webdriver.

La solution la plus simple consiste à passer à Firefox 47.0.1 et Webdriver 2.53.1. Cette combinaison fonctionne à nouveau. En fait, la restauration de la compatibilité de Webdriver était la principale raison derrière la version 47.0.1, selon https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ .


Maintenant, Firefox 47.0.1 fonctionne également très bien avec Webdriver 2.53.0. J'ai testé cette combinaison.
veena k

2

Vous pouvez essayer d'utiliser ce code,

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

J'ai mis à niveau vers le sélénium 3.0.0 et la version Firefox est 49.0.1

Vous pouvez télécharger geckodriver.exe depuis https://github.com/mozilla/geckodriver/releases

Assurez-vous de télécharger uniquement le fichier zip, le fichier geckodriver-v0.11.1-win64.zip ou win32 selon votre système et extrayez-le dans un dossier.

Mettez le chemin de ce dossier dans les guillemets "Votre chemin vers le pilote". N'oubliez pas de mettre geckodriver.exe dans le chemin.


1

J'ai finalement installé une ancienne version supplémentaire de Firefox (utilisée à des fins de test uniquement) pour résoudre ce problème, en plus de ma dernière installation régulière (sécurisée, à jour) de Firefox.

Cela nécessite que le pilote Web sache où il peut trouver le binaire Firefox, qui peut être défini via la webdriver.firefox.binpropriété.

Ce qui a fonctionné pour moi (mac, maven, en /tmp/ff46tant que dossier d'installation) est:

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

Pour installer une ancienne version de Firefox dans un dossier dédié, créez le dossier, ouvrez le Finder dans ce dossier, téléchargez le dmg Firefox et faites-le glisser vers ce Finder.



1

À partir de septembre 2016

Firefox 48.0et selenium==2.53.6fonctionne bien sans aucune erreur

Pour mettre à jour Firefox Ubuntu 14.04 uniquement

sudo apt-get update
sudo apt-get upgrade firefox

1

Il me semble que la meilleure solution est de mettre à jour vers Selenium 3.0.0, de télécharger geckodriver.exe et d'utiliser Firefox 47 ou supérieur.

J'ai changé l'initialisation de Firefox en:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.