我正在尝试编写XPath以便在Robot框架的Selenium测试中使用。
我遇到的问题是我要使用的标识符称为id*
,并且其中的*
引起了问题。
我要使用的XPath是//input[@type='text' and @id*='F_Date']
[当我尝试运行此测试时,我收到一条错误消息,指出它不是有效的XPath表达式。
删除*
使它成为有效的XPath,但找不到该元素。不幸的是,没有其他标识符可以替换为id*
。
有人知道如何解决此问题吗?
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。
注意:-XML属性或元素名称中不允许使用'*'字符。
请尝试以下代码:
.//input[@type='text' and contains(@id,'F_Date')]