我有一个以下结构的表:
<table>
<tbody>
<tr>
<td> Name: </td>
<td> Juan </td>
</tr>
<tr>
<td> Name: </td>
<td> Alex </td>
</tr>
</tbody>
我想迭代td
中的第二个tr
并抓住名字(Juan,Alex)
我编写了以下代码来执行此操作:
driver.find_elements(:xpath => "//table/tbody/tr/td[2]").each do |r|
puts r.text
end
它不会产生任何错误,没有unable to find element
。任何东西。它只是跳过这些代码行。它也不打印任何空白。我在do循环中对它进行了测试,并没有到达那里。我知道xpath是正确的,我检查了萤火虫。我在这里做错了什么?
答案 0 :(得分:0)
您可以使用Table Data和Table Row的XPath上的for循环轻松遍历WebTable。请参阅示例程序 -
public class WebTable {
WebDriver driver;
@BeforeTest
public void openWebSite() {
// Open Raddif Gainer page
driver = new FirefoxDriver();
driver.get("http://money.rediff.com/gainers/bse/daily/groupa?src=gain_lose");
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
}
@Test
public void CountRowsTest() {
// Store all rows in the List
List<WebElement> allRows = driver.findElements(By
.xpath("//*[@id='leftcontainer']/table/tbody/tr"));
// To get the all present rows in the Table
System.out.println("Totoal rows are -- " + allRows.size());
}
@Test
public void printallrowsTest() {
// Store all rows in the List
List<WebElement> allRows = driver.findElements(By
.xpath("//*[@id='leftcontainer']/table/tbody/tr"));
// To Print the whole content of the table
for (int i = 0; i < allRows.size(); i++) {
System.out.println(allRows.get(i).getText());
}
}
有关详细信息,请参阅这个惊人的教程:
http://www.seleniumbix.com/#!handle-webtables-in-selenium/c329