当前位置: 首页 > 知识库问答 >
问题:

Xpath使用匹配项和正则表达式在Xpath测试器中工作,但在代码抛出中InvalidSelectorException未能在“文档”上执行“评估”

盖弘毅
2023-03-14

超文本标记语言

<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]*')]

例外

组织。openqa。硒。InvalidSelectorException:选择器无效:无法找到xpath表达式为//b[匹配(text(),“[0-9]{10},[A-Za-z]”的元素,因为出现以下错误:语法错误:未能对“文档”执行“evaluate”:字符串“//b[匹配(text(),“[0-9]{10},[A-Za-z]”)不是有效的xpath表达式。(会话信息:chrome=70.0.3538.102)(驱动程序信息:chromedriver=2.42.591088(7B2B2DCA23CA0862F674758C9A333E685C27D5),平台=Windows NT 10.0.16299 x86\U 64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0毫秒

共有2个答案

陆雨华
2023-03-14

不太清楚为什么需要xpath来搜索正则表达式。

然而,生成的文本似乎是欢迎消息的一部分,我觉得您的用法可能是提取动态文本,例如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]
    

  • 吕飞翼
    2023-03-14

    Selenium支持XPath 1.0版本,而fn:matches来自XPath 2.0。

    如果您想匹配逗号前以10位数字开头的粗体文本,可以尝试下面的XPath

    //b[string-length(substring-before(., ','))=10 and number(substring-before(., ','))]
    

    如果您对所需元素有更多约束,请告诉我

     类似资料:
    • 问题内容: 我正在使用这样的构造: 但是我需要选择所有以“某些文本”开头的文本的链接,所以我想知道这里是否可以使用regexp?在lxml文档中找不到任何内容 问题答案: 您可以执行此操作(尽管该示例不需要正则表达式)。Lxml支持来自EXSLT扩展功能的正则表达式。(请参阅XPath类的lxml文档,但该方法也适用于该方法) 请注意,您需要提供名称空间映射,以便它知道xpath表达式中的“ re

    • 我有这样的情况:我需要计算我的视图中包含多个页面(1,2,3)的所有复选框,在每个网页中,我有一堆具有相同xpath的复选框,具有不同的编号(见下面的示例): xpath fir第1页的第二个复选框:xpath fir第40页的第二个复选框: 如何在不参考订单号的情况下计算当前视图中的所有当前复选框?

    • 我无法在Android环境中设置RegEx匹配器。 我的字符串模式: 未转义的模式(匹配所有内容,但西里尔字母和拉丁字母,数字,空格,逗号,感叹号,减号,下划线,方括号,分号和加全局忽略大小写;我认为这些是“合法的”): 我的代码: 但是,这既不会引发任何错误,也不会起作用。 到目前为止,我尝试过但没有成功(其中string是String变量): < li> < Li > < code > pat

    • 问题内容: 我需要在PHP正则表达式中匹配一个空格字符。任何人有任何想法吗? 我的意思是像“ gavin schulz”一样,两个单词之间的空格。我使用正则表达式来确保只允许使用字母,数字和空格。但是我不确定如何找到空间。这就是我现在所拥有的: 问题答案: 如果您正在寻找一个空格,那就是(一个空格)。 如果要查找一个或多个,则为( 两个 空格和一个星号)或(一个空格和一个加号)。 如果您要查找公共

    • 本文向大家介绍中文正则表达式匹配问题之正则表达式中文匹配使用方法,包括了中文正则表达式匹配问题之正则表达式中文匹配使用方法的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要讲如何使用正则匹配中文字符,中文正则表达式的匹配规则不像其他正则规则一样容易记住,下面一起看看这个中文正则表达式是怎么样的。 \w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下 匹配中文字符的正则表达

    • 例如与CSS选择器一起使用,但如何使用XPath表达式呢?