Selenium automatisiert/fernsteuert den Browser über Python
Selenium ist eine Bibliothek für Python, um Aktionen im Browser fernzusteuern bzw. zu automatisieren. So kann man sehr einfach darüber auch Online-Anwendungen testen.
Im ersten Schritt müssen wir Selenium installieren. Das passiert über pip
:
pip install selenium
Jetzt benötigen wir den passenden Treiber (engl. „driver“) für unseren gewählten Browser (und Betriebssystem) unsere Wahl. Wenn wir Chrome nutzen, dann findet sich der Treiber unter:
https://chromedriver.chromium.org/downloads
Und dort für das eigene Betriebssystem und die Browserversion
Für Firefox:
https://github.com/mozilla/geckodriver/releases
Bei Mac Catalina kommt es zu Problemen wegen der Downloadquelle. Mehr dazu unter https://firefox-source-docs.mozilla.org/testing/geckodriver/Notarization.html
Wenn das ein Problem beim Mac ist, hilft das:
# für Chrome
xattr -r -d com.apple.quarantine chromedriver
# für Firefox
xattr -r -d com.apple.quarantine geckodriver
Jetzt können wir unser erstes Python-Programm mit dem Modul Selenium schreiben:
from selenium import webdriver
driver = webdriver.Chrome('/Users/ich/Python-lernen.de/fs/chromedriver')
driver.get('https://www.google.de/')
Als Ausgabe erhalten wir nun den Browser gestartet und Google.de angezeigt:
Nachdem der Browser gestartet wurde und die Seite aufgebaut wurde, bleibt der Browser offen.
Jetzt wollen wir Aktionen im Browser ausführen. Allerdings sollten wir kurz warten, dass die Seite auch aufgerufen wurde und komplett dargestellt ist.
Daher schicken wir den Browser nach dem Aufruf der URL erst einmal schlafen. Dazu wird das Modul time
importiert und dann schicken wir unser Python-Programm 3 Sekunden schlafen (ein PowerNap soll gesund sein).
from selenium import webdriver
import time
driver = webdriver.Chrome('/Users/ich/Python-lernen.de/fs/chromedriver')
driver.get('https://www.google.de/')
time.sleep(3)
Jetzt packen wir das Suchfeld in eine Variable über find_element_by_name()
und schicken dort Tastatureingaben hin:
from selenium import webdriver
import time
driver = webdriver.Chrome('/Users/ich/Python-lernen.de/fs/chromedriver')
driver.get('https://www.google.de/')
time.sleep(3)
aktion = driver.find_element_by_name('q')
aktion.send_keys("Python lernen")
aktion.submit()
time.sleep(10)
driver.quit()