Aynı sorunu yaşadım. Benim için, bir kullanıcının izin düzeyine bağlı olarak, bazı bağlantılar, düğmeler ve diğer öğeler sayfada gösterilmez. Paketimin bir kısmı, eksik olması gereken öğelerin eksik olduğunu test ediyordu. Bunu anlamaya çalışmak için saatler harcadım. Sonunda mükemmel çözümü buldum.
Bunun yaptığı, tarayıcıya belirtilen tüm elemanları aramasını söyler. Eğer sonuçlanırsa 0
, bu spesifikasyona dayalı hiçbir eleman bulunmadığı anlamına gelir. Sonra kodu bulunamadı bana haber vermek için bir if deyimi yürütmek var.
Bu içeride C#
, bu yüzden çevirilerin yapılması gerekiyor Java
. Ama çok zor olmamalı.
public void verifyPermission(string link)
{
IList<IWebElement> adminPermissions = driver.FindElements(By.CssSelector(link));
if (adminPermissions.Count == 0)
{
Console.WriteLine("User's permission properly hidden");
}
}
Testiniz için neye ihtiyacınız olduğuna bağlı olarak atabileceğiniz başka bir yol daha var.
Aşağıdaki snippet, sayfada çok özel bir öğenin olup olmadığını kontrol ediyor. Elemanın varlığına bağlı olarak testin bir if ifrlemesini yürütmesini istiyorum.
Öğe varsa ve sayfada görüntülenirse, console.write
bana bildirip devam ettim . Söz konusu öğe mevcutsa, ihtiyacım olan testi uygulayamıyorum, bu da bunu ayarlamanın arkasında yatan temel sebep.
Öğe Yoksa ve sayfada görüntülenmiyorsa. Başka bir test yürütmek if var.
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.
}
OP'ye cevapta biraz geç kaldığımı biliyorum. Umarım bu birine yardımcı olur!