Sélénium 2.53 ne fonctionne pas sur Firefox 47

j'obtiens une erreur en utilisant Firefox avec WebDriver.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • version Firefox: 47.0
  • sélénium: 2.53.0
  • Windows 10 64 bit

est-ce que quelqu'un a une question similaire ou une idée quelle est la solution pour cela? Cela fonctionne très bien avec Chrome, mais avec Firefox aucune URL ne sera chargée.

105
demandé sur Boni García 2016-06-08 07:13:12

15 réponses

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 binaire geckodriver pour gérer les navigateurs Firefox. Complément d'information 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é geckodriver à partir de la version 0.8.0, et anciennement wires ) et exporter son chemin absolu vers la variable webdriver.gecko.driver comme une propriété du 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, i.e. télécharger le binaire Marionette approprié pour votre machine (Linux, Mac, ou Windows) et exporter la valeur de la propriété du système approprié. 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.0.0</version>
</dependency>

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

WebDriverManager.firefoxdriver().setup();

un exemple complet d'un cas de test JUnit 4 utilisant WebDriver pourrait ê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
    }
}

prendre en compte 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. Consultez la carte routière pour plus de détails.

mise à JOUR

Selenium WebDriver 2.53.1 a été publié le 30 juin 2016. FirefoxDriver fonctionne à nouveau avec Firefox 47.0.1 comme navigateur.

91
répondu Boni García 2018-09-11 07:36:07

essayez d'utiliser firefox 46.0.1. Il correspond le mieux avec le sélénium 2.53

https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
17
répondu Mahbub Rahman 2016-06-08 04:37:25

j'ai eu le même problème et j'ai découvert que vous devez changer de conducteur parce que support a été abandonné . Au lieu d'utiliser le Firefox Driver , vous devez utiliser le marionnette Driver pour exécuter vos tests. Je travaille actuellement sur la configuration moi-même et je peux poster quelques étapes suggérées si vous voulez quand j'ai un exemple de travail.

Voici les étapes que j'ai suivies pour obtenir ce travailler sur mon environnement Java sur Mac (a travaillé pour moi dans Mes installations Linux (Fedora, CentOS et Ubuntu) ainsi):

  1. téléchargez l'exécutable nocturne de la releases page
  2. Décompresser l'archive
  3. créer un répertoire pour Marionette (i.e., mkdir -p /opt/marionette )
  4. déplacez le fichier exécutable Non empaqueté dans le répertoire que vous avez créé
  5. mise à jour votre $PATH pour inclure l'exécutable (aussi, éditez votre .bash_profile si vous voulez)
  6. : bangbang: assurez-vous que vous chmod +x /opt/marionette/wires-x.x.x afin qu'il soit exécutable
  7. lors de votre lancement, assurez-vous d'utiliser le code ci-dessous (c'est ce que j'ai utilisé sur Mac)

Note Rapide

ne fonctionne Toujours pas comme prévu, mais au moins obtient le navigateur lancé maintenant. Besoin de comprendre pourquoi - pour l'instant il semble que j'ai besoin de réécrire mes essais pour le faire fonctionner.

Java "Extrait De 1519350920"

WebDriver browser = new MarionetteDriver();
System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX");
9
répondu el n00b 2016-06-08 20:01:51

si vous utilisez OSX avec 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, vous aurez juste besoin de renommer votre exécutable FF dans le répertoire Applications En"Firefox".

plus d'information peut être trouvé à la git repo homebrew-firefox . Accessoires pour smclernon pour la création de la original cask .

6
répondu Dan Caddigan 2016-06-29 14:39:38

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

6
répondu The Whiz of Oz 2016-11-07 09:19:58

dans le cas où quelqu'un se demande comment utiliser Marionette dans 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));

Firefoxoptions Overriding pour fournir la fonction d'ajouter des capacités supplémentaires et de définir le profil de Firefox parce que selenium v53 ne fournit pas cette fonction encore.

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

Note: le lancement avec profil ne fonctionne pas avec FF 47, Il fonctionne avec FF 50 Tous les soirs.

Toutefois, nous avons essayé de convertir notre test Marionette, et ce n'est tout simplement pas viable pour le moment parce que la mise en œuvre du pilote n'est pas terminée ou boguée. Je suggère aux gens de déclasser leur Firefox en ce moment.

3
répondu Steven 2016-06-16 17:25:40

de nouvelles bibliothèques de sélénium sont sorties, selon https://github.com/SeleniumHQ/selenium/issues/2110

la page de téléchargement http://www.seleniumhq.org/download/ ne semble pas encore être mis à 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

Ça marche pour moi avec Firefox 47.0.1.

comme note, j'ai pu construire juste le webdriver .xpi Firefox extension à partir de 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 build/javascript/firefox-driver/webdriver.XPI fichier, que je pourrais Renommer (pour éviter un conflit de nom) et charger avec succès avec le FirefoxProfile.Méthode AddExtension. C'était une solution raisonnable sans avoir à reconstruire toute la bibliothèque du sélénium.

2
répondu Otto G 2016-06-30 15:22:42

Son un FF47 problème https://github.com/SeleniumHQ/selenium/issues/2110

s'il vous Plaît revenir à FF 46 ou au-dessous (ou à essayer de FF48 développeur https://developer.mozilla.org/en-US/Firefox/Releases/48 )

Instructions de déclassement: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin / Ou si vous êtes sous Mac, comme suggéré par quelqu'un d'autre dans ce thread utiliser l'infusion.

2
répondu Supra 2016-07-06 10:48:39

Firefox 47.0 a cessé de travailler avec Webdriver.

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

2
répondu user7610 2016-07-12 08:34:21

vous pouvez essayer d'utiliser ce code,

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

I mis à jour en sélénium 3.0.0 et la version de Firefox est 49.0.1

vous pouvez télécharger geckodriver.exe de https://github.com/mozilla/geckodriver/releases

assurez-vous de télécharger le fichier zip seulement, geckodriver-v0.11.1-win64.fichier zip ou win32 one selon votre système et l'extraire dans un dossier.

mettez le chemin pour que dossier dans les guillemets" votre chemin vers le pilote".N'oublie pas de mettre geckodriver.exe dans le chemin.

2
répondu Suketu Patel 2016-10-17 22:59:09

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

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

ce qui a fonctionné pour moi (mac, maven, /tmp/ff46 comme dossier d'installation) est:

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

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

1
répondu avandeursen 2016-06-26 08:11:48

voici à quoi ressemblait le problème dans Wireshar k

il suffit de charger 2.53.1 et tout fonctionne.

1
répondu John Peters 2017-05-23 12:26:27

en date de septembre 2016

Firefox 48.0 et selenium==2.53.6 amende de travail sans aucune erreur

pour mettre à niveau firefox sur Ubuntu 14.04 seulement

sudo apt-get update
sudo apt-get upgrade firefox
1
répondu Levon 2016-09-05 08:06:12

il me semble que la meilleure solution est de mettre à jour vers Selenium 3.0.0, télécharger geckodriver.exe et utilisez Firefox 47 ou plus.

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();
1
répondu qub1n 2016-11-14 14:41:18

je peux confirmer que selenium 2.53.6 fonctionne avec firefox 44 pour moi sur ubuntu 15.

0
répondu Bernard Parah 2016-10-24 20:46:47