2016-09-08 1 views
1

XPath를 사용하지 않고 테이블을 반복하는 방법이 있습니까?XPath를 사용하지 않고 테이블 유형 요소의 주소를 찾는 방법

String a = "//*[@id='mainData']/table/tbody/tr["; 
String b = "]/td[2]"; 
int[] comparison = new int[101]; 
for (int i = 1; i <= 100; i++) { 
    String c = a + Integer.toString(i) + b; 
    WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(c))); 
     correct[i] = element.getText(); 

을하지만 (] './/*[@class='x 등) 동적 XPathing를 사용하고 싶습니다 : 순간 ,이 같은 for 루프로 반복하고있다. 그런데 어떻게 열 주소를 찾을 수 있습니까? 열을 반복하는 방법은 무엇입니까?

+0

당신이 완전히 XPath의를 피하거나 당신이 의지하지 않고 데이터를 반복 한 후 한 번에 모든 행을 얻을 수있는 방법을 찾고 방법을 묻는 다시 XPaths? 또한 질문을 공식화하는 방식에 따라 행 단위로 행별로 또는 열 단위로 반복 할 것인지 여부가 명확하지 않습니다. – sokkyoku

+0

예를 들어 Firebug에서 생성 한 xpaths 대신 동적 xPathing을 사용하고 싶습니다. 그리고 배열 안의 모든 요소를 ​​복사해야합니다. 그래서 난 열을 반복하고 배열의 각 라인에서 결과를 얻을 필요가있다. – Tudor

+0

몇 시간 안에 최적화 된 솔루션으로이 문제를 해결하기 위해 돌아올 것입니다. @metar에서 제공하는 솔루션은 대단히 비효율적이며 이미 수행 한 것보다 낫지 않습니다. – sokkyoku

답변

1

당신은 같은 테이블을 반복 할 수 있습니다 :

// count number of rows 
int sizeRows = driver.findElements(By.xpath("//*[@id='mainData']/table/tbody/tr")).size(); 

// iterate rows 
for(int tableRow = 1; tableRow <= sizeRows; tableRow++) { 
    String rowLocator = String.format("//*[@id='mainData']/table/tbody/tr[%d]", tableRow); 

    String column1 = driver.findElement(By.xpath(rowLocator+"/td[1]")).getText().trim(); 
    String column2 = driver.findElement(By.xpath(rowLocator+"/td[2]")).getText().trim(); 
.. 
} 
관련 문제