Seite 1 von 1

Brauche Hilfe für Scriptzugriff per Webdriver auf geöffnete Webseite in Firefox

Verfasst: Freitag 7. April 2023, 17:23
von Clixmaster
Hi@all,

ich habe folgende Aufgabenstellung:

In einem Formular in einem LogIn-Bereich sind in ein Eingabefeld mit der ID "tags" nacheinander Keywords einzutragen, die jeweils einzeln mit ENTER zu übernehmen sind. Händisch ist das extrem aufwändig, zumal die Keywords bereits als Liste vorliegen.

Angestrebte Lösung:

.. ist ein Python-Script, das bei geöffneter Webseite per Tastenkombination gestartet wird, aus einer vorgegebenen Textdatei die Keywords Zeile für Zeile einliest, den richtigen Browsertab identifiziert und dort jedes Keyword gefolgt von einem Enter einfügt.

Entwicklungsstand:

Mit Python befasse ich mich erst seit 2 Tagen und habe versucht, mit Hilfe von ChatGPT ein funktionierendes Script zu schreiben. Bisher leider ohne Erfolg. Das nachfolgende Script öffnet selbst ein neues Fenster, anstatt auf das geöffnete Fenster zuzugreifen. Mir fehlen hier offenbar fundamentale Kenntnisse. Ich wäre euch sehr dankbar, wenn ihr mir da ein wenig auf die Sprünge helfen könntet. Von ChatGPT muss ich mich erst mal ein wenig erholen :)

Code: Alles auswählen

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.service import Service

# Pfad zur keywords.txt-Datei
keyword_file_path = r"D:\Dokumente\Scripte\keywords.txt"

# Geckodriver-Service starten
service = Service(".\geckodriver.exe")
service.start()

# Firefox Webdriver initialisieren
driver = webdriver.Firefox(service=service)

# Auf das geöffnete Fenster zugreifen
driver.switch_to.window(window_handle)
assert "Upload Page" in driver.title

try:
    # Eingabefeld finden
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "tags"))
    )

    # Keywords aus Datei lesen
    with open(keyword_file_path, "r") as f:
        keywords = [line.strip() for line in f]

    # Keywords in das Eingabefeld eingeben und mit Enter bestätigen
    for keyword in keywords:
        elem = driver.find_element(By.ID, "tags")
        elem.clear()
        elem.send_keys(keyword)
        elem.send_keys(Keys.RETURN)

        # Warten, bis das Keyword im Eingabefeld erscheint
        WebDriverWait(driver, 10).until(
            EC.text_to_be_present_in_element((By.ID, "tags"), keyword)
        )

finally:
    # Geckodriver-Service beenden
    driver.quit()
    service.stop()
    

Re: Brauche Hilfe für Scriptzugriff per Webdriver auf geöffnete Webseite in Firefox

Verfasst: Donnerstag 13. April 2023, 08:09
von Sirius3
@Clixmaster: Ein Programm baut man Schritt für Schritt auf, und testet jeweils die neue Funktionalität, so dass man leicht herausfinden kann, welcher Schritt noch nicht richtig funktioniert. Ab wann weicht denn Dein Programm von dem gewünschten Verhalten ab?

Re: Brauche Hilfe für Scriptzugriff per Webdriver auf geöffnete Webseite in Firefox

Verfasst: Donnerstag 13. April 2023, 22:10
von Clixmaster
"Das nachfolgende Script öffnet selbst ein neues Fenster, anstatt auf das geöffnete Fenster zuzugreifen" sagt meiner Meinung nach sehr deutlich aus, wo es zuerst hakt. Ist ja nun auch kein hochkomplexer Code, passt ohne zu scrollen auf den Screen. Das Interesse an meinem Problem scheint ja recht hoch zu sein, wundert mich, dass hier niemand eine Idee hat, wie ich mein Anfängerproblemchen lösen könnte.

Re: Brauche Hilfe für Scriptzugriff per Webdriver auf geöffnete Webseite in Firefox

Verfasst: Donnerstag 13. April 2023, 23:25
von __blackjack__
@Clixmaster: Dann zeig doch mal das Skript, denn das gezeigte hat einen recht offensichtlichen `NameError`.

Re: Brauche Hilfe für Scriptzugriff per Webdriver auf geöffnete Webseite in Firefox

Verfasst: Freitag 14. April 2023, 14:39
von Clixmaster
@_blackjack_
"Mit Python befasse ich mich erst seit 2 Tagen ...... Mir fehlen hier offenbar fundamentale Kenntnisse." ... aus dem Initialpost !
Schön, dass der 'NameError' für dich so offensichtlich ist. Hättest du aber auch für dich behalten können, denn mir als Anfänger hilft das gar nicht.

Re: Brauche Hilfe für Scriptzugriff per Webdriver auf geöffnete Webseite in Firefox

Verfasst: Freitag 14. April 2023, 15:03
von __deets__
Diese Strategie, Leute, von denen man sich Hilfe erwartet, anzupaulen - funktioniert die so ganz allgemein fuer dich? Und nur hier nicht? Vielleicht solltest du ChatGPT nicht nur deinen Code schreiben lassen, sondern auch deine sonstige Kommunikation. Das ist ueblicherweise recht freundlich...

Re: Brauche Hilfe für Scriptzugriff per Webdriver auf geöffnete Webseite in Firefox

Verfasst: Freitag 14. April 2023, 16:24
von __blackjack__
@Clixmaster: Der `NameError` ist auch für Dich so offensichtlich wenn Du das Programm mal starten würdest. Das bricht ab mit einer Fehlermeldung, nämlich eben diesem `NameError`. Oder das ist gar nicht der Quelltext den Du tatsächlich ausführst, dann kann man aber auch nicht wirklich helfen ohne den zu kennen. Der Quelltext im ersten Beitrag ist jedenfalls nicht vollständig, und das was fehlt ist wichtig um zum Fenster zu wechseln — was ja nach Deiner Beschreibung nicht funktioniert.

Falls Du einen Fehler bekommst, solltest Du den auch hier zeigen, am besten 1:1 kopiert, inklusive Traceback, denn selbst wenn *Dir* das nichts sagt, hilft es *uns* dabei zu verstehen was passiert ist und auch wo der Fehler aufgetreten ist.