Tôi gặp vấn đề tương tự. Đối với tôi, tùy thuộc vào cấp phép của người dùng, một số liên kết, nút và các yếu tố khác sẽ không hiển thị trên trang. Một phần của bộ phần mềm của tôi đã kiểm tra các phần tử NÊN bị thiếu, bị thiếu. Tôi đã dành hàng giờ cố gắng để tìm ra điều này. Cuối cùng tôi đã tìm thấy giải pháp hoàn hảo.
Những gì nó làm, là bảo trình duyệt tìm kiếm bất kỳ và tất cả các yếu tố dựa trên được chỉ định. Nếu kết quả là 0
, điều đó có nghĩa là không có yếu tố nào dựa trên đặc điểm kỹ thuật được tìm thấy. Sau đó, tôi có mã thực thi một câu lệnh if để cho tôi biết nó không được tìm thấy.
Đây là trong C#
, vì vậy bản dịch sẽ cần phải được thực hiện Java
. Nhưng không nên quá khó.
public void verifyPermission(string link)
{
IList<IWebElement> adminPermissions = driver.FindElements(By.CssSelector(link));
if (adminPermissions.Count == 0)
{
Console.WriteLine("User's permission properly hidden");
}
}
Ngoài ra còn có một con đường khác bạn có thể đi tùy thuộc vào những gì bạn cần cho bài kiểm tra của mình.
Đoạn mã sau đang kiểm tra xem liệu một yếu tố rất cụ thể có tồn tại trên trang không. Tùy thuộc vào sự tồn tại của phần tử, tôi có bài kiểm tra thực thi nếu khác.
Nếu phần tử tồn tại và được hiển thị trên trang, tôi đã console.write
cho tôi biết và tiếp tục. Nếu yếu tố trong câu hỏi tồn tại, tôi không thể thực hiện kiểm tra tôi cần, đó là lý do chính đằng sau cần phải thiết lập điều này.
Nếu phần tử Không tồn tại và không được hiển thị trên trang. Tôi có cái khác trong nếu khác thực hiện kiểm tra.
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.
}
Tôi biết tôi hơi muộn khi trả lời OP. Hy vọng điều này sẽ giúp được ai đó!