Ich habe ein Problem - ich verwende den Selenium (Firefox) Web-Treiber, um eine Webseite zu öffnen, auf ein paar Links zu klicken usw. und dann einen Screenshot aufzunehmen.
Mein Skript läuft gut über die CLI, aber wenn es über einen Cronjob ausgeführt wird, kommt es nicht über den ersten find_element () -Test hinaus. Ich muss ein Debug hinzufügen oder etwas, um herauszufinden, warum es fehlschlägt.
Grundsätzlich muss ich auf einen Anmeldeanker klicken, bevor ich zur Anmeldeseite gehe. Das Konstrukt des Elements ist:
<a class="lnk" rel="nofollow" href="/login.jsp?destination=/secure/Dash.jspa">log in</a>
Ich verwende die Methode find_element By LINK_TEXT:
login = driver.find_element(By.LINK_TEXT, "log in").click()
Ich bin ein bisschen ein Python Noob, also kämpfe ich ein bisschen mit der Sprache ...
A) Wie überprüfe ich, ob der Link tatsächlich von Python aufgenommen wird? Soll ich try / catch block verwenden?
B) Gibt es eine bessere / zuverlässigere Möglichkeit, das DOM-Element zu lokalisieren als mit LINK_TEXT? In JQuery können Sie beispielsweise einen spezifischeren Selektor $ ('a.lnk: enthält (Login)') verwenden. Do_something ();
Ich habe das Hauptproblem gelöst und es war nur ein Fingerproblem - ich habe das Skript mit falschen Parametern aufgerufen - Einfacher Fehler.
Ich möchte noch einige Hinweise, wie Sie überprüfen können, ob ein Element vorhanden ist. Auch ein Beispiel / eine Erklärung für implizite / explizite Wartezeiten anstelle eines beschissenen Aufrufs von time.sleep ().
Prost, ns