【问题标题】:XML name with '*' causing problems with XPath带有“*”的 XML 名称导致 XPath 出现问题
【发布时间】:2020-09-04 10:32:30
【问题描述】:

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

我遇到的问题是我要使用的标识符称为id*,而其中的* 会导致问题。

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

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

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

有谁知道如何解决这个问题?

【问题讨论】:

    标签: html xml selenium selenium-webdriver xpath


    【解决方案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。

    【讨论】:

      【解决方案2】:

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

      请尝试以下代码:

      .//input[@type='text' and contains(@id,'F_Date')]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多