WSL ist sehr praktisch, da Sie unter Windows Linux-Befehle verwenden können. Wenn es jedoch um Selen geht, gibt es den Nachteil, dass es schwierig ist, das Verhalten des Browsers zu überprüfen, da die Ubuntu-GUI nicht verwendet werden kann.
Wenn Sie die virtuelle Anzeige starten und einen Screenshot machen, können Sie die Bildschirmanzeige zu diesem Zeitpunkt überprüfen [^ 1], aber es scheint, als gäbe es nichts Schöneres, als zu sehen, wie sie sich tatsächlich bewegt.
Aufgrund verschiedener Versuche und Fehler gelang es mir, den Browser anzuzeigen, indem ich den Treiber auf dem Host-Betriebssystem von WSL2 mithilfe von Selenium Grid traf, sodass ich ihn freigeben werde.
Host-Betriebssystem: Windows 10 Home 20H2 WSL: Ubuntu 18.04.5 on WSL2 Python: 3.7.5
[Betreiben eines Webbrowsers auf der Windows-Seite mit Selenium von Python unter WSL (Ubuntu16.04.4 LTS) - Laboradian](https://laboradian.com/operate-browser-on-win-by-python- of-wsl-via-selen /) ⇒ Da es sich um einen Artikel vor mehr als zwei Jahren handelte, konnte ich ihn in meiner Umgebung nicht reproduzieren. Ich erhalte die Fehlermeldung "Kann keine Verbindung zum Dienst herstellen". Es kann möglich sein, wenn die Umgebung vorbereitet ist.
Ich wollte das Chrome-Fenster auf der Windows-Seite von Selenium Webdriver oder Puppeteer aus betreiben, das auf WSL2 gestartet wurde, aber ich kann nicht ... Corredor ⇒ Obwohl es nicht gelöst wurde, kann es für diejenigen hilfreich sein, die sich in anderen Sprachen als Python entwickeln, da es zahlreiche Verweise auf frühere Forschungen gibt.
Siehe unten für die Vorgehensweise. Wenn es sich um Java 10 oder weniger handelt, kann ein Fehler auftreten. OpenJDK11-Installationsmethoden-Memo - Qiita
Gehen Sie zur Seite hier und laden Sie 3.141.59
herunter.
Der Speicherort der heruntergeladenen Datei ist nicht angegeben.
Chrome-Treiber von hier, Geckodriver (Firefox) von hier. Bitte laden Sie den Treiber derselben Version ** herunter wie den unter Windows installierten Browser **. Extrahieren Sie die heruntergeladene Zip-Datei und andere Dateien und platzieren Sie die ausführbaren Dateien (chromedriver.exe und geckodriver.exe) im selben Ordner ** wie die in ** ② heruntergeladene JAR-Datei.
In Selenium Grid 3 müssen wir zwei Prozesse einrichten, Hub und Node, damit wir zwei Eingabeaufforderungen starten. Starten Sie Hub zunächst, indem Sie den folgenden Befehl an einer der Eingabeaufforderungen ausführen.
java -jar [Speicherort der JAR-Datei]\selenium-server-standalone-3.141.59.jar -role hub
Wenn die folgende Ausgabe ausgegeben wird und der Prozess nicht beendet wird, gibt es kein Problem.
13:11:40.423 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
13:11:40.483 INFO [GridLauncherV3.lambda$buildLaunchers$5] - Launching Selenium Grid hub on port 4444
2020-11-23 13:11:40.848:INFO::main: Logging initialized @636ms to org.seleniumhq.jetty9.util.log.StdErrLog
13:11:41.814 INFO [Hub.start] - Selenium Grid hub is up and running
13:11:41.816 INFO [Hub.start] - Nodes should register to http://192.168.21.1:4444/grid/register/
13:11:41.816 INFO [Hub.start] - Clients should connect to http://192.168.21.1:4444/wd/hub
Führen Sie dann den folgenden Befehl an der anderen Eingabeaufforderung aus, um den Knoten zu starten. Ersetzen Sie für "[Hub-URL]" die URL, die in der obigen Ausgabe auf "Clients sollten eine Verbindung herstellen" folgt.
java -jar [Speicherort der JAR-Datei]\selenium-server-standalone-3.141.59.jar -role node -hub [Hub-URL]:4444
Wenn die folgende Ausgabe ausgegeben wird und der Prozess nicht beendet wird, gibt es kein Problem.
13:11:59.609 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
13:11:59.688 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Launching a Selenium Grid node on port 31688
2020-11-23 13:12:00.999:INFO::main: Logging initialized @1598ms to org.seleniumhq.jetty9.util.log.StdErrLog
13:12:01.177 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
13:12:01.231 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 31688
13:12:01.231 INFO [GridLauncherV3.lambda$buildLaunchers$7] - Selenium Grid node is up and ready to register to the hub
13:12:01.654 INFO [SelfRegisteringRemote$1.run] - Starting auto registration thread. Will try to register every 5000 ms.
13:12:01.883 INFO [SelfRegisteringRemote.registerToHub] - Registering the node to the hub: http://192.168.21.1:4444/grid/register
13:12:02.317 INFO [SelfRegisteringRemote.registerToHub] - The node is registered to the hub and ready to use
pip install selenium==3.141.0
sample.py
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Remote(
command_executor="http://192.168.21.1:4444/wd/hub",
options=chrome_options
)
driver.get("https://www.google.com/search?q=qiita")
Geben Sie für command_executor
die folgende URL an Clients sollten eine Verbindung zu
herstellen.
Wenn "ChromeOptions ()" in "FirefoxOptions ()" geändert wird, wird Geckodriver verwendet.
python sample.py
Wenn dies erfolgreich ist, sieht es folgendermaßen aus:
Um die Wahrheit zu sagen, die obige Methode mit Selen 3 funktionierte von Anfang an nicht gut, und ich fand eine Lücke, um erfolgreich zu sein, indem ich mit der Selenquelle spielte, aber ich dachte, es wäre eine gute Idee, sie einzuführen, also lagerte ich sie einmal ein. Ich war da. Danach entdeckte ich, wie man es in Selenium 4 implementiert, und als ich diesen Artikel schrieb, überprüfte ich ihn erneut mit Selenium 3 und es funktionierte. Die Meinung, dass "dann sollte ich zuerst die mit höherer Sicherheit einführen", ist ebenfalls plausibel, aber da Selenium 4 immer noch eine Vorabversion ist, denke ich, dass es besser ist, wenn die stabile Version von Selenium 3 gut funktioniert. Das hängt von der Priorität ab. Entschuldigung für eine lange Zeit.
Ausgelassen, weil es dasselbe ist wie Selenium3. Wenn es sich nicht um Java 11 oder höher handelt, tritt definitiv ein Fehler auf.
Gehen Sie zur Seite hier und laden Sie sie über den Link "Neueste Selenium 4 Alpha-Version" herunter.
Gleich wie Selenium3. Der Unterschied besteht darin, dass sich die ausführbare Datei nicht am selben Speicherort wie die JAR-Datei befinden muss.
Dieses Verfahren ist nur für Selen 4 erforderlich. Öffnen Sie den Einstellungsbildschirm, indem Sie [Start] → [Einstellungen] auswählen und "Umgebungsvariablen" in das Suchfeld eingeben. Zwei Kandidaten, "Umgebungsvariablen bearbeiten" und "Systemumgebungsvariablen bearbeiten", werden angezeigt. Wählen Sie "Variable bearbeiten".
Dann öffnet sich der folgende Bildschirm, also drücken Sie "Umgebungsvariablen". Wenn der Bildschirm "Umgebungsvariablen" geöffnet wird, wählen Sie die Zeile "Pfad" in der Tabelle "Systemumgebungsvariablen" aus und klicken Sie auf "Bearbeiten". Wenn der Bildschirm "Name der Umgebungsvariablen bearbeiten" geöffnet wird, klicken Sie auf "Neu" und geben Sie den Pfad des Ordners ein, in dem der Browsertreiber gespeichert ist. Drücken Sie nach Abschluss der Eingabe die Eingabetaste zur Bestätigung und drücken Sie "OK". Klicken Sie im Bildschirm "Umgebungsvariablen" und "Systemeigenschaften" auf "OK", schließen Sie den Bildschirm "Einstellungen" und Sie sind fertig.
Selenium Grid 4 verfügt über einen Modus namens "Standalone", mit dem Sie alle Komponenten über eine Eingabeaufforderung starten können.
Starten Sie eine Eingabeaufforderung und führen Sie den folgenden Befehl aus. Bitte beachten Sie, dass der Dateiname je nach heruntergeladener Version variiert.
java -jar [Speicherort der JAR-Datei]\selenium-server-4.0.0-alpha-7.jar standalone
Wenn die letzte Zeile der Befehlsausgabe wie folgt lautet und der Prozess nicht beendet wird, gibt es kein Problem.
17:08:44.674 INFO [Standalone.execute] - Started Selenium standalone 4.0.0-alpha-7 (revision Unknown): http://172.26.240.1:4444
pip install selenium==4.0.0a7
Wenn Sie Selenium installiert haben, können Sie mit dem folgenden Befehl ein Upgrade durchführen.
pip install -U --pre selenium
Wenn die Python-Version 3.8 oder höher ist, scheint die Installation von Selenium == 4.0.0a7 fehlzuschlagen. In diesem Fall werden Sie entweder die Python-Version senken oder Selenium == 4.0.0a6 installieren. ** Bitte beachten Sie, dass Sie beim Verringern der Version von Selenium auch die Version von Selenium Server ** senken müssen.
Gleich wie Selenium3. Die in command_executor
festgelegte URL kann zwischen Selenium 3 und 4 unterschiedlich sein. Ändern Sie sie daher bei Bedarf.
python sample.py
Wenn dies erfolgreich ist, sieht es folgendermaßen aus:
Ich bin mit Java überhaupt nicht vertraut. Als ich die JAR-Datei ausführte und einen Fehler bekam, war ich so verwirrt, dass ich fast geweint hätte, aber als Ergebnis war ich erleichtert, dass es funktionierte. Ich denke, die Punkte waren ** Java-Version ** und ** Systemumgebungsvariable PATH **. Wir freuen uns darauf, Ihnen zu helfen.
Danke, dass du bis zum Ende zugesehen hast.
Remote WebDriver client :: Documentation for Selenium Grid :: Documentation for Selenium
[^ 1]: Die folgende Seite war für diese Methode hilfreich. Python: Machen Sie einen Screenshot der gesamten Webseite mit Selenium + Headless Chrome-CUBE SUGAR CONTAINER
Recommended Posts