[Linux: Ruby] Verwenden Sie den Treiber mit Selen, ohne den Pfad des Browsertreibers anzugeben

Umgebung

Ubuntu 18.04 LTS Ruby 2.6.5 selenium-webdriver 3.142.7

Einführung

Wenn Sie bei Verwendung von Selenium-Webdriver mit Ruby die Treiberdatei in dem Verzeichnis ablegen, in dem sich der Pfad unter Linux befindet, können Sie den Treiber verwenden, ohne den Treiberpfad anzugeben. Ich werde die Methode zu diesem Zeitpunkt mit Notizen zusammenfassen.

Legen Sie den Treiber in einem Verzeichnis ab, das sich in Ihrem Pfad befindet

Dieses Mal verwenden wir den Chrome-Treiber als Beispiel. Gehen Sie im Folgenden davon aus, dass der Treiber installiert ist.

Sehen Sie sich zunächst die Umgebungsvariablen an, um festzustellen, welche Verzeichnisse sich in Ihrem Pfad befinden.

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

Die Verzeichnisse im Pfad werden durch ":" getrennt angezeigt. Diesmal habe ich die Treiberdatei in "usr / local / bin" abgelegt.

/usr/local/bin$ ls
chromedriver

Wenn Sie den Chrome-Treiber mit Selen in diesem Zustand aufrufen, können Sie ihn verwenden, ohne den Pfad anzugeben.

test.rb


require 'selenium-webdriver'

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

Der Name der Treiberdatei wird nur erkannt, wenn es sich um einen "Chrome-Treiber" handelt.

Wenn der Name der Treiberdatei nicht "Chrome-Treiber" lautet, tritt zur Laufzeit ein Fehler auf. Ich habe den Treiber ver.83 installiert und ihn bei der Installation des Treibers als "chromedriver83" gespeichert, bin jedoch auf einen Fehler gestoßen.

/usr/local/bin$ ls
chromedriver83

Fehler beim Ausführen des Skripts

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

Mir wurde gesagt, dass ich den Chrome-Treiber nicht finden kann

Wenn Sie den Pfad angeben, können Sie einen anderen Dateinamen verwenden

Sie können einen anderen Dateinamen verwenden, solange Sie den Treiberpfad im Skript angeben.

test.rb


require 'selenium-webdriver'

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

Bei dieser Methode spielt es übrigens keine Rolle, ob der Pfad übergeben wird oder nicht.

Recommended Posts

[Linux: Ruby] Verwenden Sie den Treiber mit Selen, ohne den Pfad des Browsertreibers anzugeben
Verwenden Sie thymeleaf3 mit parent, ohne Spring-Boot-Starter-Parent in Spring Boot anzugeben
Der Unterschied zwischen der Programmierung mit Ruby-Klassen und der Programmierung ohne Ruby-Klassen
Aktualisieren Sie auf die neueste Version, ohne die Version mit dem Gradle-Wrapper anzugeben
Informationen zum Festlegen des JAXRS-Pfads
Verwenden Sie Ruby mit Google Colab
Ruby Scraping-Move Selen Headless mit VPS.
Programmieren mit Ruby (unterwegs)
Folgen Sie dem Link mit Selen (Java)