【发布时间】:2021-02-16 17:31:26
【问题描述】:
我正在尝试自动化页面,基本上任务是从不同的行中提取值。所有表的表名都相同,而且表中的左侧值也相同,我需要获取相应的右侧值,所以我正在尝试使用 xpath。下面是几个表格的 html,但我在页面中还有 4 个表格,它们都有相同的表格 ID。
<table cellspacing="1" cellpadding="1" border="1" width="90%" bgcolor="Silver" align="center">
<tbody><tr>
<td colspan="3">
<b>Amos Status
<a href=</a>
</b>
</td>
</tr>
<tr>
<th>Flow</th>
<th>Last Processed Message</th>
<th>Status</th>
</tr>
<tr>
<td>Loopback</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
<tr>
<td>SWIFT</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
<tr>
<td>CDSX</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
<tr>
<td>LVTS</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
<tr>
<td>RDMS</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
</tbody></table>
<table cellspacing="1" cellpadding="1" border="1" width="90%" bgcolor="Silver" align="center">
<tbody><tr>
<td colspan="3">
<b>Amos Status
<a href="test">Show details</a>
</b>
</td>
</tr>
<tr>
<th>Flow</th>
<th>Last Processed Message</th>
<th>Status</th>
</tr>
<tr>
<td>Loopback</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
<tr>
<td>SWIFT</td>
<td>21-02-14 08:28:04</td>
<td>
<b>On</b>
</td>
</tr>
<tr>
<td>CDSX</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
<tr>
<td>LVTS</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
<tr>
<td>RDMS</td>
<td>-</td>
<td>
<b>On</b>
</td>
</tr>
</tbody></table>
我需要从 td 标签中获取值。以下一行适用于第一个标签,例如对于 Swift 我能够检索 "-" 的值,现在我想从第二个 SWIFT td 标签(日期)中获取值,但我得到了一个否这样的元素异常消息。
WebElement getData = driver.findElement(
By.xpath("//tr[td='SWIFT'][1]/td[2]"));
WebElement getData1 = driver.findElement(
By.xpath("//tr//td[contains(text(),'SWIFT')]/following-sibling::td[2]"));
上面两个语句给了我一个“-”的值,这是正确的,但是当我将它更改为以下时,为了获取日期值,我得到一个 no such element 异常错误。
WebElement getData = driver.findElement(
By.xpath("//tr[td='SWIFT'][2]/td[2]"));
WebElement getData1 = driver.findElement(
By.xpath("//tr//td[contains(text(),'SWIFT')][2]/following-sibling::td[2]"));
【问题讨论】:
标签: java selenium-webdriver xpath