2017-10-09 3 views
0

Ich verwende Python 3.6 auf einem iMac (Betriebssystem: Sierra). Ich verwende ChromeDriver 2.33 und die neueste Version des Selenium-Pakets (von PIPY).python selen chromedriver xpath "kein solches Element"

HTML Code

ich die ersten drei Zellen (TH-Tags) zugreifen können innerhalb der Reihe (TR-Tag) eingebettet: Ich zugreifen möchten (mit find_element_by_xpath) die Säulenelemente einer Tabellenzeile, wie unten dargestellt. Wenn ich zur 4. Zelle (TH-Tag) komme, meldet der Chrome-Treiber (via Python) 'Kein solches Element'.

Ich warte 10 Sekunden nach dem Laden der Seite vor dem Versuch, auf das Element zugreifen (auch ich kann Zelle 1-3 für diese Zeile überschreiten), so ist dies offensichtlich kein Timing-Problem.

Das Webelement (Zelle # 4) ist im Webbrowser sichtbar. Außerdem habe ich die Web-Element-Suchfunktion in Chrome-Entwickler verwendet, um den X-Pfad zu überprüfen (und es geht gut aus). Offensichtlich besteht das Problem nicht darin, dass das Element nicht sichtbar ist.

Ich frage mich, was das Problem ist? Oder zumindest möchte ich eine Empfehlung, wie das zu debuggen ist?


In Reaktion auf die Kommentare: Ich benutze das folgende Python Aufruf

CHROMEDRIVER.find_element_by_xpath ("// * [@ id =" mainContent_ugReservationGrid_tableGridParent "]/div 1/table/thead/tr [ 3]/th [INDEX] ") ' wo' INDEX 'ist meine Schleife-Variable .. 1-3 funktioniert gut, aber wenn die Schleife Variable bekommt 4 bekomme ich die Ausnahme' No Such Element '.


ersetzt Chrome mit Firefox & geckodriver: Es scheint ein Problem mit der Chrome-Schnittstelle. Firefox funktioniert wie erwartet ohne weitere Änderungen.

+0

Mit welchem ​​Anruf erhalten Sie die ersten drei Zellen? Um zu debuggen, würde ich anfangen zu prüfen, ob Sie in der Lage sind, alle TR-Elemente zu erhalten, indem Sie find_elements_by_tag_name verwenden (oder was auch immer Python für diesen Aufruf verwendet, ich benutze C#). Erstellen Sie eine Funktion, um alle Elemente auf der Seite mit dem TR-Tag zu erhalten, und drucken Sie sie auf Ihrer Konsole aus, um sicherzustellen, dass alle zurückgegeben werden, und gehen Sie von dort aus weiter. – JOberloh

Antwort

0

Wenn bei der Referenzierung der anderen Tabellenzellen keine Zeitprobleme auftreten, wäre es sinnvoll, den von Ihnen verwendeten xpath für das Element, das Sie nie zu erreichen scheinen, zu überprüfen.

Obwohl ich meine gesamte Automatisierung hauptsächlich über Chrome betreibe, verwende ich gelegentlich Firefox mit dem FirePath-Plugin zur Auswahl/Validierung von Locators auf einer Seite. Dieses Plugin ist besonders nützlich, da es alle Übereinstimmungen für einen bestimmten Locator liefert. Ein Grund, warum die Automatisierung fehlschlägt (oder sich zumindest unvorhersehbar verhält), liegt darin, dass ein Locator mehrere Übereinstimmungen aufweisen kann.

Verwandte Themen