Selenium Browser-Operationen
Selenium kann nicht nur mit Webseitenelementen arbeiten, sondern auch das Verhalten des Browsers selbst steuern, z. B. Fenster verwalten, Pop-ups behandeln, Cookies manipulieren, JavaScript ausführen und so weiter.
Im Folgenden sind gängige Browser-Operationen in Selenium und ihre Beschreibungen aufgeführt:
| Vorgangstyp | Methode | Beschreibung |
|---|---|---|
| Ein neues Fenster öffnen | execute_script("window.open('URL');") | Ein neues Fenster mit JavaScript öffnen. |
| Fenster wechseln | switch_to.window(window_handle) | Zum angegebenen Fenster-Handle wechseln. |
| Fenster schließen | close() | Das aktuelle Fenster schließen. |
| Fenster maximieren | maximize_window() | Das Browserfenster maximieren. |
| Fenstergröße festlegen | set_window_size(width, height) | Die Größe des Browserfensters festlegen. |
| Vollbildmodus | fullscreen_window() | Das Browserfenster in den Vollbildmodus versetzen. |
| Webseite öffnen | get(url) | Die angegebene URL öffnen. |
| Vorwärts und zurück | back()undforward() | Zur vorherigen Seite zurück oder zur nächsten Seite vorwärts gehen. |
| Seite aktualisieren | refresh() | Aktuelle Seite aktualisieren. |
| Alert-Popup behandeln | switch_to.alertIn Kombination mitaccept()oderdismiss() | Das Alert-Popup behandeln und auf OK oder Abbrechen klicken. |
| Confirm-Popup behandeln | switch_to.alertIn Kombination mitaccept()oderdismiss() | Das Confirm-Popup behandeln und auf OK oder Abbrechen klicken. |
| Prompt-Popup behandeln | switch_to.alertIn Kombination mitsend_keys()undaccept()oderdismiss() | Das Prompt-Popup behandeln, Text eingeben und dann auf OK oder Abbrechen klicken. |
| Cookie hinzufügen | add_cookie(cookie_dict) | Das angegebene Cookie hinzufügen. |
| Cookie abrufen | get_cookie(name)oderget_cookies() | Das angegebene Cookie oder alle Cookies abrufen. |
| Cookie löschen | delete_cookie(name)oderdelete_all_cookies() | Das angegebene Cookie oder alle Cookies löschen. |
| JavaScript ausführen | execute_script(script) | Den angegebenen JavaScript-Code ausführen. |
| Den JavaScript-Rückgabewert abrufen | execute_script("return ...") | JavaScript ausführen und das Ergebnis zurückgeben. |
| Zum iframe wechseln | switch_to.frame(iframe_element) | Zum angegebenen iframe wechseln. |
| Zurück zur Hauptseite wechseln | switch_to.default_content() | Zurück zur Hauptseite wechseln. |
1. Umgang mit Browser-Popups (alert, confirm, prompt)
In Webanwendungen sind Popups (wie alert, confirm, prompt) eine gängige Methode der Benutzerinteraktion. Selenium bietetAlerteine Klasse zum Umgang mit diesen Popups.
1.1 Umgang mit alert-Popups
alertDas alert-Popup wird typischerweise verwendet, um eine Nachricht anzuzeigen, und der Benutzer kann nur auf die Schaltfläche "OK" klicken, um es zu schließen.
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Warnung
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://example.com")
# alert-Popup auslösen
driver.execute_script("alert('This is an alert popup');")
# Zum alert-Popup wechseln
alert = Alert(driver)
# Popup-Text abrufen
print(alert.text)
# Auf die Schaltfläche "OK" klicken, um das Popup zu schließen
alert.accept()
# Den Browser schließen
driver.quit()
1.2 Umgang mit Confirm-Popups
confirmDas Confirm-Popup wird normalerweise verwendet, um eine Aktion zu bestätigen, und der Benutzer kann "OK" oder "Abbrechen" wählen.
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Warnung
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://example.com")
# Confirm-Popup auslösen
driver.execute_script("confirm('Dies ist ein Confirm-Popup');")
# Zum Confirm-Popup wechseln
alert = Alert(driver)
# Popup-Text abrufen
print(alert.text)
# Auf die Schaltfläche "OK" klicken
alert.accept()
# Oder auf die Schaltfläche "Abbrechen" klicken
# alert.dismiss()
# Den Browser schließen
driver.quit()
1.3 Umgang mit Prompt-Popups
promptDas Prompt-Popup wird typischerweise verwendet, um Benutzereingaben zu erhalten; der Benutzer kann Text eingeben und "OK" oder "Abbrechen" wählen.
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Warnung
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Browser starten
driver = webdriver.Chrome()
# Webseite öffnen
driver.get("https://example.com")
# Prompt-Popup auslösen
driver.execute_script("prompt('Dies ist ein Prompt-Popup');")
# Zum Prompt-Popup wechseln
alert = Alert(driver)
# Popup-Text abrufen
print(alert.text)
# Text eingeben
alert.send_keys("Benutzereingabe")
# Auf die Schaltfläche "OK" klicken
alert.accept()
# Oder auf die Schaltfläche "Abbrechen" klicken
# alert.dismiss()
# Den Browser schließen
driver.quit()
2. Wechseln zwischen Fenstern und Tabs
In Webanwendungen können Benutzer mehrere Fenster oder Tabs öffnen. Selenium bietetswitch_to.window()Methoden zum Wechseln zwischen Fenstern oder Tabs.
2.1 Fenster wechseln
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Erstes Fenster öffnen
driver.get("https://example.com")
# Zweites Fenster öffnen
driver.execute_script("window.open('https://example.org');")
# Alle Fenster-Handles abrufen
window_handles = driver.window_handles
# Zum zweiten Fenster wechseln
driver.switch_to.window(window_handles[1])
# Im zweiten Fenster arbeiten
print(driver.title)
# Zurück zum ersten Fenster wechseln
driver.switch_to.window(window_handles[0])
# Den Browser schließen
driver.quit()
2.2 Tabs wechseln
Das Wechseln zwischen Tabs ähnelt dem Wechseln zwischen Fenstern, da jeder Tab ein unabhängiges Fenster-Handle ist.
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Ersten Tab öffnen
driver.get("https://example.com")
# Zweiten Tab öffnen
driver.execute_script("window.open('https://example.org');")
# Alle Tab-Handles abrufen
tab_handles = driver.window_handles
# Zum zweiten Tab wechseln
driver.switch_to.window(tab_handles[1])
# Im zweiten Tab arbeiten
print(driver.title)
# Zurück zum ersten Tab wechseln
driver.switch_to.window(tab_handles[0])
# Den Browser schließen
driver.quit()
3. Umgang mit iframes
iframeEin iframe ist eine andere Webseite, die in eine Webseite eingebettet ist. Selenium bietetswitch_to.frame()Methoden zum Wechseln zu einem iframe.
3.1 Wechseln zu einem iframe
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://example.com")
# Zum iframe wechseln
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)
# Im iframe arbeiten
print(driver.page_source)
# Zurück zur Hauptseite wechseln
driver.switch_to.default_content()
# Den Browser schließen
driver.quit()
3.2 Zurück zur Hauptseite wechseln
Nach Abschluss der Vorgänge im iframe können Sieswitch_to.default_content()Methoden verwenden, um zur Hauptseite zurückzuwechseln.
Beispiel
driver.switch_to.default_content()
4. Operationen mit Browser-Cookies
Selenium bietetget_cookies()、add_cookie()、delete_cookie()und andere Methoden zum Arbeiten mit Browser-Cookies.
4.1 Cookies abrufen
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://example.com")
# Alle Cookies abrufen
cookies = driver.get_cookies()
print(cookies)
# Den Browser schließen
driver.quit()
4.2 Einen Cookie hinzufügen
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://example.com")
# Cookie hinzufügen
driver.add_cookie({"name": "test", "value": "123"})
# Alle Cookies abrufen
cookies = driver.get_cookies()
print(cookies)
# Den Browser schließen
driver.quit()
4.3 Einen Cookie löschen
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://example.com")
# Cookie hinzufügen
driver.add_cookie({"name": "test", "value": "123"})
# Cookie löschen
driver.delete_cookie("test")
# Alle Cookies abrufen
cookies = driver.get_cookies()
print(cookies)
# Den Browser schließen
driver.quit()
5. JavaScript-Code ausführen
Selenium bietetexecute_script()Methoden zum Ausführen von JavaScript-Code.
5.1 JavaScript-Code ausführen
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://example.com")
# JavaScript-Code ausführen
driver.execute_script("alert('Dies ist ein JavaScript-Popup');")
# Den Browser schließen
driver.quit()
5.2 Abrufen des JavaScript-Rückgabewerts
Beispiel
from selenium.webdriver.chrome.service import Service as ChromeService
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://example.com")
# JavaScript-Code ausführen und den Rückgabewert abrufen
result = driver.execute_script("return document.title;")
print(result)
# Den Browser schließen
driver.quit()
6. Umfassendes Beispiel
Das Folgende ist ein vollständiges Beispiel, das zeigt, wie verschiedene Browser-Operationen verwendet werden:
Beispiel
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import Durch
from selenium.webdriver.common.keys import Keys
# Korrekten Treiberpfad festlegen
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# Webseite öffnen
driver.get("https://www.example.com")
# Fenster maximieren
driver.maximize_window()
# Cookie hinzufügen
driver.add_cookie({"name": "test", "value": "123"})
# Cookie abrufen
cookie = driver.get_cookie("test")
print("Cookie:", cookie)
# JavaScript ausführen
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Alert-Popup behandeln
driver.execute_script("alert('Hello, Selenium!');")
alert = driver.switch_to.alert
print("Popup-Text:", alert.text)
alert.accept()
# Zum iframe wechseln
iframe = driver.find_element(By.ID, "iframe-id")
driver.switch_to.frame(iframe)
# Zurück zur Hauptseite wechseln
driver.switch_to.default_content()
# Den Browser schließen
driver.quit()