如何在XPath中选择第二个div元素?

时间:2018-07-01 02:13:07

标签: python html xml selenium xpath

我正在尝试选择用蓝色条突出显示的div

enter image description here

这是包含文本"All"的页面上的第二个all_button = driver.find_element_by_xpath("//div[contains(., 'All')][2]") ,所以我的尝试如下:

div

由于某种原因,当我运行程序时,这会选择以黄色突出显示的string()。我尝试使用text()contains()代替 Intent broadcastIntent = new Intent(BROADCAST_INTENT); 部分中的句点,但结果相同。有什么想法吗?

2 个答案:

答案 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收到的大小,则应该做得很好。