WSL est très pratique en ce sens que vous pouvez utiliser des commandes Linux tout en utilisant Windows, mais en ce qui concerne Selenium, il y a un inconvénient: il est difficile de vérifier le comportement du navigateur car vous ne pouvez pas utiliser l'interface graphique d'Ubuntu.
Si vous lancez l'affichage virtuel et prenez une capture d'écran, vous pouvez vérifier l'affichage de l'écran à ce moment-là [^ 1], mais il semble qu'il n'y a rien de tel que de le voir bouger réellement.
À la suite de divers essais et erreurs, j'ai réussi à afficher le navigateur en appuyant sur le pilote du système d'exploitation hôte de WSL2 en utilisant Selenium Grid, je vais donc le partager.
OS hôte: Windows 10 Famille 20H2 WSL: Ubuntu 18.04.5 on WSL2 Python: 3.7.5
[Exploitation d'un navigateur Web côté Windows en utilisant Selenium de Python sur WSL (Ubuntu16.04.4 LTS) - Laboradian](https://laboradian.com/operate-browser-on-win-by-python- de-wsl-via-sélénium /) ⇒ Comme c'était un article il y a plus de deux ans, je n'ai pas pu le reproduire dans mon environnement. J'obtiens le message d'erreur «Impossible de se connecter au service». Cela peut être possible si l'environnement est préparé.
Je voulais faire fonctionner la fenêtre Chrome du côté Windows à partir de Selenium Webdriver ou Puppeteer démarré sur WSL2, mais je ne peux pas - Corredor ⇒ Bien que cela n'ait pas été résolu, cela peut être utile pour ceux qui développent dans des langages autres que Python car il existe de nombreuses références à des recherches antérieures.
Voir ci-dessous pour la procédure. S'il s'agit de Java 10 ou moins, une erreur peut se produire. Mémo de méthode d'installation OpenJDK11 --Qiita
Allez sur la page here et téléchargez «3.141.59». L'emplacement du fichier téléchargé n'est pas spécifié.
Pilote Chrome depuis ici, geckodriver (Firefox) depuis ici. Veuillez télécharger le pilote de la même version ** que le navigateur installé sur Windows **. Extrayez le zip téléchargé et les autres fichiers, et placez les fichiers exécutables (chromedriver.exe et geckodriver.exe) dans le même dossier ** que le fichier jar téléchargé dans ** ②.
Dans Selenium Grid 3, nous devons configurer deux processus, Hub et Node, nous allons donc lancer deux invites de commande. Tout d'abord, démarrez Hub en exécutant la commande suivante à l'une des invites de commande.
java -jar [Emplacement de stockage du fichier jar]\selenium-server-standalone-3.141.59.jar -role hub
Si la sortie suivante est sortie et que le processus ne se termine pas, il n'y a pas de problème.
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
Ensuite, exécutez la commande suivante à l'autre invite de commandes pour démarrer le nœud. Pour «[URL Hub]», remplacez l'URL qui suit «Les clients doivent se connecter» dans la sortie ci-dessus.
java -jar [Emplacement de stockage du fichier jar]\selenium-server-standalone-3.141.59.jar -role node -hub [URL du hub]:4444
Si la sortie suivante est sortie et que le processus ne se termine pas, il n'y a pas de problème.
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")
Pour command_executor
, spécifiez l'URL qui suit Les clients doivent se connecter à
.
Si vous remplacez ChromeOptions ()
par FirefoxOptions ()
, vous utiliserez geckodriver.
python sample.py
En cas de succès, cela ressemblera à ceci:
Pour dire la vérité, la méthode ci-dessus avec Selenium 3 n'a pas bien fonctionné depuis le début, et j'ai trouvé une échappatoire pour réussir en jouant avec la source de Selenium, mais j'ai pensé que ce serait une bonne idée de l'introduire, alors je l'ai mise en stock une fois. J'étais là. Après cela, j'ai découvert comment l'implémenter dans Selenium 4, et quand j'ai écrit cet article, je l'ai vérifié à nouveau avec Selenium 3 et cela a fonctionné. L'opinion selon laquelle "alors je devrais introduire celle avec la plus grande certitude en premier" est également plausible, mais comme Selenium 4 est toujours une pré-version, je pense qu'il vaut mieux que la version stable de Selenium 3 fonctionne bien. Cela dépend de la priorité. Excusez-moi depuis longtemps.
Omis car il est identique à Selenium3. S'il ne s'agit pas de Java 11 ou supérieur, une erreur se produira certainement.
Allez à la page ici et téléchargez à partir du lien intitulé «Dernière version de Selenium 4 Alpha».
Identique à Selenium3. La différence est que le fichier exécutable ne doit pas nécessairement être situé au même emplacement que le fichier jar.
Cette procédure n'est requise que pour Selenium 4. Ouvrez l'écran de réglage en sélectionnant [Démarrer] → [Paramètres] et entrez "Variables d'environnement" dans la zone de recherche. Deux candidats, "Modifier les variables d'environnement" et "Modifier les variables d'environnement système", apparaîtront. Sélectionnez "Modifier la variable".
Ensuite, l'écran suivant s'ouvrira, alors appuyez sur "Variables d'environnement". Lorsque l'écran «Variables d'environnement» s'ouvre, sélectionnez la ligne «Chemin» dans le tableau «Variables d'environnement système» et appuyez sur «Modifier». Lorsque l'écran "Modifier le nom de la variable d'environnement" s'ouvre, cliquez sur "Nouveau" et entrez le chemin du dossier dans lequel le pilote du navigateur est stocké. Une fois la saisie terminée, appuyez sur la touche Entrée pour confirmer et appuyez sur "OK". Cliquez sur «OK» sur l'écran «Variables environnementales» et sur l'écran «Propriétés système», fermez l'écran «Paramètres» et vous avez terminé.
Selenium Grid 4 a un mode appelé «autonome», qui vous permet de lancer tous les composants à partir d'une invite de commande.
Démarrez une invite de commande et exécutez la commande suivante. Veuillez noter que le nom du fichier varie en fonction de la version téléchargée.
java -jar [Emplacement de stockage du fichier jar]\selenium-server-4.0.0-alpha-7.jar standalone
Si la dernière ligne de la sortie de commande est la suivante et que le processus ne se termine pas, il n'y a pas de problème.
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
Si Selenium est installé, vous pouvez mettre à niveau avec la commande suivante.
pip install -U --pre selenium
Si la version Python est 3.8 ou supérieure, il semble que l'installation de Selenium == 4.0.0a7 échouera.Dans ce cas, je pense que vous allez soit abaisser la version Python, soit installer Selenium == 4.0.0a6. ** Veuillez noter que si vous abaissez la version de Selenium, vous devez également abaisser la version de Selenium Server **.
Identique à Selenium3. L'URL définie dans command_executor
peut être différente entre Selenium 3 et 4, donc changez-la si nécessaire.
python sample.py
En cas de succès, cela ressemblera à ceci:
Je ne connais pas du tout Java, donc quand j'ai exécuté le fichier jar et que j'ai eu une erreur, j'étais tellement confus que j'ai presque pleuré, mais en conséquence j'étais soulagé que cela fonctionne. Je pense que les points étaient la ** version Java ** et la ** variable d'environnement système PATH **. Nous sommes impatients de vous aider.
Merci d'avoir regardé jusqu'à la fin.
Remote WebDriver client :: Documentation for Selenium Grid :: Documentation for Selenium
[^ 1]: La page suivante a été utile pour cette méthode. Python: Prenez une capture d'écran de la page Web entière avec Selenium + Headless Chrome-CUBE SUGAR CONTAINER
Recommended Posts