表中有这一行:
<tr id='218A90E'>
<td>foo</td>
<td>bar</td>
<td class="my_link">UserName</td>
<td>
<input type='checkbox' title='Remove'>
</td>
</tr>
id 每次都会重新生成。我知道用户名,我想单击给定用户名旁边的复选框。这就是我找到具有给定用户名的元素的方式:
driver.find_element_by_xpath("//td[@class='my_link' and text()='UserName']")
问题:如何checkbox通过xpath?
XPath 中有所谓的分支(轴)(您应该阅读此内容)。我认为以下内容对您有用:
//td[@class='my_link' and text()='UserName']/following-sibling::td[./input]/input这是“VLOB”的第一个版本。此查询使用 class=moo_link 和 text=username 找到您的 AP,然后在此 AP 的级别上找到它后面的元素,在我们的例子中,它是目标 AP,它包含更深一层的输入,并且下降一层更深。如果您有许多不同的输入,请添加条件,例如
input[@type=checkbox].您可以使用第二个选项:
//input[../preceding-sibling::td[@class="my_link" and text()='UserName'] and @type="checkbox"]最终变体:
driver.find_element_by_xpath("Первый или второй вариант")