Prüfen ob element vorhanden
Gibt es trotzdem, um zu überprüfen, ob ein element vorhanden ist in Selenium web driver? Ich versuche es mal mit diesem code:
if @driver.find_element(:link, "Save").displayed? == true
aber es wird brechen in Ausnahme, das ist nicht das, was ich erwartet, da ich noch, dass das Skript weiter ausgeführt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
@driver.find_element
wirft eine Ausnahme genanntNoSuchElementError
.So schreiben Sie Ihre eigene Methode, die verwendet try catch block und true zurückgeben, wenn es keine Ausnahme, und false, wenn es eine Ausnahme.
Ich bin kein Ruby-Experte und kann einige syntax-Fehler, aber Sie bekommen die Allgemeine Idee:
Dieser code nicht werfen
NoSuchElementException
Aber diese Methode wird "hängen" für eine Weile, wenn Sie
implicitlyWait
mehr als null und es gibt keine Elemente auf der Seite.Das zweite Problem - wenn das element auf der Seite vorhanden ist aber nicht angezeigt, erhalten Sie
true
.Zu umgehen versuchen, zu erstellen Methode:
Wenn es erwartet wird, dass das element auf der Seite sein sollte, egal, was ich finden es nützlich, um ein Selen warten-Objekt mit
element.displayed?
, anstattbegin/rescue
:Dies ist nützlich in Fällen, in denen Teile der Seite länger dauern, um richtig zu leisten, als andere.
Ich bin mit
selenium-webdriver version 3.14.0
freigegeben früher in diesem Monat. Ich habe versucht, setzen Sie ein Häkchen auf@web_driver_instance.find_element(:xpath, "//div[contains(text(), 'text_under_search')]").displayed?
mit:Oben ist fehlgeschlagen mit
NoSuchElementError
Ausnahme also versuchte ich mit unten:Dieser auch nicht Arbeit für mich und konnte wieder mit
NoSuchElementError
Ausnahme.Da text Präsenz ich war die überprüfung war wahrscheinlich einmalig auf die Seite, versuchte unten und dies funktionierte für mich:
Lösung #1
=> Generic ruby-Methode
Lösung #2
=> Generic ruby-Methode
Lösung #1
=> deklarierte Variablen in der page-Klasse
=> Generic ruby-Methode
Schauen Sie bitte in den folgenden link, wird es geben Ihnen die Lösung.
http://code.google.com/p/selenium/wiki/RubyBindings