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

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

http://img2.mukewang.com/607e95f40001dea505460703.jpg

div是包含文本的页面上的第二个"All",因此我的尝试如下:

all_button = driver.find_element_by_xpath("//div[contains(., 'All')][2]")

由于某些原因,当我运行程序时,这会选择div以黄色突出显示的。我试过使用string()text()代替本contains()节中的句点,但结果相同。有任何想法吗?


富国沪深
浏览 1348回答 2
2回答

慕妹3242003

代替//div[contains(.,&nbsp;'All')][2]和(//div[contains(.,&nbsp;'All')])[2]选择第二个这样的div整体,而不是限制这样的div元素处于第二个子位置。<div>All good men</div>如果您的数据确实如下所示,则可以进一步使谓词更严格,以使用字符串相等性而不是子字符串包含(例如,避免匹配):(//div[.='All'])[2]

互换的青春

您可以通过添加条件来尝试对选择进行更严格的选择:all_buttons = driver.find_element_by_xpath(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "//class[contains(@class, 'filter-option selected') and contains(text(), 'All')]")现在,要进行调试,请检查返回列表的大小:print(len(all_buttons))如果“所有”按钮列出了根据DOM收到的大小,则应该做得很好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python