Automatischer Web Download

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
pytonnewcomer
User
Beiträge: 1
Registriert: Donnerstag 20. Juli 2023, 17:12

Hallo zusammen,

ich möchte mein erstes Script schreiben und bin jetzt soweit, dass ich keine Fehlermeldung mehr erhalte.
Trotzdem passiert garnichts.
Chat GPT habe ich bereits bemüht um das Script zu erstellen und troubleshooting zu betreiben.
Nun bekomme ich aber keine Fehlermeldung mehr.


Grundsätzliche Idee:
Ich möchte ein Browser fenster mit vorgegeben URLs öffnen und in jedem Tab das gleiche machen.
Auf einen Knopf drücken. Name und Email eingeben. Nochmal auf einen knopf drücken.
Ein Popup öffnet sich, wo man nochmal auf einen Knopf drückt.
Als letztes.. Ihr ahnt es.. auf einen Knopf drücken..
Dann wird ein automatischer Download gestartet und ich möchte zum nächsten Tab.


Chat GPT hat mir bis jetzt das hier ausgespuckt:

Code: Alles auswählen

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException

# Funktion, um auf einen Knopf zu klicken und auf das nächste Element zu warten
def click_and_wait(driver, by, selector):
    button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((by, selector)))
    button.click()

# Funktion, um ein Element zu finden oder None zurückzugeben, wenn es nicht gefunden wird
def find_element_or_none(driver, by, selector):
    try:
        element = driver.find_element(by, selector)
        return element
    except NoSuchElementException:
        return None

# Hauptfunktion, die die Schritte auf verschiedenen Websites in verschiedenen Tabs ausführt
def main():
    # Pfad zum Chromedriver angeben
chromedriver_path = r'C:\Users\Emin\Desktop\Phyton\Maus Download\chromedriver.exe'
    # z.B. 'C:/Pfad/zum/chromedriver.exe'

    # Einstellungen für den Webdriver (hier wird Chrome verwendet)
    driver = webdriver.Chrome(executable_path=chromedriver_path)

    try:
        # Liste von URLs
        urls = [
            "https://hypeddit.com/track/gaje6l",
            "https://hypeddit.com/track/l4cj3w",
            "https://hypeddit.com/track/dr4d3t",
            # Füge hier weitere URLs hinzu, wenn du mehr Websites hast
        ]
        for url in urls:
            # Öffne die Website
            driver.get(url)

            # Schritt 1: Auf den ersten Knopf klicken
            click_and_wait(driver, By.ID, "downloadProcess")

            # Schritt 2: Textfelder ausfüllen (falls vorhanden)
            textfeld1 = find_element_or_none(driver, By.ID, "email_name")
            textfeld2 = find_element_or_none(driver, By.ID, "email_address")
            textfeld3 = find_element_or_none(driver, By.ID, "sc_comment_text")
            if textfeld1 and textfeld2:
                textfeld1.send_keys("E")
                textfeld2.send_keys("irgendeine@gmail.com")
                click_and_wait(driver, By.ID, "email_to_downloads_next")

            
            if textfeld3:
                textfeld3.send_keys("<3")
                click_and_wait(driver, By.ID, "login_to_sc")




            # Schritt 3: Mit dem Popup interagieren
            driver.switch_to.window(driver.window_handles[-1])
            click_and_wait(driver, By.ID, "submit_signup")


            # Schritt 4: Zum ursprünglichen Fenster zurückkehren
            driver.switch_to.window(driver.window_handles[0])
            click_and_wait(driver, By.ID, "submit_signup")


            # Schritt 5: Den letzten Knopf klicken (nach Klassennamen suchen)
            download_button = find_element_or_none(driver, By.CLASS_NAME, "button button-primary login-to-soundcloud-common free_dwln")
            if download_button:
                download_button.click()

    finally:
        # Schließe den Webdriver, wenn das Skript beendet wird
        driver.quit()

if __name__ == "__main__":
    main()
    
    

Wie gesagt, ich kriege keine Fehlermeldung, nichts passiert.
warscheinlich schon irgendwas im Hintergrund, aber nichts ersichtliches.


Vielen Dank und Gruß bereits im voraus,

pytonnewcomer ohne h
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Dieser riesige `try` Block ist Mist (und das ist noch sehr wohlwollend ausgedrückt). Wahrscheinlich bekommst du eine Exception, ignorierst die aber völlig.

Nimm mal das `try` und das `finally` raus. Dann solltest du zumindest eine Fehlermeldung bekommen, die du dann genauer untersuchen kannst.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@/me: da es zu dem try kein except gibt, wird da auch kein Fehler ignoriert.

Die vielen if-Bedingung sind aber so konstruiert, dass bei einem Fehler einfach nichts gemacht wird. Die sollten zu einer Meldung führen.
Antworten