Aktuell nutze ich noch Crossbrowsertesting.com um viele verschiedene Testprofile im Bereich Webautomatisierung zu nutzen.

Durchaus, natürlich sehr Umfangreich was dort angeboten wird. Aber faktisch entstehen hier jährliche Kosten die manche Unternehmen sich nicht leisten können, manchmal auch nicht wollen. Also muss man entsprechend hier eben stark umdenken, um eben auch entsprechendes im selben Umfang liefern zu können.

Auch Crossbrowsertesting oder Browserstack sind limitiert, und sicherlich ist mit Selenium genau soviel wenn nicht sogar mehr umzusetzen als viele hier vielleicht denken.

Aber meine Überlegungen gehen in eine andere Richtung:

  • Webdriver Integration in einzelne Unittest
  • Autoupdate der Webdriver im Unittest
  • Spezielle Profile die man entsprechend aussuchen kann
  • Ausführliche Reports (Jenkins, aber auch für Lokale Test)

In diesem ersten Schritt erkläre ich wie man Webdriver automatisch updated innerhalb eines Unittest.

Ansatz 1: Der Chromedriver-Autoinstaller

Es gibt mehrere Möglichkeiten um einen Autoupdate Prozess innerhalb eines Unittest umzusetzen. Ich selbst nutzte hier im Unittest Framework Package chromedriver-autoinstaller, zumindest eben für den Chrome Browser.

pip install chromedriver-autoinstaller

In diesem Beispiel sieht man wie man den autoinstaller einbindet.

from selenium import webdriver
import chromedriver_autoinstaller


chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                      # and if it doesn't exist, download it automatically,
                                      # then add chromedriver to path

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title

 

Ansatz 2: Webdriver Manager for Python

Ein weiterer und zwar noch besserer Ansatz ist aber den Webdriver Manager zu nutzen. Dieser bietet aktuell die Unterstützung für:

  • ChromeDriver
  • GeckoDriver
  • IEDriver
  • OperaDriver
  • EdgeChromiumDriver
pip install webdriver-manager

Autoupdate Chrome Browser

Wie man den Chrome Browser einbindet und permanent updated ?

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())

 

Autoupdate Chromium Browser

Wie man den Chrome Browser einbindet und permanent updated ?

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.utils import ChromeType

driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())

Autoupdate FireFox Browser

Wie man den Chrome Browser einbindet und permanent updated ?

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())

Autoupdate IE Browser

Wie man den IE Browser einbindet und permanent updated ?

from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager

driver = webdriver.Ie(IEDriverManager().install())

 

Autoupdate Edge Browser

Wie man den Edge Browser einbindet und permanent updated ?

from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager

driver = webdriver.Edge(EdgeChromiumDriverManager().install())

Autoupdate Opera Browser

Wie man den Opera  Browser einbindet und permanent updated ?

from selenium import webdriver
from webdriver_manager.opera import OperaDriverManager

driver = webdriver.Opera(executable_path=OperaDriverManager().install())

Für weitere Konfigurationen innerhalb des Paketes schaut bitte auf der Entwicklerseite. Gerade der Punkt der Automatisierung, ist dort noch ausführlich beschrieben.