Die Homepage der Webanwendung, die ich teste, hat einen Ladebildschirm, wenn Sie sie zum ersten Mal laden, dann erscheint ein Benutzername/Passwort-Feld. Es ist ein dynamisch generiertes UI-Element und der Cursor befindet sich standardmäßig im Feld Benutzername.Webseite in einer dynamischen Seite, Treiberinteraktionen mit Selenium (Python) nicht möglich
Ich sah mich um und jemand schlug vor, Aktionsketten zu verwenden. Wenn ich Aktionsketten verwende, kann ich sofort Text in die Felder Benutzername und Passwort eingeben und dann die Eingabetaste drücken und die nächste Seite wird geladen. Leider sind Aktionsketten aufgrund meiner speziellen Aufstellung keine langfristige Lösung für mich.
Wenn ich die webdriver find_element_by_id
benutze ich bin in der Lage, es zu lokalisieren und ich bin nicht in der Lage zu send_keys
auf das Element obwohl, weil es irgendwie nicht sichtbar ist. Ich erhalte
selenium.common.exceptions.ElementNotVisibleException: Nachricht: Element nicht sichtbar.
Ich bin auch nicht in der Lage, auf das Feld zu klicken oder anderweitig damit zu interagieren, ohne diesen Fehler zu bekommen.
Ich habe auch versucht, die Elemente mit anderen Mitteln, wie "XPaths" und CSS zu identifizieren und zu interagieren, ohne Erfolg. Sie sind immer not visible
.
Seltsamerweise funktioniert es mit dynamischen Seitentiteln. Wenn die Seite zuerst geladen wird, ist es Loading...
und wenn es fertig ist, ist es Login
. Der Treiber gibt den aktuellen Titel zurück, wenn driver.title
aufgerufen wird.
Hat jemand einen Vorschlag?
Ok bestätige mich, dass die Ladeanzeige auf der Anmeldeseite erscheint, wenn du ein Element findest ??? –
Ja, es ist da. Ich lege eine time.sleep (20), bevor ich versuche, mit ihr zu interagieren, was ausreichend Zeit für das Erscheinen der Login-Box ist. – JRodge01
tatsächlich presence_of_element_located des Elements nur Element vorhanden auf dem DOM Überprüfung oder nicht, während visibility_of_element_located beide vorhanden und sichtbar Überprüfung bedeutet presence_of_element_located auch in der Lage verstecktes Element sowie sichtbares Element zu finden, während der Sichtbarkeit deshalb presence_of_element_located funktioniert nur sichtbar wird. –