2011-11-04 30 views
5

Tôi muốn xác minh rằng tất cả các trường nhập văn bản đều trống với Selenium IDE/Webdriver. Giả sử nếu có một phương thức có thể trả về tất cả các phần tử đầu vào HTML với thuộc tính "văn bản" hoặc "văn bản", thì tôi có thể lặp qua tất cả chúng và kiểm tra xem ngữ cảnh văn bản có trống hay không.Xác minh rằng tất cả các trường nhập văn bản đều trống với Selenium

Nhưng tôi không thể tìm thấy phương pháp như vậy. Tôi có thể làm những cách nào khác?

Cảm ơn

Trả lời

1

bạn đã thử.

driver.findElements(By) 

Điều này sẽ cung cấp cho bạn danh sách tất cả các trang web có sẵn trên trang bằng cách sử dụng định vị bạn đã chỉ định.

2

Đây là cách tôi thực hiện. Tôi nắm bắt tất cả các văn bản đầu vào và textarea và mật khẩu trong một số trường hợp và lưu trữ các yếu tố đó trong một danh sách các IWebElements. Sau đó, tôi có thể lặp qua danh sách và xác minh bất cứ điều gì tôi muốn.

private List<IWebElement> GetTextFields(IWebDriver driver) 
{ 

List<IWebElement> textFields; 

try{ 
    textFields.AddRange(driver.FindElements(By.CssSelector("input[type='text']").ToList()); 
} 
catch { 
    //throw exception or log exception 
} 

try { 
    textFields.AddRange(driver.FindElements(By.TagName("textarea").ToList()); 
} 
catch { 
    //throw exception or log exception 
} 

textFields.RemoveRange(i => !i.Displayed); //removes all hidden fields 

return textFields 
} 

dưới đây là cách bạn có thể xác minh không có văn bản nào trong danh sách đó.

foreach(IWebElement element in textFields) 
{ 
if(element.text != "") 
{ 
    //log error or throw exception 
} 
} 
3

Hãy xem xét .text sẽ không hoạt động trên trường nhập và bạn PHẢI nhận thuộc tính giá trị.

bool areAllFieldsClear() 
{ 
    var myFields = driver.FindElements(By.Xpath("//input")); 
    foreach(var field in myFields) 
    { 
     if(field.GetAttribute("value") != "") { 
      return false; //field.Clear(); maybe? 
    } 
    return true; 
} 
+0

Xin lỗi vì đã đến trễ trò chơi. Đến đây tìm kiếm cái gì khác. – Highstead

+0

Tôi nhận được nó khi thay đổi ** nếu ** điều kiện như thế này 'if (field.getAttribute (" value "). IsEmpty())'. Các điều kiện '! = Null' hoặc'! = "" 'Không hoạt động đối với tôi. – user123

Các vấn đề liên quan