2011-11-04 76 views
5

我想驗證Selenium IDE/Webdriver中的所有輸入文本字段是否爲空。假設如果有一種方法可以返回具有屬性「text」或「textarea」的所有HTML輸入元素,那麼我可以遍歷所有這些元素並檢查文本上下文是否爲空。使用Selenium驗證所有文本輸入字段爲空

但我找不到這樣的方法。我可以通過其他方式來做到這一點?

謝謝

回答

1

你試過了。

driver.findElements(By) 

這會給你一個列表,使用指定的定位器u在頁面上可用的所有webelements。

2

以下是我的工作方式。在某些情況下,我會捕獲所有輸入文本和textarea和密碼,並將這些元素存儲在IWebElement的列表中。然後我可以遍歷列表並驗證我想要的任何內容。

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 
} 

下面是如何驗證沒有該列表的文本。

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

請考慮.text不會在輸入字段上工作,並且您必須獲取value屬性。

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

對不起,遲到了遊戲。遇到這個尋找別的東西。 – Highstead

+0

我在改變時得到了**如果**這樣的條件'if(field.getAttribute(「value」)。isEmpty())'。 '!= null'或'!=「」'條件對我來說不起作用。 – user123