WebDriver
WebDriver ist eine Fernsteuerungsschnittstelle, die es ermöglicht, Benutzeragenten zu inspizieren und zu steuern. Es bietet ein plattform- und sprachenneutrales Kommunikationsprotokoll, mit dem Programme außerhalb des Prozesses das Verhalten von Webbrowsern aus der Ferne anweisen können.
Die Fähigkeit, Anweisungssets zu schreiben, die in vielen Browsern auf verschiedenen Plattformen austauschbar ausgeführt werden können, ist entscheidend, um den Benutzern ein konsistentes Erlebnis zu bieten. Mit der neuen Entwicklung auf der Webplattform, der zunehmenden Vielfalt an Geräten und dem Bedarf an echter Interoperabilität zwischen den Technologien, bietet WebDriver Werkzeuge für das Cross-Browser-Testing.
Bereitgestellt wird ein Satz von Schnittstellen, um DOM-Elemente in Webdokumenten zu entdecken und zu manipulieren und das Verhalten eines Benutzeragenten zu steuern. Es ist in erster Linie dazu gedacht, Webautoren das Schreiben von Tests zu ermöglichen, die einen Benutzeragenten aus einem separaten Steuerprozess automatisieren, kann aber auch so verwendet werden, dass Skripte im Browser einen — möglicherweise separaten — Browser steuern.
Verwendung
Was ermöglicht Ihnen WebDriver zu tun und wie sieht es aus? Da WebDriver sprachneutral ist, hängt die Antwort auf diese Frage davon ab, welchen WebDriver-Client Sie verwenden und welche Sprache Sie wählen.
Aber wenn Sie einen populären Client verwenden, der in Python geschrieben ist, könnte Ihre Interaktion mit WebDriver so aussehen:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located
with webdriver.Firefox() as driver:
driver.get("https://google.com/ncr")
wait = WebDriverWait(driver, 10)
driver.find_element(By.NAME, "q").send_keys("cheese" + Keys.RETURN)
wait.until(presence_of_element_located((By.XPATH, '//*[@id="rcnt"]')))
results = driver.find_elements(By.XPATH, "//a[@href]")
for i, elem in enumerate(results):
print(f'#{i} {elem.text} ({elem.get_attribute("href")})')
Dies könnte eine Ausgabe erzeugen, die dieser ähnelt:
#1 Cheese - Wikipedia (https://en.wikipedia.org/wiki/Cheese)