[Linux: Ruby] Utilisez le pilote avec sélénium sans spécifier le chemin du pilote du navigateur

environnement

Ubuntu 18.04 LTS Ruby 2.6.5 selenium-webdriver 3.142.7

introduction

Lorsque vous utilisez sélénium-webdriver avec ruby, si vous placez le fichier du pilote dans le répertoire où se trouve le chemin sous linux, vous pouvez utiliser le pilote sans spécifier le chemin du pilote. Je vais résumer la méthode avec des notes à ce moment-là.

Placez le pilote dans un répertoire qui se trouve dans votre chemin

Cette fois, nous utiliserons le pilote Chrome comme exemple. À partir de ce qui suit, continuez en supposant que le pilote est installé.

Tout d'abord, regardez les variables d'environnement pour voir quels répertoires se trouvent dans votre chemin.

$ printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Les répertoires qui se trouvent dans le chemin sont affichés, séparés par ":". Cette fois, j'ai mis le fichier du pilote dans "usr / local / bin".

/usr/local/bin$ ls
chromedriver

Si vous appelez le pilote chrome avec du sélénium dans cet état, vous pouvez l'utiliser sans spécifier le chemin.

test.rb


require 'selenium-webdriver'

d = Selenium::WebDriver.for :chrome
d.get('http://****')

Le nom du fichier du pilote n'est pas reconnu sauf s'il s'agit de "pilote chrome"

Si le nom du fichier du pilote n'est pas "pilote chrome", une erreur se produira lors de l'exécution. J'ai installé le pilote ver.83, donc je l'ai enregistré comme "chromedriver83" lors de l'installation du pilote, mais je suis tombé sur une erreur.

/usr/local/bin$ ls
chromedriver83

Erreur lors de l'exécution du script

 Unable to find chromedriver. Please download the server from (Selenium::WebDriver::Error::WebDriverError)

On me dit que je ne trouve pas le pilote chrome

Si vous spécifiez le chemin, vous pouvez utiliser un autre nom de fichier

Vous pouvez utiliser un nom de fichier différent tant que vous spécifiez le chemin du pilote dans le script.

test.rb


require 'selenium-webdriver'

Selenium::WebDriver::Chrome::Service.driver_path = '/usr/local/bin/chromedriver83'
d = Selenium::WebDriver.for :chrome
d.get('http://****')

Au fait, avec cette méthode, peu importe si le chemin est passé ou non.

Recommended Posts

[Linux: Ruby] Utilisez le pilote avec sélénium sans spécifier le chemin du pilote du navigateur
Utilisez thymeleaf3 avec le parent sans spécifier spring-boot-starter-parent dans Spring Boot
La différence entre la programmation qui utilise des classes Ruby et la programmation qui n'utilise pas
Mettre à jour vers la dernière version sans spécifier la version avec le wrapper gradle
A propos de la spécification du chemin JAXRS
Utilisez Ruby avec Google Colab
Ruby Scraping-Move Selenium Headless avec VPS.
Programmation avec ruby (en route)
Suivez le lien avec Selenium (Java)