我有以下结构,我试图点击第二个垃圾桶图标,这是Test1旁边的按钮。
<tr class=“ng-scope”>
<td class=“ng-scope”></td>
<td class=“ng-scope”></td>
<td class=“ng-scope”>
<span class=“ng-binding”>Test0</span>
</td>
<td class=“ng-scope”>
<button class=“bin btn-xs”>
<i class="glyphicon glyphicon-trash"></i>
</button>
</td>
</tr>
<tr class=“ng-scope”>
<td class=“ng-scope”></td>
<td class=“ng-scope”></td>
<td class=“ng-scope”>
<span class=“ng-binding”>Test1</span>
</td>
<td class=“ng-scope”>
<button class=“bin btn-xs”>
<i class="glyphicon glyphicon-trash"></i>
</button>
</td>
</tr>
目前我正在实现的是find_element_by_xpath
,其中xpath是//i@class="glyphicon glyphicon-trash"
并使用给定的结果进行索引搜索。
然而,我觉得退出效率低,特别是给定的结果在理论上可能很多,我必须遍历结果列表。
我还尝试了以下几行:
myxpath = "//*[contains(text(), 'Test1')]/following-sibling::tr/button[@class='glyphicon glyphicon-trash']"
driver.find_by_xpath(myxpath)
不起作用(因为垃圾桶图标实际上不是Test1的兄弟。
如何以更好的方式实现这一点(即我想使用Test1作为锚点并点击它旁边的垃圾按钮,而不是在Test0旁边?)
答案 0 :(得分:0)
我不清楚你是否想要按钮或图标...... 这里是i标签
尝试
//i[@class='glyphicon glyphicon-trash' and ../../../td/span/text() = "Test1"]
ps还注意到:
<span class="ng-binding">Test1</span>
和
<span class="ng-binding"> Test1 </span>
是不同的。
答案 1 :(得分:0)
选择包含文字的行中的按钮:
//tr[.//text()='Test1']//button
要选择单元格3中具有文本的行中单元格4中的按钮:
//tr[td[3]//text()='Test1']/td[4]//button
要选择包含文本的单元格,然后选择以下单元格中的按钮:
//td[.//text()='Test1']/following-sibling::td[1]//button"