我有下面的HTML代码,我正在尝试运行我的selenium测试
<html>
<head></head>
<body>
<table id="Original">
<tr>
<td>Original-11</td>
<td>Original-12</td>
<td>Original-13</td>
</tr>
<tr>
<td>Original-21</td>
<td>Original-22</td>
<td>Original-23</td>
</tr>
<tr>
<td>Original-31</td>
<td>Original-32</td>
<td>Original-33</td>
</tr>
</table>
<br/><br/>
<table id="Duplicate">
<tr>
<td>Duplicate-11</td>
<td>Duplicate-12</td>
<td>Duplicate-13</td>
</tr>
<tr>
<td>Duplicate-21</td>
<td>Duplicate-22</td>
<td>Duplicate-23</td>
</tr>
<tr>
<td>Duplicate-31</td>
<td>Duplicate-32</td>
<td>Duplicate-33</td>
</tr>
</table>
</body>
</html>
selenium java代码如下所示:
public static void main(String[] args) throws Exception
{
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/src/test/drivers/chromedriver.exe");
WebDriver drv = new ChromeDriver();
drv.get("C:/Users/MYUserName/git/er_test/SeleniumTestHtml.html");
WebElement tableElement = drv.findElement(By.id("Duplicate"));
WebElement rowElement = tableElement.findElement(By.xpath("//tr[2]"));
WebElement cellElement = rowElement.findElement(By.xpath("//td[2]"));
System.out.println(rowElement.getText());
System.out.println(cellElement.getText());
drv.close();
drv.quit();
}我预期结果如下:
复本-21复本-22复本-23
重复-22
但我得到的结果是:
原件-21-22原件-23
原件-12
我在这里做错什么了吗?
发布于 2017-10-12 21:47:05
您的问题是,//会让您返回到顶级根元素的搜索。
这意味着
WebElement rowElement = tableElement.findElement(By.xpath("//tr[2]"));就像
WebElement rowElement = driver.findElement(By.xpath("//tr[2]"));如果只需要在当前元素中搜索,则应使用
WebElement rowElement = tableElement.findElement(By.xpath(".//tr[2]"));https://stackoverflow.com/questions/46718613
复制相似问题