Weiß jemand, ob Selenium (vorzugsweise WebDriver) in der Lage ist, mit einem Browser zu kommunizieren und über diesen zu handeln, der bereits ausgeführt wird, bevor ein Selenium-Client gestartet wird?
Ich meine, wenn Selenium in der Lage ist, mit einem Browser zu kommunizieren, ohne den Selenium Server zu verwenden (mit könnte beispielsweise ein Internet Explorer manuell gestartet werden).
quelle
Dies ist eine doppelte Antwort. ** Wiederverbindung mit einem Treiber in Python Selen. ** Dies gilt für alle Treiber und für Java API.
Und Sie sind wieder mit Ihrem Fahrer verbunden.
quelle
driver.close()
bevor Sie die Sitzungs-ID aktualisieren.Mit diesem Snippet können vorhandene Browserinstanzen erfolgreich wiederverwendet werden, ohne dass der doppelte Browser ausgelöst wird. Gefunden bei Tarun Lalwanis Blog.
quelle
# session_id = driver.session_id
können Sie die Sitzungs-ID eines Chrome-Fensters mit Python Selenium API abrufen. Ich denke, dass jeder Tab in einer Chrome-Sitzung keine eindeutige ID hat.Es ist möglich. Aber Sie müssen es ein wenig hacken, es gibt einen Code. Sie müssen einen eigenständigen Server ausführen und RemoteWebDriver "patchen"
quelle
Es scheint, dass diese Funktion von Selen nicht offiziell unterstützt wird. Tarun Lalwani hat jedoch funktionierenden Java-Code erstellt, um die Funktion bereitzustellen. Verweisen - http://tarunlalwani.com/post/reusing-existing-browser-session-selenium-java/
Hier ist der Arbeitsbeispielcode, der über den obigen Link kopiert wurde:
Für Ihren Test muss ein RemoteWebDriver aus einer vorhandenen Browsersitzung erstellt werden. Um diesen Treiber zu erstellen, müssen Sie nur die "Sitzungsinformationen" kennen, dh die Adresse des Servers (in unserem Fall lokal), auf dem der Browser ausgeführt wird, und die Sitzungs-ID des Browsers. Um diese Details zu erhalten, können wir eine Browsersitzung mit Selen erstellen, die gewünschte Seite öffnen und schließlich das eigentliche Testskript ausführen.
Ich weiß nicht, ob es eine Möglichkeit gibt, Sitzungsinformationen für eine Sitzung abzurufen, die nicht von Selen erstellt wurde.
Hier ist ein Beispiel für Sitzungsinformationen:
Adresse des Remote-Servers: http: // localhost: 24266 . Die Portnummer ist für jede Sitzung unterschiedlich. Sitzungs-ID: 534c7b561aacdd6dc319f60fed27d9d6.
quelle
Inspiriert von Erics Antwort, hier ist meine Lösung für dieses Problem für Selen 3.7.0. Gegenüber der Lösung unter http://tarunlalwani.com/post/reusing-existing-browser-session-selenium/ besteht der Vorteil darin, dass nicht jedes Mal, wenn ich eine Verbindung zur vorhandenen Sitzung herstelle, ein leeres Browserfenster angezeigt wird.
Um es zu benutzen:
quelle
Allen bisherigen Lösungen fehlten bestimmte Funktionen. Hier ist meine Lösung:
quelle
Javascript-Lösung:
Ich habe mit dieser Funktion erfolgreich eine Verbindung zu einer vorhandenen Browsersitzung hergestellt
Dokumentation finden Sie hier .
quelle
Ich habe eine Lösung in Python erhalten. Ich habe die Webdriver-Klasse geändert, die auf der von mir gefundenen PersistenBrowser-Klasse basiert.
https://github.com/axelPalmerin/personal/commit/fabddb38a39f378aa113b0cb8d33391d5f91dca5
Ersetzen Sie das Webdriver-Modul /usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py
Ej. benutzen:
quelle
Ich verwende Rails + Cucumber + Selenium Webdriver + PhantomJS und eine mit Affen gepatchte Version von Selenium Webdriver, mit der der PhantomJS-Browser zwischen den Testläufen geöffnet bleibt. Siehe diesen Blog-Beitrag: http://blog.sharetribe.com/2014/04/07/faster-cucumber-startup-keep-phantomjs-browser-open-between-tests/
Siehe auch meine Antwort auf diesen Beitrag: Wie führe ich einen Befehl in einem bereits geöffneten Browser aus einer Ruby-Datei aus?
quelle
Dies ist mit dem JavaScript-
selenium-webdriver
Client ziemlich einfach :Stellen Sie zunächst sicher, dass ein WebDriver-Server ausgeführt wird. Laden Sie beispielsweise ChromeDriver herunter und führen Sie es aus
chromedriver --port=9515
.Zweitens erstellen Sie den Treiber wie folgt :
Hier ist ein vollständiges Beispiel:
var webdriver = require ('Selen-Webdriver');
quelle