selenium - 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]
任何帮助将不胜感激。
解决方案
严格来说,以下 XPath 满足您的需求:
(//input[preceding::label[1][contains(.,"City")]])[2]
选择input
页面上符合以下条件的第二个元素:前面是label
包含特定文本的元素。
推荐阅读
- php - 从购物车和结帐页面中删除 WooCommerce 订阅间隔
- java - 从客户端的内存中加载 Java 类
- oracle - 存储过程每次运行都会在同一个会话中启动 logminer
- python - 使用 tkinter 切换帧
- django - Django:如何向内置的用户模型添加一个多对多字段(从用户到用户本身)
- android - 尝试从我的 android 服务调用 web 服务时出现 android.os.NetworkOnMainThreadException 异常?
- r - 带有表达式的ggplot2:条件上标 scale_*_discrete 中的刻度标签
- reactjs - 在创建 React 应用程序时,进程停止并显示 4983 低严重性漏洞(运行 npm audit 来修复它们)
- sql - 将带有数据的oracle-dmp翻译成sql文件
- java - 尝试使用 spy 进行测试时出现空指针错误