带有'*'的XML名称导致XPath问题

问题描述 投票:2回答:2

我正在尝试编写XPath以便在Robot框架的Selenium测试中使用。

我遇到的问题是我要使用的标识符称为id*,并且其中的*引起了问题。

我要使用的XPath是//input[@type='text' and @id*='F_Date']

[当我尝试运行此测试时,我收到一条错误消息,指出它不是有效的XPath表达式。

删除*使它成为有效的XPath,但找不到该元素。不幸的是,没有其他标识符可以替换为id*

有人知道如何解决此问题吗?

html xml selenium selenium-webdriver xpath
2个回答
1
投票

XML属性(或元素)名称中不允许使用*字符:

Attribute     ::= Name Eq AttValue
Name          ::= NameStartChar (NameChar)*
NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] |
                  [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] |
                  [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] |
                  [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
                  [#x10000-#xEFFFF]
NameChar      ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] |
                  [#x203F-#x2040]

来源:W3C XML BNF for component names

没有“解决方法”。选择另一个字符作为XML属性名称。如果收到使用id*作为属性值名称的文档,则该文档不是XML;否则,该文档不是XML。告诉拥有者修复它或为您提供工具/库来处理它,因为您不能使用XML工具/库,因为它不是XML。


-1
投票

注意:-XML属性或元素名称中不允许使用'*'字符。

请尝试以下代码:

.//input[@type='text' and contains(@id,'F_Date')]
© www.soinside.com 2019 - 2024. All rights reserved.