首页 > 解决方案 > Xpath 选择第二个文本匹配而不是第一个并选择下一个元素

问题描述

我正在尝试选择一个具有随机生成类的元素,所以我选择该元素的唯一方法是使用xpath.

我需要选择的元素是一个input带有先前标签“城市”的框,但问题是它在网站上出现了 3 次,我想在网站上选择第二个匹配项。

我试过这个,但它只选择第一个。

input = driver.find_element_by_xpath("//label[contains(text(),'City')]//following::input")

要选择第二个,我试过这个,但它不起作用。

input = driver.find_element_by_xpath("//label[contains(text(),'City')]//following::input")[1]

任何帮助将不胜感激。

标签: seleniumselenium-webdriverxpath

解决方案


严格来说,以下 XPath 满足您的需求:

(//input[preceding::label[1][contains(.,"City")]])[2]

选择input页面上符合以下条件的第二个元素:前面是label包含特定文本的元素。


推荐阅读