Selenium Xpath 中的正则表达式不起作用 //*[contains(@content-desc,"Resend in .*?[0-9a-zA-Z]*[0-9][0-9a-zA-Z

Posted

技术标签:

【中文标题】Selenium Xpath 中的正则表达式不起作用 //*[contains(@content-desc,"Resend in .*?[0-9a-zA-Z]*[0-9][0-9a-zA-Z].* sec ")]【英文标题】:Regex in Selenium Xpath Not Working //*[contains(@content-desc,"Resend in .*?[0-9a-zA-Z]*[0-9][0-9a-zA-Z].* sec")] 【发布时间】:2021-09-06 21:03:49 【问题描述】:

我在 UI 中的文本是 "Resend in 48 sec" 其中 "48" 是一个动态计时器,因此我想使用包含和内部包含我正在使用正则表达式,但仍然无法找到元素

//*[contains(@content-desc,"Resend in .*?[0-9a-zA-Z]*[0-9][0-9a-zA-Z].* sec")]

【问题讨论】:

【参考方案1】:

Selenium 仍在使用 XPath 1.0,它是 20 多年前定义的,不支持正则表达式。

【讨论】:

【参考方案2】:

您可以改用这个 XPath:

//*[contains(@content-desc,"Resend in") and(contains(@content-desc,"sec"))]

现在你可以获取这个元素,获取它的content-desc属性值,然后验证该属性的内容

【讨论】:

部分正确,但我想确定 Number 是否显示。这就是我使用 Regex 的原因 我们在哪里有正则表达式?【参考方案3】:

你可能想这样做:

String regEx = ".*?[0-9a-zA-Z]*[0-9][0-9a-zA-Z].*";
driver.findElement(By.xpath("//*[contains(@content-desc,'Resend in') + '"+regEx+"'  + and(contains(@content-desc, 'sec')) ]"));

【讨论】:

以上是关于Selenium Xpath 中的正则表达式不起作用 //*[contains(@content-desc,"Resend in .*?[0-9a-zA-Z]*[0-9][0-9a-zA-Z的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 中的 Instagram XPath 不起作用? (Python)

正则表达式替换 HTML 文档中的空格

如何通过移动 xpath 与 Appium 匹配 @text 属性和正则表达式(正则表达式)来查找元素?

使用 XPath 和正则表达式提取 HTML 注释中的文本

selenium- Xpath的详细使用

selenium自动化测试之元素定位二(xpath定位)