有没有一种方法可以迭代地扫描某个表列的每一行,而行号不是。每次刷新页面时行的行数都会改变吗?
假设我有一个这样的表格出现在网页上,每一行都有单选按钮:
+---+--------+--------+--------+--------+
| | Letter | Colour | Number | Animal |
+---+--------+--------+--------+--------+
| | A | Red | 111 | Dog |
+---+--------+--------+--------+--------+
| ◯ | B | Blue | 222 | Cat |
+---+--------+--------+--------+--------+
| ◯ | C | Green | 333 | Rabbit |
+---+--------+--------+--------+--------+
出现的列始终相同,但是行数可能不同。 假设我有一个变量:number = 222,并且必须搜索“ Number”列,直到找到匹配项,然后单击相应的单选按钮。
我如何...
- 反复扫描“数字”列中的所有元素?
- 单击找到匹配项的行中的相应单选按钮?
答案 0 :(得分:0)
您不需要在表中进行任何迭代,只需要以这样的方式编写XPath,即它仅指向一行中具有特定值的行上的单选按钮。
假设您的HTML如下所示:
<table>
<tbody>
<tr>
<th />
<th>Letter</th>
<th>Colour</th>
<th>Number</th>
<th>Animal</th>
</tr>
<tr>
<td><input type="radio" /></td>
<td>A</td>
<td>Red</td>
<td>111</td>
<td>Dog</td>
</tr>
<tr>
<td><input type="radio" /></td>
<td>B</td>
<td>Blue</td>
<td>222</td>
<td>Cat</td>
</tr>
<tr>
<td><input type="radio" /></td>
<td>C</td>
<td>Green</td>
<td>333</td>
<td>Rabbit</td>
</tr>
</tbody>
</table>
在这种情况下,XPath可能如下所示:
//tr[td[3]='Blue']/td[1]/input
这意味着:在第三列中找到一个具有“蓝色”的行元素,然后,在该行的第一列中返回输入元素。
还有其他方法可以实现,XPath axes可能非常有用:
//tr/td[3][.='Blue']/preceding-sibling::td/input
这意味着:找到第三个值为'Blue'的单元格,完成后,返回嵌套在任何先前单元格中的输入。
第一个更有意义,第二个只是为了证明通常有更多的方法来进行唯一元素识别。