我正在尝试选择用蓝色条突出显示的div
:
这是包含文本"All"
的页面上的第二个all_button = driver.find_element_by_xpath("//div[contains(., 'All')][2]")
,所以我的尝试如下:
div
由于某种原因,当我运行程序时,这会选择以黄色突出显示的string()
。我尝试使用text()
和contains()
代替 Intent broadcastIntent = new Intent(BROADCAST_INTENT);
部分中的句点,但结果相同。有什么想法吗?
答案 0 :(得分:2)
替换
//div[contains(., 'All')][2]
与
(//div[contains(., 'All')])[2]
整体选择第二个此类div
而不是限制此类div
元素位于第二个子位置。
如果您的数据确实如实显示,则可以进一步加紧谓词以使用字符串相等性而不是子字符串包含(例如,避免匹配<div>All good men</div>
)。
(//div[.='All'])[2]
答案 1 :(得分:1)
您可以通过添加条件来尝试严格选择:
all_buttons = driver.find_element_by_xpath(
"//class[contains(@class, 'filter-option selected') and contains(text(), 'All')]")
现在,要进行调试,请检查返回列表的大小:
print(len(all_buttons))
如果“所有”按钮列出了根据DOM收到的大小,则应该做得很好。