Selen 2.53 funktioniert unter Firefox 47 nicht

107

Bei der Verwendung von Firefox mit WebDriver wird eine Fehlermeldung angezeigt.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • Firefox-Version: 47.0
  • Selen: 2,53,0
  • Windows 10 64 Bit

Bekommt jemand ein ähnliches Problem oder eine Idee, was die Lösung dafür ist? Es funktioniert gut mit Chrome, aber mit Firefox wird keine der URLs geladen.

veena k
quelle
1
Ja, ich bekomme auch den gleichen Fehler. Ich deinstalliere und installiere es erneut. Wenn Ihr Browser geöffnet ist, setzen Sie ihn zurück und versuchen Sie es.
Kishan Patel
Hallo Kishan, ich habe versucht, wie du erwähnt hast, aber immer noch den gleichen Fehler ... also habe ich auf 46.0.1
k
Ja. Es gab einige Show Stopper Probleme von Mozilla. Sie haben die Version aktualisiert. Sie können wieder auf 47 zurücksetzen. :-)
Kishan Patel
1
Dieses Problem tritt unter OSX mit dem Fehler "Firefox.bin" kann nicht geöffnet werden, da die Identität des Entwicklers nicht bestätigt werden kann: "auf. Ein Downgrade auf 46 hat das Problem behoben.
Hoosteeno

Antworten:

93

Leider ist Selenium WebDriver 2.53.0 nicht mit Firefox 47.0 kompatibel. Die WebDriver-Komponente, die Firefox-Browser ( FirefoxDriver) verarbeitet, wird eingestellt. Ab Version 3.0 benötigt Selenium WebDriver die geckodriverBinärdatei, um Firefox-Browser zu verwalten. Mehr Infos hier und hier .

Um Firefox 47.0 als Browser mit Selenium WebDriver 2.53.0 zu verwenden, müssen Sie daher den Firefox-Treiber (eine Binärdatei, die geckodriverab Version 0.8.0 aufgerufen wurde) herunterladen wiresund seinen absoluten Pfad in die Variable webdriver.gecko.driverals exportieren eine Systemeigenschaft in Ihrem Java-Code:

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

Glücklicherweise kann die Bibliothek WebDriverManager diese Arbeit für Sie erledigen, dh die richtige Marionetten-Binärdatei für Ihren Computer (Linux, Mac oder Windows) herunterladen und den Wert der richtigen Systemeigenschaft exportieren. Um diese Bibliothek verwenden zu können, müssen Sie diese Abhängigkeit in Ihr Projekt aufnehmen:

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

... und führen Sie diese Zeile in Ihrem Programm aus, bevor Sie WebDriver verwenden:

WebDriverManager.firefoxdriver().setup();

Ein vollständiges Beispiel für einen JUnit 4-Testfall mit WebDriver könnte folgendermaßen aussehen:

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

Berücksichtigen Sie, dass Marionette die einzige Option für die Zukunft sein wird (für WebDriver 3+ und Firefox 48+), aber derzeit (Version 0.9.0 zum Zeitpunkt des Schreibens) nicht sehr stabil ist. Schauen Sie sich das anWeitere Informationen finden Marionetten-Roadmap .

AKTUALISIEREN

Selenium WebDriver 2.53.1 wurde am 30. Juni 2016 veröffentlicht. Es FirefoxDriverfunktioniert wieder mit Firefox 47.0.1 als Browser.

Boni García
quelle
9
Das ist falsch. MarionetteDriver wird in 47 tatsächlich NICHT unterstützt, obwohl FirefoxDriver defekt ist. Anscheinend wird 47.0.1 (irgendwann) veröffentlicht, in dem FirefoxDriver wieder funktioniert. Working MarionetteDriver hat es nicht wie erwartet auf 47 geschafft. Siehe github.com/mozilla/geckodriver/issues/89 und bugzilla.mozilla.org/show_bug.cgi?id=1279950 - Hinweis: Ich sage nicht, dass MarionettDriver überhaupt nicht funktioniert, nur dass es für eine TON kaputt ist von Anwendungsfällen mit 47. Downgrade ist ab heute die einzige Option.
Dmansfield
7
Ich habe auf 47.0.1 aktualisiert und Selen stellt immer noch keine Verbindung zu Firefox her. Firefox stürzt nicht mehr ab, aber ich kann immer noch keine Verbindung zu 127.0.0.1:7055 herstellen. Wenn ich TcpView ausführe, gibt es nach dem Start von Firefox keinen Listener für Port 7055.
BardMorgan
2
Ich sehe das gleiche Verhalten wie BardMorgan unter Verwendung von Mac, Mono und Selenium .NET 2.53.0. Firefox 47.0.1 wird gestartet, aber ich erhalte den Timeout-Fehler OpenQA.Selenium.WebDriverException: Fehler beim Starten des Sockets innerhalb von 45000 Millisekunden. Es wurde versucht, eine Verbindung zu den folgenden Adressen herzustellen: 127.0.0.1:7055 - netstat zeigt keinen Listener für diesen Port an.
Otto G
1
Und ich habe jetzt auch unter Windows 10 und nativem .NET getestet, und das Problem ist das gleiche. Netstat zeigt, dass Selen versucht, eine Verbindung herzustellen, aber kein Dienst hört zu:C:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
Otto G
1
Wenn Sie about: addons in Firefox 47.0.1 besuchen, das von Selenium 2.53.0 gestartet wurde, wird auf der Registerkarte "Erweiterungen" angezeigt, dass "Firefox WebDriver nicht mit Firefox 47.0.1 kompatibel ist". Dies liegt daran, dass die maximale Version 47.0 in github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… ist. Die Hauptversion ist behoben, daher sollte ein Build des neuesten Selenium-Codes von GitHub das Problem beheben.
Otto G
18

