2011-11-04 3 views
5

Selenium IDE/Webdriver에서 모든 입력 텍스트 필드가 비어 있는지 확인하고 싶습니다. "text"또는 "textarea"특성을 가진 모든 HTML 입력 요소를 반환 할 수있는 메서드가 있으면 모든 요소를 ​​반복하고 텍스트 컨텍스트가 비어 있는지 확인할 수 있습니다.Selenium에서 모든 텍스트 입력 필드가 비어 있는지 확인하십시오.

하지만 그런 방법을 찾을 수 없습니다. 다른 어떤 방법으로이 작업을 수행 할 수 있습니까?

감사합니다.

답변

1

해 보았습니다.

driver.findElements(By) 

이렇게하면 지정한 로케이터를 사용하여 페이지에서 사용할 수있는 모든 웹 요소 목록을 얻을 수 있습니다.

2

다음은 어떻게 사용하나요? 어떤 경우에는 입력 텍스트와 텍스트 영역 및 암호를 모두 포착하고 이러한 요소를 IWebElements 목록에 저장합니다. 그런 다음 목록을 반복하고 원하는 내용을 확인할 수 있습니다.

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는 입력 필드에서 작동하지 않으므로 값 속성을 가져야합니다.

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 this (if (field.getAttribute ("value"). isEmpty())'와 같은 ** 조건이 ** 변경되면이를 가져 왔습니다. '! = null' 또는'! = ""조건이 나를 위해 작동하지 않았습니다. – user123

관련 문제