Ergebnis 1 bis 6 von 6
  1. #1
    Anfänger
    Registriert seit
    28.03.2020
    Beiträge
    9

    Standard Python Selenium | find_elements_by_class_name mit for schleife abarbeiten

    hey leute,

    ich besuche mit python selenium und chrome eine website und kann mit find_elements_by_class_name eine liste der klassen erstellen, wenn ich es folgendermassen mache kann ich drauf klicken:
    Code:
    benutzer1 = driver.find_elements_by_class_name('name')
    benutzer1[0].click()
    oder mit benutzer[1].click() funktioniert es auch es wird halt das 2 element angeklickt

    und wenn ich es wie folgt mache:
    Code:
    for i in benutzer1:
    -----benutzer1.click()
    kommt folgende fehler meldung:
    Code:
    AttributeError: 'list' object has no attribute 'click'

    ausserdem möchte ich nur die ersten 20 klassen anklicken entsprechend eine aktion durchführen wie kann ich dass mit einer for...range schleife hier einbauen ?
    Geändert von Barny (06.08.2020 um 15:11 Uhr) Grund: Code-Tags hinzugefügt

  2. #2
    0x532d4d6f64 Avatar von Barny
    Registriert seit
    12.01.2007
    Beiträge
    630

    Standard AW: Python Selenium | find_elements_by_class_name mit for schleife abarbeiten

    Hiho!

    Schau dir bitte nochmal die Benutzung von "foreach"-Schleifen an. In deinem Fall wäre es nicht

    Code:
    for i in benutzer1:
        benutzer1.click()
    sondern

    Code:
    for i in benutzer1:
        i.click()
    Der von dir beschriebene Fehler ist daher logisch: Du versucht die Methode "click()" nicht von einem Element der Liste aufzurufen, sondern versucht die Methode "click()" auf das Listenobjekt auszuführen. Das kann nicht funktionieren, da das Listenobjekt keine Methode hat die "click()" heißt.

    Viele Grüße,

    Barny
    Geändert von Barny (06.08.2020 um 15:19 Uhr)

    ~~~ Blog ~~~
    ~~~ PGP-Key ~~~

  3. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    0u1law (06.08.2020)

  4. #3
    Anfänger
    Registriert seit
    28.03.2020
    Beiträge
    9

    Standard AW: Python Selenium | find_elements_by_class_name mit for schleife abarbeiten

    Hey danke erstmal für deine hilfe! und ich hab es entsprechend probiert aber jetzt bekomme ich folgende fehlermeldung:

    Code:
    Message: stale element reference: element is not attached to the page document

    hab auch versucht das dann auf einem neuen fenster zu öffnen aber vergeblich
    hier der code
    Code:
    benutzer1 = driver.find_elements_by_class_name('name')
    
    
    for a in benutzer1:
          driver.execute_script("window.open('');")
          driver.switch_to.window(driver.window_handles[1])
          a.click()
          driver.close()
    bekomme aber besagte fehlermeldung was kann ich da machen ? dachte daran jedesmal wenn ich auf der gewollten seite war kann ich dann eins zurück und die elemente neu laden aber wie mache ich das dann dass ich nicht jedesmal benutzer[0] ansteuere ? sowas wie ein counter oder ?
    Geändert von Barny (11.08.2020 um 13:00 Uhr) Grund: Code-Tags eingefügt

  5. #4
    Milw0rm Avatar von novedad
    Registriert seit
    12.05.2010
    Beiträge
    589

    Standard AW: Python Selenium | find_elements_by_class_name mit for schleife abarbeiten

    wie war das mit den code-tags?
    Seitdem ich perfekt bin hält sich meine Arroganz in Grenzen



  6. #5
    0x532d4d6f64 Avatar von Barny
    Registriert seit
    12.01.2007
    Beiträge
    630

    Standard AW: Python Selenium | find_elements_by_class_name mit for schleife abarbeiten

    Du wirst so keine Hilfe finden. Bitte beschreibe was du tun möchtest und poste dazu deinen vollständigen Code. Mit den paar Codefetzen kann man nicht wirklich was anfangen.
    Bitte achte auch auf die Code-Tags. Ich habe diese soeben in deinem Beitrag wieder ergänzen müssen.

    Viele Grüße,

    Barny

    ~~~ Blog ~~~
    ~~~ PGP-Key ~~~

  7. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    0u1law (24.08.2020)

  8. #6
    Sobig Wurm
    Registriert seit
    03.07.2015
    Beiträge
    201

    Standard AW: Python Selenium | find_elements_by_class_name mit for schleife abarbeiten

    Zitat Zitat von 0u1law Beitrag anzeigen
    Hey danke erstmal für deine hilfe! und ich hab es entsprechend probiert aber jetzt bekomme ich folgende fehlermeldung:

    Code:
    Message: stale element reference: element is not attached to the page document

    hab auch versucht das dann auf einem neuen fenster zu öffnen aber vergeblich
    hier der code
    Code:
    benutzer1 = driver.find_elements_by_class_name('name')
    
    
    for a in benutzer1:
          driver.execute_script("window.open('');")
          driver.switch_to.window(driver.window_handles[1])
          a.click()
          driver.close()
    bekomme aber besagte fehlermeldung was kann ich da machen ? dachte daran jedesmal wenn ich auf der gewollten seite war kann ich dann eins zurück und die elemente neu laden aber wie mache ich das dann dass ich nicht jedesmal benutzer[0] ansteuere ? sowas wie ein counter oder ?
    Normalerweise bedeutet das, dass du Elemente benutzen möchtest, die noch nicht vollständig geladen worden sind oder per Javascript noch geändert wurden. Im Regelfall kann man das verhindern, wenn du einfach auf das Element wartest:

    Code:
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    benutzer1 = driver.find_elements_by_class_name("name")
    #Die 10 steht für die Sekunden bis zum Timeout.
    wait = WebDriverWait(driver, 10)
    
    wait.until(EC.staleness_of(benutzer1))
     
    benutzer1 = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "name")))
    
    benutzer1.send_keys("Jetzt kann man was damit machen")
    Mehr dazu erfährst du in der Dokumentation: https://selenium-python.readthedocs.io/waits.html


    So müsste das theoretisch funktionieren, aber ist schwer zu sagen, wenn du kein Code postest.

  9. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    0u1law (24.08.2020)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 06.08.2020, 15:08
  2. Schleife mit Steuerelementen
    Von Karlito im Forum .NET Sprachen - Techniken
    Antworten: 6
    Letzter Beitrag: 03.10.2010, 11:54
  3. While schleife
    Von inmate im Forum Trashbox
    Antworten: 4
    Letzter Beitrag: 09.09.2009, 22:59
  4. For Schleife
    Von Brainfuck ++ im Forum C, C++
    Antworten: 5
    Letzter Beitrag: 12.11.2008, 22:16

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •