Mit Selenium können nicht nur Web-Anwendungen getestet werden, sondern mit den Python Bindings ist es auch möglich den Browser von der Konsole anzusteuern. In diesem Artikel wird gezeigt wie die Bindings installiert und verwendet werden.
In den folgenden Beispielen wird für die Installation eine mit Hilfe des virtualenvwrapper angelegte virtuelle Python Umgebung Namens selenium verwendet. Wie nachfolgend zu sehen gestaltet sich die Installation der Bindings mit dem Tool pip relativ einfach.
$ pip install selenium
Downloading/unpacking selenium
Downloading selenium-2.41.0.tar.gz (2.5MB): 2.5MB downloaded
Running setup.py (path:/home/user/.virtualenvs/selenium/build/selenium/setup.py) egg_info for package selenium
Installing collected packages: selenium
Running setup.py install for selenium
Successfully installed selenium
Cleaning up...
Für einen ersten Test kann der interaktive Python-Interpreter verwendet werden.
$ python
Zunächst wird das webdriver Modul importiert.
>>> from selenium import webdriver
Anschließend wird der webdriver für den Firefox geladen. Worauf sich ein neues Firefox Fenster öffnen sollte. Ist der Firefox nicht installiert kann auch ein anderer Browser wie zum Beispiel Chrome/Chromium oder Opera verwendet werden.
>>> browser = webdriver.Firefox()
Das öffnen einer Seite erfolgt über einen einfachen Aufruf der get()-Funktion. Die aufgerufene Seite sollte daraufhin im Browser-Fenster erscheinen.
>>> browser.get("http://blog.dinotools.de")
Ist die Seite fertig geladen kann zum Beispiel der Titel abgefragt werden.
>>> browser.title
'DinoTools.de'
Es ist jedoch auch möglich umfangreichere Abfragen zu machen. So werden im folgenden Beispiel alle Links(a-Tags) abgefragt. Zu diesem Zeitpunkt befinden sich 41 Links auf der Seite. Anschließend wird der erste Link ausgewählt und angeklickt.
>>> links = browser.find_elements_by_tag_name("a")
>>> len(links)
41
>>> link = links[0]
>>> link.click()
Neben den hier gezeigten Möglichkeiten sind noch viele weitere denkbar. So können zum Beispiel auch Formulare ausgefüllt und abgeschickt oder Screenshots der Webseite erstellt werden.
Links
- Webseite: Selenium (englisch)
- PyPI: selenium package (englisch)
- PyPI: virtualenvwrapper (englisch)