Raspberry PI Geckodriver?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Es gibt die Geckodriver für die Linux auf ARMv7 die gehen ab dem Pi 2B 1.1.

https://raspberrypi.stackexchange.com/questions/75409/running-selenium-firefox-geckodriver-on-raspberry-pi-2-model-b

Wenn du die neuste Version brauchst wirst du die selbst Builden müssen. Im Github Repo findest du eine Anleitung für die ARMv7 Architektur.

Die Pi3 und 4 nutzen zwar ARMv8 aber der ARMv7 Build sollte dennoch passen.

troloxi 
Fragesteller
 16.04.2020, 21:59

Normal ist es

self.bot = webdriver.Firefox(executable_path = 'geckodriver.exe')

aber ich soll dann im python skript das machen?

self.bot = webdriver.Firefox(executable_path = 'geckodriver')
0
PeterKremsner  16.04.2020, 22:05
@troloxi

Das erstere gilt nur für Windows.

das zweitere währe für Linux allerdings musst du dafür erst das Programm in zB /usr/bin ablegen oder einen Link dazu machen.

Wenn das Programm in deinem Homefolder liegt musst du den Pfad ändern auf /home/pi/geckodriver.

Für den alten 0.14 Release gibts sogar noch offizielle ARMv7 Builds zum Download

https://github.com/mozilla/geckodriver/releases?after=v0.15.0

Für neuere Releases muss ich erst schaun.

0
PeterKremsner  16.04.2020, 22:56
@troloxi

Weils mich gerade gewundert hat wie das mit dem selbst Kompilieren für die ARMv7 ist.
Im Grunde ist es ganz leicht. Ich habs per Crosscompiler von einer Ubuntu VM aus gemacht.
einfach die Commands:

  sudo apt install gcc-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross
curl https://sh.rustup.rs -sSf | sh

Dann am besten einen restart.

Dann lädst du dir von hier

https://hg.mozilla.org/mozilla-central/file/tip/testing/

Die Ordner geckodriver mozbase und webdriver runter.

Diese 3 Ordner kopierst du in das selbe verzeichnis.

Dann machst du ein Terminal im Ordner geckodriver auf und gibst die Befehle:

rustup target install armv7-unknown-linux-gnueabihf
cat >>.cargo/config <<EOF
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
EOF

Der CAT Befehl ändert im wesentlichen im geckodriver Ordner nur die Datei unter .cargo/config. Danach sollte dort nur

[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"

drinnen stehen.

und anschließend:

cargo build --release --target armv7-unknown-linux-gnueabihf

ein. Dann braucht die VM etwa 10min und am Ende hast du unter Target/armv7../release deine Buildausgabe.

Den gesamten Releaseordner kopierts du nun so wie er ist auf deinen Pi ins Homeverzeichnis.

In deinem Python Script schreibst du dann:

 self.bot = webdriver.Firefox(executable_path = '/home/pi/release/geckodriver')

Ich würde dir zwar wirklich empfehlen den Buildprozess mal zu machen weil es dir hilft zukünftige Releases selbst zu builden aber wenn es Probleme gibt kannst du eine PN an mich schicken und ich stelle dir den Build zur Verfügung den ich gerade gemacht habe um zu sehen ob die Anleitung funktioniert.

Ich habe das ergebnis allerdings noch nicht am Pi getestet.

0
troloxi 
Fragesteller
 16.04.2020, 23:39
@PeterKremsner

Also erstmal vielen Dank für den ausführlichen Text! Ich glaube soviel Arbeit haben sich noch nicht viele gemacht, nur mein Problem ist wenn ich

rustup target install armv7-unknown-linux-gnueabihf

eingebe, kommt

bash: rustup: command not found.

Also wurde der Command nicht gefunden, ich habe aber Rust usw. (wie dus beschrieben hast gedownloadet.)

Ich werds zwar noch einmal versuchen, aber könnte ich trotzdem für den fall der fälle mal den build haben? :D

0
PeterKremsner  17.04.2020, 00:04
@troloxi

Hast du einen neustart gemacht?

Wenn nicht schau mal nach ob es das Verzeichnis ~/.cargo gibt?

Wenn ja mach mal

source $HOME/.cargo/env

0