我正在尝试选择div以蓝色条突出显示的:这div是包含文本的页面上的第二个"All",因此我的尝试如下:all_button = driver.find_element_by_xpath("//div[contains(., 'All')][2]")由于某些原因,当我运行程序时,这会选择div以黄色突出显示的。我试过使用string()和text()代替本contains()节中的句点,但结果相同。有任何想法吗?
2 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
代替
//div[contains(., 'All')][2]
和
(//div[contains(., 'All')])[2]
选择第二个这样的div
整体,而不是限制这样的div
元素处于第二个子位置。
<div>All good men</div>
如果您的数据确实如下所示,则可以进一步使谓词更严格,以使用字符串相等性而不是子字符串包含(例如,避免匹配):
(//div[.='All'])[2]
互换的青春
TA贡献1797条经验 获得超6个赞
您可以通过添加条件来尝试对选择进行更严格的选择:
all_buttons = driver.find_element_by_xpath(
"//class[contains(@class, 'filter-option selected') and contains(text(), 'All')]")
现在,要进行调试,请检查返回列表的大小:
print(len(all_buttons))
如果“所有”按钮列出了根据DOM收到的大小,则应该做得很好。
添加回答
举报
0/150
提交
取消