Problem mit Selenium und EdgeDriver in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gr3hab
User
Beiträge: 1
Registriert: Freitag 29. September 2023, 23:16

Hallo zusammen,

ich arbeite derzeit an einem Skript mit Selenium und dem EdgeDriver in Python, um automatisiert Aktionen in einem Webbrowser durchzuführen. Dabei treten jedoch wiederholt Probleme auf.

Ich verwende Python 3.11 und die neueste Version von Selenium. Ich möchte folgenden Ablauf auf der Webseite "https://www.krone.at/3109519" automatisieren:

Mein Hauptziel ist es, auf die Webseite "https://www.krone.at/3109519" zuzugreifen. Dort möchte ich in einem Dropdown-Menü "Leitzersdorf (Korneuburg)" auswählen, anschließend auf "Fertig" drücken und danach die Webseite aktualisieren. Diesen Prozess möchte ich mehrmals wiederholen. Nach jeder fünften abgegebenen Stimme (also nachdem ich fünfmal auf "Fertig" geklickt habe), möchte ich die Cookies dieser Seite löschen und erst danach die Seite erneut laden. Hierbei ist anzumerken, dass, wenn man die Cookies von vornherein blockiert, das Dropdown-Menü nicht geladen wird.

Um dies zu erreichen, habe ich folgenden Code geschrieben:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select, WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Pfad zum EdgeDriver
driver_path = "C:\\Users\\Anonym\\OneDrive\\Desktop\\msedgedriver.exe"
url = "https://www.krone.at/3109519"

# Edge WebDriver initialisieren
browser = webdriver.Edge(driver_path)

browser.get(url)

# Warten auf das Popup und es dann schließen
popup_close_button = WebDriverWait(browser, 20).until(
EC.element_to_be_clickable((By.ID, "didomi-notice-agree-button"))
)
popup_close_button.click()

# Warten auf das Dropdown-Menü und eine Option auswählen
dropdown_element = WebDriverWait(browser, 20).until(
EC.presence_of_element_located((By.ID, "dynamic_form_1663168773353535353110a"))
)
dropdown = Select(dropdown_element)
dropdown.select_by_visible_text("Leitzersdorf (Korneuburg)")

# Warten auf den "Fertig"-Button und darauf klicken
finish_button = WebDriverWait(browser, 20).until(
EC.element_to_be_clickable((By.XPATH, "//button[contains(text(), 'Fertig') and @type='button']"))
)
finish_button.click()

# Die Seite aktualisieren
browser.refresh()

# Nach 5 Mal die Cookies löschen (Schleife)

# Hier ein Beispiel:
# for i in range(5):
# # Dropdown-Menü auswählen, Fertig klicken, Seite aktualisieren...
# if (i + 1) % 5 == 0:
# browser.delete_all_cookies()

browser.quit()

Fehlermeldungen:
TypeError: WebDriver.__init__() got an unexpected keyword argument 'executable_path'
AttributeError: 'str' object has no attribute 'capabilities'

Kann mir jemand bei der Lösung dieser Probleme helfen oder Hinweise geben, was hier möglicherweise falsch läuft? Ich wäre für jede Unterstützung sehr dankbar!

Herzlichen Dank im Voraus
Lukas
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Oh whao. Fällt dir beim automatischen beschiss helfen auch unter Freiwilligenarbeit?
Benutzeravatar
sparrow
User
Beiträge: 4510
Registriert: Freitag 17. April 2009, 10:28

Hier kommen wieder zwei Dinge zusammen, die wir Arsch auf Eimer passen. Der automatisierte Beschiss und der Audgangscode von ChatGPT.
Wunderbar.
Antworten