【问题标题】:Selenium - Firefox Xpath starting with round bracket doesn't workSelenium - 以圆括号开头的 Firefox Xpath 不起作用
【发布时间】:2020-05-09 01:55:04
【问题描述】:

我有一个这样的 HTML 页面:

<AAA>
    <BBB attrB="000">
        <CCC target="11" attrC="111"/>
        <CCC target="12" attrC="888"/>
    </BBB>
    <BBB attrB="222">
        <CCC target="21" attrC="111"/>
        <CCC target="22" attrC="777"/>
    </BBB>
    <BBB attrB="000">
        <CCC target="31" attrC="111"/>
        <CCC target="32" attrC="222"/>
        <CCC target="33" attrC="111"/>
    </BBB>
</AAA>

Selenium 中,我正在通过 xpath 寻找单个 WebElement(具有 target="11" 的 CCC):

 (//BBB[@attrB='000']//CCC[@attrC='111'])[1]

Chrome 中,它给了我预期的结果并返回了单个元素,但在 Firefox 中它没有给出任何结果(可能不是以 / 开头的 xpath接受)

我也尝试过 //BBB[@attrB='000']//CCC[@attrC='111'][1] 但它返回与 Xpath 匹配的所有元素,但没有指定索引 (target="11", target="31" 和 target="33")

我错过了什么?提前致谢

【问题讨论】:

    标签: selenium-webdriver firefox xpath


    【解决方案1】:

    在Xpath下面试试,应该可以的:

    (//BBB[@attrB='000']/CCC[@attrC='111'])[1]
    

    【讨论】:

    • 也没有用,直接子或间接子没有区别
    【解决方案2】:

    阅读 Selenium 如何处理 Xpath https://www.selenium.dev/documentation/en/

    Firefox 有绝对 XPath,无法处理 chrome 的 XPath。

    这里最好的方法是右键单击页面上的任何元素。在弹出菜单中选择“检查元素”。右键单击 Inspector 中的标签,然后从弹出窗口中选择“复制”并选择 XPath。将 XPath 粘贴到需要的位置。

    【讨论】:

      【解决方案3】:

      你为什么不使用类似的东西:

      //bbb[@attrb="000"][1]/ccc[@attrc="111"]
      

      输出:1 个节点:&lt;ccc target="11" attrc="111"&gt;

      【讨论】:

        猜你喜欢
        • 2022-12-07
        • 2016-07-04
        • 2018-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-11
        • 2018-09-30
        • 1970-01-01
        相关资源
        最近更新 更多