Required Dependencies:
selenium==4.19.0
webdriver-manager==4.0.1
import time
Importiert die Time library, die für die sleep Methode gebraucht wird
time.sleep(float seconds)
Die Ausführung des Programms wird für die angegebene Zeit pausiert
assert Condition
Kann genutzt werden um zu überprüfen ob Daten der Webseite ihren Soll Werten entsprechen
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
webdriver
Selenium WebDriver
By
Selenium Locator Klasse, die genutzt, wird um Elemente auf der Webseite zu finden
Keys
Selenium Klasse, die genutzt wird um Tastenanschläge zu senden
ActionChains
Selenium Klasse die zur Durchführung komplexerer Aktionen genutzt wird
Service
Klasse zur Steuerung des Browser-Dienstes
WebDriverWait
Zum Warten auf das Vorhandensein bestimmter Bedingungen
expected_conditions
Vordefinierte Bedingungen zur Nutzung mit WebDriverWait
ChromeDriverManager
Automatische Verwaltung von Chromedriver
Service(ChromeDriverManager().install())
Installiert und initiiert den Chromedriver-Dienst, der für die Ausführung von Chrome Browser erforderlich ist.
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
webdriver.Chrome()
webdriver.Firefox()
webdriver.Edge()
webdriver.Safari()
Erstellen ein WebDriver-Objekt mit dem ausgewählten Browser und öffnen diesen.
driver = webdriver.Chrome()
webdriver.Firefox()
webdriver.Edge()
webdriver.Safari()
driver.quit()
Schließt den Browser und beendet den WebDriver-Dienst.
driver.quit()
webdriver.get(string url)
Diese Methode öffnet im Browser die gegebene URL.
driver.get("https://www.selenium.dev/selenium/web/web-form.html")
webdriver.implicitly_wait(float seconds)
Lässt den WebDriver die angegebene Zeit warten (sinnvoll um die Webseite laden zu lassen).
driver.implicitly_wait(1) #Makes the WebDriver wait for 1s before continuing
webdriver.find_element(By.Locator, string value)
Der WebDriver sucht auf der aktuellen Seite nach einem Element, dessen Daten mit dem Locator übereinstimmen. Wenn mehrere Elemente mit der Bedingung übereinstimmen, wird das erste ausgewählt.
text_box = webdriver.find_element(by=By.Name, value="my-text") #Select the element with the Name "my-text"
submit_button = webdriver.find_element(by=By.CSS_Selector, value="button") #Selects the first button element
element.get_attribute('style')
Der Webdriver liest den Wert des spezfizierten Elements aus.
links = self.driver.find_elements(By.TAG_NAME, "a")
for link in links:
print(link.get_attribute('href'))
element.send_keys(string keys)
element.send_keys(Keys Key)
Sendet die gegebenen Tastenschläge an das ausgewählte Element.
text_box.send_keys("Hello Selenium!")
text_box.send_keys(Keys.ARROW_LEFT)
WebElement.value_of_css_property(string property)
Holt das gewünschte CSS Property des ausgewählten Elements
button_color = submit_button.value_of_css_property('background-color')
button.click()
Klickt das ausgewählte Element.
submit_button.click()
driver.execute_script(script, *args)
Führt JavaScript im Kontext der derzeit geladenen Seite aus.
driver.execute_script("console.log("Hello Selenium!");")
WebDriverWait(driver, timeout).until(condition)
Wartet bis eine bestimmte Bedingung erfüllt ist.
alert = WebDriverWait(driver, 10).until(EC.alert_is_present())
Manchmal müssen komplizierte Aktionen auf Webseiten ausgeführt werden. Hierzu gibt es die ActionChains Klasse welche komplexere, low-level Benutzereingaben durchführen kann.
ActionChains(WebDriver driver)
Erstellt eine Action Chains Klasse zu der eine Reihe Aktionen hinzugefügt werden kann
action = ActionChains(driver)
ActionChains.move_to_element(WebElement element)
Bewegt einen emulierten Mauszeiger zu dem gegebenen Punkt. Der Mauszeiger bleibt nach der Bewegung an dieser Stelle, ideal um Mouse Over Skripte zu testen. (Wird erst bei action.perform() durchgeführt)
action.move_to_element(submit_button)
ActionChains.pause(int seconds)
Pausiert wartet bis zur Durchführung der nächsten Aktion die angegebene Zeit (Wird erst bei action.perform() durchgeführt)
action.pause(1)
ActionChains.perform()
Führt alle Aktionen durch in der Reihenfolge die sie der ActionChains Klasse hinzugefügt wurden. Alle oben angebene Befehle können auch zu einer Methodenzeile zusammengefasst werden.
action.perform() # Mit den oben angebenen Befehlen würde der WebDriver den virtuellen Mauszeiger zum submit_button bewegen und dann eine Sekunde warten
action = ActionChains(driver).move_to_element(submit_button).pause(1).perform() #Das geht auch in einer Zeile
Um einen neuen Tab in einem Browser mit Selenium zu öffnen, kann man JavaScript verwenden, das über die execute_script()
Methode des WebDriver ausgeführt wird.
driver.execute_script("window.open('');")
Nach dem Öffnen eines neuen Tabs können man nun zwischen den Tabs wechseln. Folgender Code öffnet den neuesten:
driver.switch_to.window(driver.window_handles[-1])
driver.close()
Schließt den aktuellen Tab.
driver.close()
driver.get_window_size()
Holt die aktuelle Browser Fenster Größe im Format {'width': xGröße, 'height': yGröße}
driver.get_window_size()
driver.set_window_size(int x, int y)
Setzt aktuele Browser Fenster Größe auf x*y Pixel
driver.set_window_size(800, 600)