Versuchen Sie es mit Firefox 46.0.1. Es passt am besten zu Selen 2.53

https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
Mahbub Rahman
quelle
Danke Rahman ... es funktioniert jetzt ... aber was ist, wenn die Anforderung mit der neuesten Version funktioniert?
veena k
Wenn die Lösung funktioniert, können Sie bitte die Antwort akzeptieren? :-)
Mahbub Rahman
8
Das ist keine Lösung, ist ein Downgrade auf eine frühere Version.
TiGreX
1
Ich habe dies auch getan (bin aber zu Version 45 gegangen). Wenn Sie diesen Pfad einschlagen, stellen Sie sicher, dass Sie <Pfad> \ Mozilla Firefox \ updater.exe in updater.exe.disable umbenennen, um zu verhindern, dass Ihre herabgestufte Version wieder auf die aktuelle Version aktualisiert wird automatisch. Möglicherweise gibt es auch andere Möglichkeiten, dies zu erreichen - aber das Deaktivieren von Updates in den Optionseinstellungen hat bei mir nicht funktioniert.
Drew
10

Ich hatte das gleiche Problem und fand heraus, dass Sie die Treiber wechseln müssen, da die Unterstützung eingestellt wurde . Anstatt den Firefox-Treiber zu verwenden , müssen Sie die Marionette verwenden Treiber verwenden, um Ihre Tests auszuführen. Ich arbeite gerade selbst am Setup und kann einige vorgeschlagene Schritte veröffentlichen, wenn Sie möchten, wenn ich ein funktionierendes Beispiel habe.

Hier sind die Schritte, die ich ausgeführt habe, um dies in meiner Java-Umgebung auf dem Mac zum Laufen zu bringen (funktionierte auch in meinen Linux-Installationen (Fedora, CentOS und Ubuntu)):

  1. Laden Sie die abendliche ausführbare Datei von der Release-Seite herunter
  2. Packen Sie das Archiv aus
  3. Erstellen Sie ein Verzeichnis für Marionette (dh mkdir -p /opt/marionette )
  4. Verschieben Sie die entpackte ausführbare Datei in das von Ihnen erstellte Verzeichnis
  5. Aktualisieren Sie Ihre $PATH, um die ausführbare Datei einzuschließen (bearbeiten Sie auch Ihre.bash_profile wenn Sie möchten)
  6. : bangbang: Stellen Sie sicher, dass Sie chmod +x /opt/marionette/wires-x.x.x , dass es ausführbar ist
  7. Stellen Sie beim Start sicher, dass Sie den folgenden Code verwenden (den ich auf dem Mac verwendet habe).

Schnelle Notiz

Funktioniert immer noch nicht wie erwartet, aber zumindest wird der Browser jetzt gestartet. Ich muss herausfinden, warum - im Moment muss ich meine Tests neu schreiben, damit sie funktionieren.

Java-Snippet

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

Wenn Sie mit Homebrew unter OSX arbeiten, können Sie alte Firefox-Versionen über das Brühfass installieren:

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

Nach der Installation müssen Sie nur Ihre ausführbare FF-Datei im Anwendungsverzeichnis in "Firefox" umbenennen.

Weitere Infos finden Sie im Git Repo Homebrew-Firefox . Requisiten an smclernon für die Erstellung des Originalfasses .

Dan Caddigan
quelle
6

Wenn Sie auf einem Mac sind brew install geckodriver, können Sie loslegen!

Der Zauber von Oz
quelle
3

Für den Fall, dass sich jemand fragt, wie Marionette in C # verwendet werden soll.

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

Überschreiben von FirefoxOptions, um die Funktion zum Hinzufügen zusätzlicher Funktionen und zum Festlegen des Firefox-Profils bereitzustellen, da Selenium v53 diese Funktion noch nicht bietet.

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

Hinweis: Das Starten mit Profil funktioniert nicht mit FF 47, sondern mit FF 50 Nightly.

Wir haben jedoch versucht, unseren Test auf Marionette umzustellen, und dies ist derzeit einfach nicht möglich, da die Implementierung des Treibers entweder nicht abgeschlossen oder fehlerhaft ist. Ich würde vorschlagen, dass Leute ihren Firefox in diesem Moment herabstufen.

Steven
quelle
2

