我对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;
如果我使用以下内容,我是否会收到我期待的信息?
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标记。
这会像我期望的那样起作用吗? (我知道我可以尝试一下,但接下来的人无法在线搜索答案)
答案 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");