python-3.x - 使用 Selenium 定位具有变化数字的动态 li 元素
问题描述
我是新的 selenium 和 python,两天前才开始。我正在做一个网络抓取并试图找到一个动态的 li tage
我已经使用 Chrome 开发工具找到了 xpath。然而,由于它是一个动态元素,我认为它是其中的一部分。
我知道我可以为 li 标签使用带有递增变量的 for 循环,但后来我想知道是否有其他方法可以实现它。XML 中有 endwith 的功能,但它的 XML2.0 和浏览器支持版本 1
我正在尝试这样的事情
//*[contains(@id,"submenu1")]/li[i]/a/span
我如何构造上面 xpath(/li[i]/a/span) 的最后一个元素,以便它可以捕获上面发布的动态数值?
这是元素的HTML代码
//*[@id="submenu1"]/li[1]/a/span
//*[@id="submenu1"]/li[2]/a/span
//*[@id="submenu1"]/li[3]/a/span
//*[@id="submenu1"]/li[4]/a/span
//*[@id="submenu1"]/li[5]/a/span
//*[@id="submenu1"]/li[6]/a/span
//*[@id="submenu1"]/li[7]/a/span
实际应该能够通过更改 li 标签内的数字来捕获
解决方案
尽管XPath 1.0中没有内置的end-with函数,但现有的XPath 函数和运算符允许您实现这一点,例如 HTML:
<a href="http://com.example">com.example</a>
<a href="http://example.com">example.com</a>
示例 XPath 定位以 结尾的链接com
:
//a[substring(text(), string-length(text()) - string-length('com')+ 1, string-length(text()))= 'com']
演示:
推荐阅读
- python - 在数据框中分组后如何保持该行空间?
- sql - 如何仅获取具有重复 ID 且具有特定列值的行
- python - 一步显示 df.info(), df.head(), df.shape, df.dtypes
- dataframe - 在 Julia 中扩展 DataFrame 的有效方法
- laravel - 反馈未设置为真
- flutter - 如何在颤动 onchangedlocation.listen 上更改 int 间隔设置
- selenium - 需要使用黄瓜cli生成黄瓜报告
- python - Selenium:等待元素的高度不等于 X
- feast - Feast 如何处理我的用例的高流量
- python - 如何将带有变量的列表分配给Python中的变量