Java RemoteWebDriver - WebElement.findElements(...)不能正常工作?

时间:2011-09-05 11:56:53

标签: webdriver

我有一个网站要测试,其中有一段HTML代码:

<table id="tableid">
  <tbody>
    <tr class="first">
      <td>Hello World</td>
    </tr>
    <tr class="second">
      <td>Bye World</td>
    </tr>
  </tbody>
</table>

所以我想创建一个 tr -Tags的列表,并使用以下代码迭代它们:

List<WebElement> list = driver.findElements(By.xpath("//table[@id='tableid']/tbody/tr"));
for(WebElement l : list){
        System.out.println(l.getAttribute("class"));
        System.out.println(l.getLocation());
        System.out.println(l.hashCode());
        System.out.println(l.findElement(By.xpath("//td")).getText());  
    }

这四个System.out.println如下:
第一
(32,300)
1573
你好世界
第二
(64,600)
1574
你好世界

所以位置不同,甚至类属性也不同。但是getText方法只返回第一个元素的文本。为什么?我错过了什么吗?做错了什么?我无法理解。

EDIT / UPDATE: 这看起来很奇怪。上面的代码不起作用。如果我执行以下代码,它可以正常工作。有什么解释吗?

List<WebElement> list = driver.findElements(By.xpath("//table[@id='tableid']/tbody/tr/td"));
System.out.println(list.get(0).getText());
System.out.println(list.get(1).getText());

输出:
你好世界
再见世界

1 个答案:

答案 0 :(得分:2)

你的XPath错了。 //td表示“文档中任何位置的任何元素”。请尝试l.findElement(By.xpath("td")).getText() - 我想您会得到您想要的结果。