Ich hatte das gleiche Problem. Abhängig von der Berechtigungsstufe eines Benutzers werden einige Links, Schaltflächen und andere Elemente für mich nicht auf der Seite angezeigt. Ein Teil meiner Suite war das Testen, dass die Elemente, die fehlen sollten, fehlen. Ich habe stundenlang versucht, das herauszufinden. Ich habe endlich die perfekte Lösung gefunden.
Dies weist den Browser an, nach allen angegebenen Elementen zu suchen. Wenn dies zu einem Ergebnis 0
führt, wurden keine Elemente gefunden, die auf der Spezifikation basieren. Dann lasse ich den Code eine if-Anweisung ausführen, um mich wissen zu lassen, dass sie nicht gefunden wurde.
C#
Da dies der Fall ist , müssten Übersetzungen vorgenommen werden Java
. Sollte aber nicht zu schwer sein.
public void verifyPermission(string link)
{
IList<IWebElement> adminPermissions = driver.FindElements(By.CssSelector(link));
if (adminPermissions.Count == 0)
{
Console.WriteLine("User's permission properly hidden");
}
}
Es gibt auch einen anderen Weg, den Sie einschlagen können, je nachdem, was Sie für Ihren Test benötigen.
Das folgende Snippet überprüft, ob auf der Seite ein ganz bestimmtes Element vorhanden ist. Abhängig von der Existenz des Elements lasse ich den Test ein if else ausführen.
Wenn das Element vorhanden ist und auf der Seite angezeigt wird, habe ich es console.write
mir mitgeteilt und gehe weiter. Wenn das betreffende Element vorhanden ist, kann ich den benötigten Test nicht ausführen. Dies ist der Hauptgrund für die Einrichtung.
Wenn das Element nicht vorhanden ist und nicht auf der Seite angezeigt wird. Ich habe das else im if else den Test ausführen.
IList<IWebElement> deviceNotFound = driver.FindElements(By.CssSelector("CSS LINK GOES HERE"));
//if the element specified above results in more than 0 elements and is displayed on page execute the following, otherwise execute whats in the else statement
if (deviceNotFound.Count > 0 && deviceNotFound[0].Displayed){
//script to execute if element is found
} else {
//Test script goes here.
}
Ich weiß, dass ich bei der Antwort auf das OP etwas spät dran bin. Hoffentlich hilft das jemandem!