selenium-webdriver - Selenium:有没有办法编写 xpath 来获取包含以数字结尾的文本的元素
问题描述
我正在尝试编写一个 xpath,它选择包含以数字结尾并用大括号包围的文本的所有元素。数字可以是任何数字,也可以是任意位数。这在 XPath1.0 中可行吗?我不能使用正则表达式,因为它在 XPath1.0 中是不允许的
<div class = '12345' >
<div class = '98231'>I want this (101)</div>
<div class = '98232'>I don't want this 101</div>
<div class = '98233'>I want this (1)</div>
<div class = '98234'>I don't want this (10A1)</div>
</div>
解决方案
在 XPath-1.0 中,您不能使用 RegEx'es。
但是您可以使用该fn:number()
函数来检查给定的字符串是否可以是该fn:boolean
函数的有效数字:
/div/div[boolean(number(substring-before(substring-after(.,'('),')')))]
显然,这只有在字符串中没有其他括号时才有效。并且它不检查括号中的数字是否在字符串的末尾。要添加此进一步限制,请将表达式更改为
/div/div[not(boolean(string(normalize-space(substring-after(.,')'))))) and boolean(number(substring-before(substring-after(.,'('),')')))]
这添加了一个进一步的谓词来检查 . 之后是否有除空格以外的字符)
。fn:number()
该函数会自动删除括号之间的前导和尾随空格。
推荐阅读
- angular - 如何在带有 Ionic 选项卡的 Angular 应用程序中使用路由?
- python - django.core.exceptions.FieldError:为 TblDetails 指定了未知字段(类别)?
- github - 如何使用 GitHub Actions 将标签部署到 Netlify?
- python - 如何在python中修复字符串长度
- react-redux - 如何与 Redux 一起在 react-testing-library 中传递来自 react-i18next 的 i18n 翻译对象?
- firebase - 有没有办法将外部 API 数据导入 Firebase 数据库?
- spring - Spring:FactoryBean 与 @Configuration
- javascript - 从可以单独打开和关闭的循环内创建多个模态
- python - 检测使用 Canny 边缘检测提取的边缘数量
- angular - 为什么变量没有被更新?