我正在尝试选择一个具有随机生成类的元素,因此选择该元素的唯一方法是使用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]
任何帮助将不胜感激。
答案 0 :(得分:0)
您在find_element_by_xpath
中缺少“ s”。尝试find_elements_by_xpath
。
input = driver.find_elements_by_xpath("//label[contains(text(),'City')]//following::input")[1]
您可以确保预期有3个实例与此xpath匹配,例如:
input_all = driver.find_elements_by_xpath("//label[contains(text(),'City')]//following::input")
print("len(input_all):", len(input_all))
答案 1 :(得分:0)
这只会获得第二场比赛:
input = driver.find_element_by_xpath("//label[contains(text(),'City')][2]/input")
答案 2 :(得分:0)
如果您希望获得第二个匹配元素,则可以尝试
WebElement输入= driver.findElements(By.xpath(“ // label [包含(text(),'City')]] // following :: input”))。get(1)
答案 3 :(得分:0)
严格来说,以下XPath可以满足您的需求:
(//input[preceding::label[1][contains(.,"City")]])[2]
在页面上选择符合以下条件的第二个input
元素:前面带有包含特定文本的label
元素。