我有一个结构如下的表:
<table>
<tbody>
<tr>
<td> Name: </td>
<td> Juan </td>
</tr>
<tr>
<td> Name: </td>
<td> Alex </td>
</tr>
</tbody>
我想遍历 tr
中的第二个 td
并获取名称 (Juan, Alex)
我写了下面的代码来做到这一点:
driver.find_elements(:xpath => "//table/tbody/tr/td[2]").each do |r|
puts r.text
end
它不会产生任何错误,没有unable to find element
。任何事物。它只是跳过这些代码行。它也没有打印出任何空白。我在 do 循环中对它进行了测试,但没有到达那里。我知道 xpath 是正确的,我检查了 Firebug 。我在这里做错了什么?
最佳答案
您可以在表数据和表行的 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
关于ruby - 如何遍历一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38469915/