Das ist der richtige Weg, um zu überprüfen, ob ein element vorhanden ist oder angezeigt auf einer Seite mit Selenium WebDriver mit Java?
Ich Teste eine web-Anwendung mit Selenium WebDriver und ich Frage mich, was ist die richtige Methode, um zu überprüfen, ob die Elemente vorhanden sind oder angezeigt werden. Ich in der Regel behaupten, dass alle Elemente auf der Seite vorhanden, sondern es prüft auch die versteckten Elemente, die in diesem Falle wäre auch zu prüfen, ob die Elemente werden nur angezeigt, wenn eine Aktion erfolgt ist. Zum Beispiel habe ich auf einen link klicken und andere Felder und Beschriftungen werden angezeigt, während Sie versteckt waren, vor. In diesem Fall sollte ich beide überprüfen, ob die Elemente vorhanden sind und auch wenn Sie sind oder nicht angezeigt werden soll, bevor und nachdem ein anderes element geklickt wird.
Ich Frage mich, was ist der richtige Weg, dies zu tun. Ist es zu viel bis überprüfen Sie alle Elemente auf der Seite ( vorausgesetzt, ich habe einige buttons, text-Felder, labels, links, usw.. in der Seite)?
Für den Zweck der Diskussion will ich einige code-snippets. Um zu überprüfen, dass Elemente vorhanden sind, auf der Seite verwende ich folgenden Schnipsel:
public boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
Um zu überprüfen, ob ein element angezeigt wird, verwende ich folgenden Schnipsel:
public boolean isElementDisplay(By by) {
if (driver.findElement(by).isDisplayed()) {
return true;
} else
return false;
}
Zweck der Prüfung dieser Anwendung ist zu prüfen, ob die Elemente vorhanden und werden korrekt angezeigt. Bin ich das richtige zu tun, hier? Bitte geben Sie mir Ihre Sicht der Dinge. Ich habe vor kurzem begonnen mit Selenium WebDriver und der einzige in meiner Firma, die so etwas tut...ich glaube nicht, dass irgendjemand sich zu drehen. Jede Antwort wird geschätzt.
- Ich denke, es ist kein problem im code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Probleme mit ihm, außer wenn Sie an Ihren "checkIfDisplayed" - Methode auf ein element, das nicht vorhanden ist in den ersten Platz, es wird eine Ausnahme ausgelöst. Ich würde es ändern auf dieser:
"(Dies ist nicht code, der kompiliert wird, ich bin ein C# - Mann, aber Sie sollten sehen, was ich meine)
Kann es einen leichten Leistungseinbruch, aber insgesamt ist das, was Sie tun, ist völlig in Ordnung, sowieso.
Überprüfen element Existenz würde ich eher verwenden,
Ich nicht wirklich auf die Idee, die hinter Ihrer checkIfDisplayed Funktion. Es gibt das Ergebnis WebElemet ist isDisplayed () - Methode ohne Zugabe von neuen Funktionen...
BEARBEITEN
Bisher Arran, sofern die beste Antwort. Nur, um es zu ändern ein wenig:
Ich glaube allerdings, dass es besser wäre zu nennen isElementPresent und isDisplayed getrennt. Auf diese Weise werden Sie wissen, warum der test fehlgeschlagen ist (wenn diese verursacht wurde durch das element Existenz oder Sichtbarkeit)
FirstOrDefault
auf Sie.Ich den gleichen Ansatz verwenden (ich meine die gleichen Methoden). Aber es ist wichtig, zwei Dinge zu verstehen.
Einige element kann vorhanden sein, aber nicht sichtbar.
Also für den Zweck zu überprüfen, ob element vorhanden ist, können wir die Methode aufrufen,
Aber den Nachteil, isElementPresent Methode kann es zeigen sich Elemente im DOM-Modell, die sind nicht auf der Seite sichtbar und somit nicht accesssible mit webDriver. So in diesem Fall zusätzliche Kontrolle hilft uns:
Hoffe, die Dinge kommen jetzt klar)
Ich würde sagen, dass Ihre erste Methode sieht einfach nur gut.
Den 2. so wird ärger geben, wenn die findElement-Aufruf geben Sie die zu keinem Ergebnis.
Sollten Sie einen check, wenn es ein element gefunden und dann prüfen, ob es angezeigt:
Beachten Sie auch: Sie ignorieren die Möglichkeit, dass mehr als ein element den Kriterien entspricht, gegeben durch die Instanzen. Finden Sie die findElemts () - Methode.
Können Sie auch kombinieren beide Methoden wie pro Ihre Anforderung, wie folgt,