HTML
<div class="top-section" style="" xpath="1">
<input id="role" value="admin" hidden="">
<small>Welcome </small> <b style="">8828024404, MCGM</b>
<a href=""><img alt="Attendance" width="" height="" src="css/assets/images/logo.png"></img></a>
<a href="/logout" class="float-right logout">Log Out</a>
</input>
</div>
要搜索的字符串
8828024404, MCGM
Xpath表达式
//b[matches(text(),'[0-9]{10}, [A-Za-z]*')]
例外
org.openqa.selenium.InvalidSelectorException:无效的选择器:无法 用xpath表达式定位元素 // b [matches(text(),'[0-9] {10},[A-Za-z] ')],原因如下 错误:语法错误:无法对“文档”执行“评估”: 字符串'// b [matches(text(),'[0-9] {10},[A-Za-z] ')]'无效 XPath表达式。 (会话信息:chrome = 70.0.3538.102)(驱动程序 信息:chromedriver = 2.42.591088 (7b2b2dca23cca0862f674758c9a3933e685c27d5),平台= Windows NT 10.0.16299 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0毫秒
答案 0 :(得分:2)
Selenium支持XPath 1.0版本,而fn:matches
来自XPath 2.0。
如果您要匹配以逗号开头的10位数字开头的粗体,可以在XPath下面尝试
//b[string-length(substring-before(., ','))=10 and number(substring-before(., ','))]
如果您对必填元素有更多限制,请告诉我
答案 1 :(得分:0)
完全不确定您的确切用例为什么要 xpath 搜索 Regex 。
但是结果文本似乎是欢迎消息的一部分,我觉得您的用例可能是提取具有动态性的文本强>例如 8828024404,MCGM 。
在这种情况下,您可以使用以下任一解决方案:
XPath 1:
//div[@class='top-section']/input[@id='role' and @value='admin']//b
XPath 2:
//div[@class='top-section']/input[@id='role' and @value='admin']/small[contains(.,'Welcome')]//following::b[1]