Neue Selenium-Bibliotheken sind jetzt erhältlich, laut: https://github.com/SeleniumHQ/selenium/issues/2110

Die Download-Seite http://www.seleniumhq.org/download/ scheint noch nicht aktualisiert zu sein, aber durch Hinzufügen von 1 zur Nebenversion im Link konnte ich die C # -Version herunterladen: http: // selenium-release. storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip

Es funktioniert bei mir mit Firefox 47.0.1.

Als Randnotiz konnte ich nur die Firefox-Erweiterung webdriver.xpi aus dem Hauptzweig in GitHub erstellen , indem ich sie ausführte./go //javascript/firefox-driver:webdriver:run - was eine Fehlermeldung ergab, aber die Datei build / javascript / Firefox-Treiber / webdriver.xpi erstellte, die ich könnte umbenennen (um einen Namenskonflikt zu vermeiden) und erfolgreich mit der FirefoxProfile.AddExtension-Methode laden. Dies war eine vernünftige Problemumgehung, ohne dass die gesamte Selenium-Bibliothek neu erstellt werden musste.

Otto G.
quelle
Ich kann bestätigen, dass das Upgrade von Selen auf 2.53.1 das Problem für mich gelöst hat.
Disper
Dies ist jetzt die beste Antwort.
Ganzheitlicher Entwickler
2

Es ist eine FF47-Ausgabe https://github.com/SeleniumHQ/selenium/issues/2110

Bitte downgraden Sie auf FF 46 oder niedriger (oder probieren Sie den FF48-Entwickler https://developer.mozilla.org/en-US/Firefox/Releases/48 aus )

Anweisungen zum Downgrade: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/ Oder wenn Sie es sind Verwenden Sie auf dem Mac, wie von einer anderen Person in diesem Thread vorgeschlagen, Brew.

Oben
quelle
In einem Kommentar vor 19 Stunden heißt es: „ Firefox 47.0.1 wurde mit einem Fix veröffentlicht. Wir müssen jetzt Client-Bibliotheken freigeben, um einen Versionsfehler im xpi zu beheben, der von FirefoxDriver verwendet wird . “ Das scheint zu erklären, warum es immer noch Probleme mit 2.53.0 und 47.0.1 gibt.
Otto G
2

Firefox 47.0 funktioniert nicht mehr mit Webdriver.

Am einfachsten ist es, auf Firefox 47.0.1 und Webdriver 2.53.1 zu wechseln. Diese Kombination funktioniert wieder. Laut https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ war die Wiederherstellung der Webdriver-Kompatibilität der Hauptgrund für die Version 47.0.1 .

user7610
quelle
Jetzt funktioniert Firefox 47.0.1 auch mit Webdriver 2.53.0 einwandfrei. Ich habe diese Kombination getestet.
veena k
2

Sie können versuchen, diesen Code zu verwenden.

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

Ich habe ein Upgrade auf Selen 3.0.0 durchgeführt und die Firefox-Version ist 49.0.1

Sie können geckodriver.exe von https://github.com/mozilla/geckodriver/releases herunterladen

Stellen Sie sicher, dass Sie nur die Zip-Datei, die geckodriver-v0.11.1-win64.zip-Datei oder die win32-Datei gemäß Ihrem System herunterladen und in einen Ordner extrahieren.

Fügen Sie den Pfad für diesen Ordner in die Anführungszeichen "Ihr Pfad zum Treiber" ein. Vergessen Sie nicht, geckodriver.exe in den Pfad einzufügen.

suketup
quelle
1

Ich habe schließlich eine zusätzliche alte Version von Firefox installiert (die nur zum Testen verwendet wird), um dieses Problem zu beheben, neben meiner regulären (sicheren, aktuellen) neuesten Firefox-Installation.

Dazu muss der Web-Treiber wissen, wo sich die Firefox-Binärdatei befindet, die über die webdriver.firefox.binEigenschaft festgelegt werden kann.

Was für mich funktioniert hat (Mac, Maven, /tmp/ff46als Installationsordner) ist:

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

Um eine alte Version von Firefox in einem dedizierten Ordner zu installieren, erstellen Sie den Ordner, öffnen Sie den Finder in diesem Ordner, laden Sie das Firefox-DMG herunter und ziehen Sie es in diesen Finder.

avandeursen
quelle
1

So sah das Problem in Wireshar k aus

Laden Sie einfach 2.53.1 hoch und alles wird funktionieren.

John Peters
quelle
1

Stand September 2016

Firefox 48.0und selenium==2.53.6funktionieren einwandfrei ohne Fehler

Nur um Firefox zu aktualisierenUbuntu 14.04

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

Es scheint mir, dass die beste Lösung darin besteht, auf Selenium 3.0.0 zu aktualisieren, geckodriver.exe herunterzuladen und Firefox 47 oder höher zu verwenden.

Ich habe die Firefox-Initialisierung geändert in:

 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
quelle
0

Ich kann bestätigen, dass dies selenium 2.53.6bei firefox 44Ubuntu 15 für mich funktioniert .

Bernard 'Beta Berlin' Parah
quelle