使用带有xpath的嵌套FindElement解析表(在JAVA中)

时间:2017-12-08 16:15:17

标签: java selenium xpath

我对selenium和xpath有点新意,如果我正在做正确的事情以及findElement将如何表现,我很好奇。我一直在寻找一个例子,但我找不到一个。

鉴于此表(简化但相关)



    <table>
      <thead></thead>
      <tbody>
        <tr>
          <td>R1C1</td>
          <td>R1C2</td>
        </tr>
        <tr>
          <td>R2C1</td>
          <td>R2C2</td>
        </tr>
      </tbody>
    </table>
&#13;
&#13;
&#13;

如果我使用以下内容,我是否会收到我期待的信息?

WebElement r1 = driver.findElement(By.xpath("//table/tbody/tr[1]"));
String r1c1 = r1.findElement(By.xpath("//td[1]")).getText();
String r1c2 = r1.findElement(By.xpath("//td[2]")).getText();

WebElement r2 = driver.findElement(By.xpath("//table/tbody/tr[2]"));
String r2c1 = r1.findElement(By.xpath("//td[1]")).getText();
String r2c2 = r1.findElement(By.xpath("//td[2]")).getText();

替代:

String r2c1 = driver.findElement(By.xpath("//table/tbody/tr[2]")).findElement(By.xpath("//td[1]")).getText();

请记住,与我实际做的相比,这是非常简化的,但我相信其余的都会有效。我的问题主要围绕从另一个元素中找到一个元素。并且,不,我没有可用于专门识别表格的给定单元格的唯一类别/ ID标记。

这会像我期望的那样起作用吗? (我知道我可以尝试一下,但接下来的人无法在线搜索答案)

1 个答案:

答案 0 :(得分:0)

我建议 Keep It Short and Simple 以获得更好的 Execution Performance

如果您希望getText()来自以下四个WebElements,请保持简单:

String r1c1 = driver.findElement(By.xpath("//table//tbody/tr/td")).getAttribute("innerHTML");
String r1c2 = driver.findElement(By.xpath("//table//tbody/tr//following::td[2]")).getAttribute("innerHTML");

String r2c1 = driver.findElement(By.xpath("//table//tbody//following::tr[2]/td")).getAttribute("innerHTML");
String r2c2 = driver.findElement(By.xpath("//table//tbody//following::tr[2]//following::td[2]")).getAttribute("innerHTML");