web-dev-qa-db-fra.com

Selenium 2.53 ne fonctionne pas sur Firefox 47

Je reçois 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 at-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 n'est chargée.

106
veena k

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 supprimé. À partir de la version 3.0, Selenium WebDriver aura besoin du binaire geckodriver 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 (fichier binaire nommé geckodriver à partir de la version 0.8.0). et anciennement wires) et exportez son chemin absolu vers la variable webdriver.gecko.driver en tant que propriété système dans votre code Java:

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

Heureusement, la bibliothèque WebDriverManager peut effectuer ce travail à votre place, c’est-à-dire télécharger le binaire Marionette correspondant à 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>3.6.2</version>
</dependency>

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

WebDriverManager.firefoxdriver().setup();

Voici un exemple complet de scénario de test JUnit 4 utilisant WebDriver:

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 coup d’œil à la feuille de route de Marionette pour plus de détails.

UPDATE

Selenium WebDriver 2.53.1 a été publié le 30 juin 2016. FirefoxDriver fonctionne de nouveau avec Firefox 47.0.1 en tant que navigateur.

92
Boni García

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/
18
Mahbub Rahman

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

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

  1. Téléchargez l'exécutable nocturne à partir de la page des versions
  2. Déballez l'archive
  3. Créez 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 à jour votre $PATH pour inclure l'exécutable (éditez également votre .bash_profile si vous le souhaitez)
  6. : bangbang: assurez-vous que chmod +x /opt/marionette/wires-x.x.x afin qu'il soit exécutable
  7. Dans 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 au moins, le navigateur est lancé maintenant. Il faut comprendre pourquoi - pour le moment, il me semble que j'ai besoin de réécrire mes tests pour que cela fonctionne.

extrait de Java

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

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

6
The Whiz of Oz

Si vous utilisez OSX sous 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 l’exécutable FF du répertoire Applications en "Firefox".

Plus d'informations peuvent être trouvées sur le dépôt Git homebrew-firefox . Les accessoires à smclernon pour créer le original fût .

6
Dan Caddigan

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

Remplacement de FirefoxOptions pour fournir la fonction permettant d'ajouter des fonctionnalités supplémentaires et de définir le profil Firefox, car Selenium v5 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, mais 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 la mise en œuvre du pilote n'est pas terminée ou est erronée. Je suggérerais aux gens de déclasser leur Firefox en ce moment.

3
Steven

Firefox 47.0 a cessé de fonctionner avec Webdriver.

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

2
user7610

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

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, je pourrais 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 passant, j’ai pu construire l’extension Firefox webdriver.xpi depuis la branche principale de GitHub, en exécutant ./go //javascript/firefox-driver:webdriver:run - qui a donné un message d'erreur mais a construit le fichier build/javascript/firefox-driver/webdriver.xpi , que je pouvais renommer (pour éviter un conflit de noms) et chargez avec succès avec la méthode FirefoxProfile.AddExtension. C'était une solution de contournement raisonnable sans avoir à reconstruire l'intégralité de la bibliothèque Selenium.

2
Otto G

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

Veuillez rétrograder à une valeur inférieure ou égale à 46 FF (ou essayer un développeur FF48 https://developer.mozilla.org/en-US/Firefox/Releases/48 )

Instructions sur la manière de déclasser: 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.

2
Supra

Vous pouvez essayer d'utiliser ce code,

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

Je suis passé à Selenium 3.0.0 et la version de 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 le fichier win32 correspondant à votre système et extrayez-le dans un dossier.

Placez le chemin de ce dossier dans les guillemets "Votre chemin d'accès au pilote". N'oubliez pas de mettre geckodriver.exe dans le chemin.

2
suketup

À partir de septembre 2016

Firefox 48.0 et Selenium==2.53.6 fonctionnent correctement sans erreur

Pour mettre à niveau firefox sur Ubuntu 14.04niquement

Sudo apt-get update
Sudo apt-get upgrade firefox
1
Levon

Voici à quoi ressemble le problème ressemblant à Wireshar k

Il suffit de charger 2.53.1 et tout fonctionnera.

1
John Peters

Il me semble que la meilleure solution consiste à mettre à jour Selenium 3.0.0, à télécharger geckodriver.exe et à utiliser Firefox 47 ou une version ultérieure.

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

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

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 mon installation Firefox la plus récente (sécurisée, à jour).

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

Ce qui a fonctionné pour moi (mac, maven, /tmp/ff46 en tant 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 de Firefox et faites-le glisser dans ce Finder.

1
avandeursen

Je peux confirmer que Selenium 2.53.6 fonctionne avec firefox 44 pour moi sous Ubuntu 15.