Selenium findet Xpath nicht

Django, Flask, Bottle, WSGI, CGI…
Antworten
fKonrad
User
Beiträge: 8
Registriert: Donnerstag 4. Oktober 2018, 11:18

Hallo,
ich habe angefangen ein Programm mit Selenium zu schreiben. Es kann sich jetzt schon ohne Probleme bei Instagram anmelden. Dann kommt allerdings ein Pop-Up "Benachrichtigungen aktivieren?" mit zwei Buttons "Aktivieren" und "Jetzt nicht".
Ich möchte das Programm dazu bringen, einen Button zu betätigen (Jetzt nicht). Ich benutze dafür "driver.find_element_by_xpath("#xpath").click" . Den Xpath habe ich mithilfe der "Untersuchen" Option bei Google Chrome kopiert. Daher denke ich, dass der Xpath mit hoher Wahrscheinlichkeit korrekt ist. Das Programm findet diesen jedoch nicht und gibt die dementsprechende Fehlermeldung. Woran kann das liegen und habt ihr eventuell Alternativen, diesen Button zu betätigen?
Danke.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ist das nicht eine Browser-Einstellung? Die Webseite erklaert, dass sie Benachrichtigungen verschicken will (wie genau weiss ich nicht, explizit oder implizit durch die API-Nutzung), und der Browser stoppt diesen Versuch & holt Feedback vom Benutzer ein. Ich hoffe sehr, dass sich das *NICHT* fernsteuern laesst, sonst wuerde das ja bedeuten, dass eine Webseite das einfach selbst einschaltet.

Also musst du ggf. dem Browser vorher schon die Erlaubnis irgendwie geben, bzw. schauen, ob es da spezielle Modi/Konfigurationen gibt, womit der Browser diese Frage immer beantwortet.
fKonrad
User
Beiträge: 8
Registriert: Donnerstag 4. Oktober 2018, 11:18

__deets__ hat geschrieben: Montag 8. Oktober 2018, 13:09 Ist das nicht eine Browser-Einstellung? Die Webseite erklaert, dass sie Benachrichtigungen verschicken will (wie genau weiss ich nicht, explizit oder implizit durch die API-Nutzung), und der Browser stoppt diesen Versuch & holt Feedback vom Benutzer ein. Ich hoffe sehr, dass sich das *NICHT* fernsteuern laesst, sonst wuerde das ja bedeuten, dass eine Webseite das einfach selbst einschaltet.

Also musst du ggf. dem Browser vorher schon die Erlaubnis irgendwie geben, bzw. schauen, ob es da spezielle Modi/Konfigurationen gibt, womit der Browser diese Frage immer beantwortet.
Ich glaube ich habe das schlecht beschrieben. Es handelt sich hier nicht um so ein Pop-Up, welches ein weißer Balken oben an der Website ist. Es sieht mir hier nach eine Art Pop-Up von der Seite selber aus. Ich würde gerne einen Screenshot hier einfügen, weiß allerdings nicht wie das geht.
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@fKonrad: Bilder kann man beispielsweise bei Imgur hochladen und dann hier mit dem [ img ] Tag in den Beitrag einfügen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
fKonrad
User
Beiträge: 8
Registriert: Donnerstag 4. Oktober 2018, 11:18

Bild
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Klassennamen sehen sehr "generiert" aus. Sind die immer gleich, oder ändern die sich bei jedem Seitenaufruf?
fKonrad
User
Beiträge: 8
Registriert: Donnerstag 4. Oktober 2018, 11:18

Sirius3 hat geschrieben: Montag 8. Oktober 2018, 14:29 Die Klassennamen sehen sehr "generiert" aus. Sind die immer gleich, oder ändern die sich bei jedem Seitenaufruf?
Diese sind immer gleich. Zurück zu meiner Frage: Kann ich das mithilfe des Xpath's machen oder fallen euch noch Alternativen ein? (mit selenium)
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Noe, xpath ist da schon das Mittel der Wahl. Du hast doch einen schoenen Klassenamen fuer den Button.
fKonrad
User
Beiträge: 8
Registriert: Donnerstag 4. Oktober 2018, 11:18

__deets__ hat geschrieben: Montag 8. Oktober 2018, 14:38 Noe, xpath ist da schon das Mittel der Wahl. Du hast doch einen schoenen Klassenamen fuer den Button.
Und wie sähe dann der Code aus? Was genau muss ich eingeben?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sowas laesst sich ja mit der Vielzahl an XPath-Tutorials rausfinden, oder?

https://www.guru99.com/xpath-selenium.html

Da stehen ja Beispiele fuer Auswahlen basierend auf einem class-Attribut.
fKonrad
User
Beiträge: 8
Registriert: Donnerstag 4. Oktober 2018, 11:18

__deets__ hat geschrieben: Montag 8. Oktober 2018, 15:13 Sowas laesst sich ja mit der Vielzahl an XPath-Tutorials rausfinden, oder?

https://www.guru99.com/xpath-selenium.html

Da stehen ja Beispiele fuer Auswahlen basierend auf einem class-Attribut.
Vielen Dank.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

fKonrad hat geschrieben: Montag 8. Oktober 2018, 14:36Diese sind immer gleich.
die Frage ist nur, für wie lange...
Antworten