Selenium2(WebDriver)_WebElement 요소 객체의 존재 여부를 판단하는 방법

7076 단어 webdriver
1.selenium에서 원소를 찾고 원소가 존재하지 않으면 NoSuchElementException을 던져서 테스트에 실패하지만 때때로 우리는 페이지 원소가 존재하지 않는 것을 확보해야 우리의 정확한 검수 조건 아래의 방법으로 페이지 원소가 존재하는지 판정할 수 있다.
 1 public boolean doesWebElementExist(WebDriver driver, By selector)
 2 { 
 3 
 4         try 
 5         { 
 6                driver.findElement(selector); 
 7                return true; 
 8         } 
 9         catch (NoSuchElementException e) 
10         { 
11                 return false; 
12         } 
13 }         

 
2. 일반적으로 이런 응용 장소가 있다. 예를 들어 우리가 한 사이트에서 로그인에 성공했는지 확인하려면 로그인한 후에 해당하는 요소를 표시했는지 판단할 수 있다.
WebElement linkUsername = driver.findElement(By.xpath("//a[contains(text(),"+username+")]"));
return linkUsername.isDisplayed();
 
이 방법의 전제는 이 원소가 이전에 이미 존재했기 때문에 표시되는지 아닌지만 판단해야 한다는 것이다.
 
현재 페이지 요소가 존재하지 않습니다. 즉driver를 통해서입니다.findElement은 시간 초과 후에만 NoSuchElementException의 이상을 받을 수 있습니다.
 
따라서 다음과 같은 방법으로 해결할 수밖에 없다.
 1 boolean ElementExist (By Locator )
 2 {
 3   try
 4   {
 5     driver.findElement( Locator );
 6     return true;
 7   }
 8   catch(org.openqa.selenium.NoSuchElementException ex)
 9   {
10       return false;
11   }
12 }

그러나 이 방법은 여전히 이상적이지 않다. 이런 두 가지 문제가 있다.
1. 이 방법은 어느 페이지 페이지에도 속하지 않기 때문에 이 기능 함수를 지원하기 위해 프레임워크의 변경을 추가로 해야 한다. 그렇지 않으면 이 함수를 사용하는 페이지 클래스마다 한 번씩 써야 한다. 
2. 시간 초과를 기다려야 결과를 알 수 있고 이 함수를 자주 사용해야 할 때 상당한 시간 낭비를 초래할 수 있다.
 
3.
seleniumRC의 isTextPresent 방법과 유사
xpath로 모든 원소(//*[contains(.,'keyword')])와 일치하여 원하는 키워드를 포함하는 원소가 존재하는지 판단합니다. 
사용 시 필요에 따라 매개 변수와 반환 값을 조정할 수 있다. 
 1 public boolean isContentAppeared(WebDriver driver,String content) {  
 2       boolean status = false;  
 3       try {  
 4           driver.findElement(By.xpath("//*[contains(.,'" + content + "')]"));  
 5           System.out.println(content + " is appeard!");  
 6           status = true;  
 7       } catch (NoSuchElementException e) {  
 8           status = false;  
 9           System.out.println("'" + content + "' doesn't exist!"));  
10      }  
11      return status;  
12  }  

상세한 xpath 소개: http://www.w3school.com.cn/xpath/
 
 
4. Xpath 다중 판단
 
1 while(currentPageLinkNumber<MaxPage)
2 {
3   WebElement PageLink;
4   PageLink = driver.findElement(By.xpath("//a[@class = 'PageLink' and @title ='"+Integer.toString(currentPageLinkNumber+1)+"']"));
5   PageLink.click();
6   currentPageLinkNumber++;
7 //OtherOperation();
8 }

 
 
 
다음으로 이동:http://blog.csdn.net/aerchi/article/details/8057544

좋은 웹페이지 즐겨찾기