2014-03-31 10 views
0

아래 HTML 코드가 있습니다. 하이퍼 링크 태그 안에 모든 텍스트를 가져 오려고합니다.셀렌의 UL 태그에서 모든 값 가져 오기

<div ng-model='sCur'> 
    <ul sa-toggle-menu="" role="menu" class="sa-dropdown-menu"> 
     <li><a ng-bind="item[lebel]" ng-click="itemSelect(item)" class="ng-binding">1</a> 
     <li><a ng-bind="item[lebel]" ng-click="itemSelect(item)" class="ng-binding">2</a> 
     <li><a ng-bind="item[lebel]" ng-click="itemSelect(item)" class="ng-binding">3</a> 
    </ul> 
</div> 

아래의 자바 코드를 시도하고 있습니다. 하지만 빈 텍스트 값이 생깁니다.

List<WebElement> currencies = driver.findElements(By.cssSelector("div[ng-model='sCur'] ul li")); 

for (WebElement option : currencies) { 
    System.out.println("Text :" + option.getText()); 
} 
+0

는 추가해야합니다 ... 울 리 a를 할 수있다? 그렇지 않으면 get 텍스트는 li에서 텍스트를 가져 오려고 시도하지 않습니다. – Paul

+0

작동하지 않습니다. 나는 이미 같은 것을 시도했다. – Purus

답변

1

좋아 .. 여기에 문제가 있었다.

데이터가 런타임시 요소에 바인딩되므로 목록이 DOM에 없습니다. 드롭 다운 화살표를 클릭 할 때만 요소가 DOM에 추가됩니다.

콤보 박스 클릭이 트리거 된 후 모든 요소가 유효 해지고 getText()가 작동했습니다.

driver.findElements(By.cssSelector("div[ng-model='sCur'] ul")).click(); 

List<WebElement> currencies = driver.findElements(By.cssSelector("div[ng-model='sCur'] ul li a")); 

for (WebElement option : currencies) { 
    System.out.println("Text :" + option.getText()); 
} 
0

당신이 li 요소와하지 a 요소를 선택하기 때문에.

By.cssSelector("div[ng-model='sCur'] ul li a") 
+0

나는 이미 같은 것을 시도했지만 여전히 결과는 비어 있습니다. – Purus

0

이 시도 사용

List<WebElement> currencies = driver.findElements(By.className("ng-binding")); 
for (WebElement option : currencies) { 
    System.out.println("Text :" + option.getAttribute("ng-bind")); 
    System.out.println("Text :" + option.getText()); 
} 
0
WebDriver driver=new FirefoxDriver(); 
driver.get("http://www.naukri.com/"); 
// Click on dropdown 
driver.findElement(By.xpath(".//[@id='exp_dd']/div[1]/span")).click(); 
//Capture all dropdown element in a List 
java.util.List<WebElement> elements =driver.findElements(By.xpath(".//*[@id='exp_dd']/div[2]//ul/li")); 

for(WebElement ele:elements){ 
    String str=ele.getText(); 
    if(str.equalsIgnoreCase("8")) 
     ele.click(); 
} 
관련 문제