2012-09-12 2 views
0

자바에서 Selenium Webdriver를 사용하고 있습니다. 나는 테이블을 가지고 있으며, 첫 번째 행의 마지막 셀과 마지막 행의 마지막 셀에 손을 넣기를 원합니다. 내가 그 중 하나를 얻을 수셀레늄 WebDriver Java 두 개의 다른 테이블 셀을 찾습니다

WebElement table =driver.findElement(By.className("dataTable")); 
List <WebElement> rows = table.findElements(By.tagName("tr")); 
WebElement firstrow= rows.get(0); 
WebElement lastrow= rows.get(rivit.size()-1); 
List <WebElement> firstcells = firstrow.findElements(By.tagName("td")); 
List <WebElement> lastcells = lastcell.findElements(By.tagName("td")); 

firstcell.get(6).getText()); 

이것은 내가 td 태그를 두 번 찾고 있기 때문입니다. 두 셀을 멋지게 만드는 방법에 대한 힌트가 있습니까? 내 행이나 셀에 식별자가 없습니다.

+0

여기서 실제 소스를 포함 시키십시오 ... 예를 들면 : lastcell은 무엇입니까? 대신에 그냥'lastcells = lastrow.findElements (By.tagName ("td"));'? – jimaltieri

답변

0

당신은 cssSelectors로를 만들기 위해 시도 할 수 있습니다 :

String cssLast="table[class='dataTable']>tr:first-child>td:last-child" 
String cssFirst="table[class='dataTable']>tr:last-child>td:last-child" 

는 그렇게 SMT됩니다;

driver.findElement(By.cssSelector(cssLast)).getText(); 
driver.findElement(By.cssSelector(cssFirst)).getText(); 

또 다른 방법은 JS 사용하고 있습니다 : 그것은에 도움이 될 수 있습니다 제대로 요소에 위치하고 있는지 확인 항상

String getText(cssSel){ 
JavascriptExecutor js = (JavascriptExecutor) driver; 
     StringBuilder stringBuilder = new StringBuilder(); 

stringBuilder.append("var x = $(\""+cssSel+"\");"); 
     stringBuilder.append("return x.text().toString();")  ; 


     String res= (String) js.executeScript(stringBuilder.toString()); 
} 

text1=getText(cssLast); 
text2=getText(csscssFirst); 

하지만를 (파이어 폭스에서 예 firepath를 사용하여 불을 지르고 애드온) enter image description here

1

당신은 요소를 얻기 위해 XPath를 사용할 수 있습니다

WebElement lastCellInFirstRow = driver.findElement(By.xpath("table[@class='dataTable']//tr[1]//td[last()]")); 
WebElement lastCellInLastRow = driver.findElement(By.xpath("table[@class='dataTable']//tr[last()]//td[last()]")); 

가 여기에 xpath specification입니다. xpath로 재생할 수 있습니다 here.

+0

이로 인해 원격 서버 오류로 통신하는 동안 오류가 발생합니다. – mjgirl

+0

더 구체적인 오류 메시지가 있습니까? 다시 시도 할 수 있지만'table' 대신에'// table'을 사용하여 표현식을 시작할 수 있습니까? 나는 셀레늄 서버를 사용하지 않으므로 시도 할 수 없다. –

관련 문제