2017-12-30 40 views
-1

Ich versuche, ein Element mit XPath zu finden. Es funktioniert einwandfrei in Chrome, aber nicht so sehr im Internet Explorer.Warum funktioniert XPath nicht im IE?

On Chrome, es funktioniert gut, aber wenn ich versuche, es für den IE zu laufen, ich die folgende Fehlermeldung erhalten, die

Exception in thread „main“ org.openqa.selenium.NoSuchElementException sagt: Kann nicht Finde Element mit xpath == html/body/form/div [3]/div [2]/div/div [2]/a

Was könnte das verursachen? Ich habe bereits die häufigsten IE-Fehler behoben, wie die Einstellung "Protected Mode" und auch "Zoom" -Funktionalität.

+1

Bitte lesen Sie [fragen], vor allem der Teil über [MCVE], und [Wie viel Forschungsaufwand wird erwartet?] (Https://meta.stackoverflow.com/questions/261592/how-much-forschungsaufwand-is-expected-of-stack-overflow-users) Dies wird Ihnen helfen, Ihre eigenen Programme zu debuggen und Probleme für sich selbst zu lösen. Wenn Sie dies tun und immer noch feststecken, können Sie zurückkommen und Ihren MCVE, das, was Sie ausprobiert haben, und das Ausführungsergebnis einschließlich aller Fehlermeldungen posten, damit wir Ihnen besser helfen können. Stellen Sie auch einen Link zu der Seite und/oder dem relevanten HTML bereit. – JeffC

+0

Sie versuchen eindeutig einen absoluten XPath zu verwenden, der spröde ist. Versuchen Sie, einen logischen X-Pfad zu verwenden. – DebanjanB

+0

Nur weil ein XPath in einem Browser funktioniert, heißt das nicht, dass es in einem anderen Browser funktioniert. Sie müssen sehen, ob sich das HTML-Layout zwischen den beiden Browsern etwas ändert –

Antwort

1

Da die eingebettete XPath-Engine im Browser von jedem Browser-Hersteller selbst implementiert wird, haben sie tatsächlich unterschiedliche Implementierungen. Für earier IE, wie 6 und 7 ist keine XPath-Engine einzubetten. Wenn Sie XPath in einem Browser verwenden, der keine XPath-Engine einbindet, verwendet Selenium eine eigene XPath-Bibliothek, um Ihren XPath auszuführen. Die Selenuim Xpath-Bibliothek implementiert nicht alle XPath-Funktionen und unterscheidet sich auch von der Xpath-Engine des anderen Browsers.

Zurück zu Ihrer Frage, verpassten Sie salsh am Anfang, sollte es

/html/body/form/div[3]/div[2]/div/div[2]/a 

sein Weil HTML Knoten die Wurzel des HTML-DOM-Baum ist, so dass Sie / am Kopf setzen sollte Ihr XPath Start zu sagen, von Wurzelknoten

Oder können Sie HTML in XPath auslassen: //body/form/div[3]/div[2]/div/div[2]/a

, weil es ein truthy HTML Knoten ist die Wurzel von HTML-DOM-Baum auf jede Art von Browser.

1

Konvertieren Sie Ihren XPath in ein CSS. Xpath kann zwischen Browsern variieren, wobei CSS-SELECTORS oft der gleiche Browser sind. Eine Inspektion mit Chrom ist also kein Problem.

html> body> form> div: n-te-Kind (3)> div: n-te-Kind (2)> div> div: n-te-Kind (2)> a

Auch XPaths und IE ist bekannt für ihre Probleme. Wenn Sie XPath verwenden müssen, lesen Finding an elements XPath using IE Developer tool

0

Eine Sache, können Sie versuchen, mithilfe von XPath firebug und firepath Addons von Firefox wird immer und auch d.h Thread.sleep() zwischen der Inspektion der Ladezeit Elemente durch die Erhöhung. Die erste Idee, die von mir vorgeschlagen wird, funktioniert zumindest für mich. Lassen Sie mich im Falle irgendwelcher Bedenken wissen

Verwandte Themen