Webdriver Automation Nicht zu finden-element mit Hilfe von xpath
Umgebung:
Eclipse - Java - Junit - firefox-webdriver
Screenshot url : https://www.dropbox.com/s/26fl2l1y1mkpxiz/Screenshot%202014-01-06%2001.52.43.png
Ich versuche zum testen einer Webseite aber nicht zu finden-element (sieht aus wie ein Knopf).
Firebug xpath ist :.//*[@id='DERIVED_REGFRM1_LINK_ADD_ENRL$118$']
Mit dem gleichen Xpath funktioniert es einwandfrei mit selenium IDE (Durch Aufnahme).
Ist es html-code ist:
< td valign="top" align="left" (bracket)
< div id="win0divDERIVED_REGFRM1_LINK_ADD_enrl$118$"
< span class="SSSBUTTON_CONFIRMLINK" title="sich in den Klassen"(Klammer)
<a id="DERIVED_REGFRM1_LINK_ADD_ENRL$118$" class="SSSBUTTON_CONFIRMLINK"
href="javascript:submitAction_win0(document.win0,
'DERIVED_REGFRM1_LINK_ADD_ENRL$118$');"
tabindex="192" ptlinktgt="pt_peoplecode"
name="DERIVED_REGFRM1_LINK_ADD_ENRL$118$">Proceed to Step 2 of 3</a>
Habe ich versucht meine Feststellung.xpath, id, etc.
eg: driver.findElement(By.xpath("//*[@id='DERIVED_REGFRM1_LINK_ADD_ENRL$118$'] ")).click();
Was ist die richtige Lösung?
- Ist dies eine öffentliche Seite? wenn ja könnten Sie bitte zeigen Sie es? Könntest du bitte die Fehlermeldung (stacktrace) auf Ihre Frage?
- Es könnte sein, dass Selen versucht zu finden-element vor dem element auf der Seite vorhanden. Haben Sie versuchen, fügen Sie warten?
- Ich habe einige Zweifel über die Verwendung von id. Sind Sie sicher, dass die id immer gleich bleibt und sich nicht dynamisch ändert (z.B. wie in ExtJS-Anwendungen)?
- Mit dem gleichen Xpath funktioniert es einwandfrei mit selenium IDE (Durch Aufnahme). @Ittiel: es ist eine private Seite, die stack-trace zeigt element nicht gefunden Fehler.
- Ich benutzte thread.sleep(20000), aber es ist trotzdem nicht funktioniert
- ich dachte auch das gleiche, aber jedesmal, wenn id bleibt die gleiche. Ich habe auch versucht mit beginnt-mit aber immer noch nicht funktioniert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen mit CSS
Es ist möglich das page-Objekt hat nicht geladen an der Zeit, Webdriver ist, nach ihm zu suchen. Suchen Sie nach dem Schritt der Fehler aufgetreten ist, und einen impliziten warten/schlafen, bevor es.
Wenn Webdriver ist in der Lage, die Seite zu finden-Objekts, nachdem Sie wissen, dass es eine Seite geladen Problem.
Ich denke, es kann sein, weil ein element, das Sie versuchen, zu finden, ist nicht präsent auf der Seite im moment-Treiber sucht. Eine Lösung wäre zu definieren pageLoadTimeout. Sie können tun, dass Sie mit dieser code-Zeile:
Sollten Sie erhöhen Sie die Zeit, wenn die Seite lädt länger.
Zweite Sache, die ich benutze, um sicherzustellen, Fahrer wartet, während die Seite geladen ist (vor allem wenn der Inhalt dynamisch geladen, einige Skripte) ist benutzerdefinierte waitForPageLoaded Funktion, die aufgerufen werden sollen, nachdem Ihre webdriver öffnet bestimmte Seite oder klickt auf den button/link, der die Seite öffnen Aktion.
Beispiel der Funktion:
Obwohl dies nicht der beste Ansatz, eine weitere mögliche Lösung wäre, zu versuchen, mit SeleniumIDE manuell ein Skript aufzeichnen Klick auf die Schaltfläche.
Wenn Sie im Stande sind, klicken Sie auf die Schaltfläche Wiedergabe, kopieren Sie einfach den block mit text und implementieren es in Ihre webdriver Skript. Gegeben, Sie sind die genau gleichen, ist Ihr Problem gelöst werden sollte.
#