Selenium Elemente lokalisieren nur nach inspect/untersuchen

Django, Flask, Bottle, WSGI, CGI…
Antworten
Holgersen
User
Beiträge: 1
Registriert: Dienstag 9. Januar 2024, 15:14

Hallo Zusammen, ich öffne per Python und edge webdriver eine Internet-Seite in edge und möchte dort Elemente lokalisieren (und später auslesen). Ich versuche die Lokalisierung per Attribut "aria-label", da sowohl das ID-Attribut als auch das class-Attribut ewig lange Name enthalten, die wohl dynamisch erzeugt, also auch veränderlich sind. Dabei passiert folgendes, für mich unerklärliches Verhalten: Das erste Element, dass ich lokalisiere, wird gefunden, dass zweite usw. nicht, Python steigt aus mit "NoSuchElementException". Wenn ich, nachdem Python die Internet-Seite geöffnet hat, in der ich Elemente lokalisieren möchte, auf dieser Seite (während Python läuft und also die Internetseite geöffnet ist), auf das erste der nicht gefundenen Elemente per rechter Maustaste klicke und dann "untersuchen" bzw. "inspect" auswähle, läuft Alles problemlos durch, es werden also alle Elemente problemlos gefunden! Dazu zwei Fragen: Wie kann das sein/was passiert da? und Was kann ich tun, damit Python meine Elemente findet/lokalisiert? Eventuell durch die Simulation des "rechte Maustaste + inspect" Klicks? Oder anders? Herzlichen Dank, Holgersen
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das hat nichts mit inspect zu tun, sondern damit, dass der Browser dann die Seite vollstaendig geladen hat. Das kann zB JavaScript sein, dass aktiv wird, und Dinge nachlaedt. Du musst also entsprechend warten, oder einfach robuster programmieren, und wiederholt die Elemente anfragen, bis sie da sind.
Antworten