2011-11-04 352 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