【问题标题】:What is the difference between absolute and relative xpaths? Which is preferred in Selenium automation testing?绝对 xpath 和相对 xpath 有什么区别? Selenium 自动化测试中首选哪个?
【发布时间】:2015-01-26 19:11:48
【问题描述】:

绝对和相对 xpath 有什么区别? Selenium 自动化测试中首选哪个? 我正在使用 Selenium 和 Robot 框架准备测试脚本。

【问题讨论】:

    标签: xpath selenium-webdriver


    【解决方案1】:

    Absolute Xpath:它使用从根元素到期望元素的完整路径。

    Relative Xpath:您可以简单地从引用您想要的元素开始,然后从那里开始。

    相对 Xpath 始终是首选,因为它们不是来自根元素的完整路径。 (//html//正文)。因为将来,如果添加/删除任何 web 元素,那么绝对 Xpath 会发生变化。因此,请始终在您的自动化中使用相对 Xpath。

    以下是一些链接,您可以参考它们以获取更多信息。

    【讨论】:

    【解决方案2】:

    HTML DOM 中的绝对 xpath 以 /html 开头,例如

    /html/body/div[5]/div[2]/div/div[2]/div[2]/h2[1]
    

    和一个相对的 xpath 找到 dom 元素的封闭 id 并从该元素开始生成 xpath,例如

    .//*[@id='answers']/h2[1]/a[1]
    

    您可以使用 firepath (firebug) 来生成这两种类型的 xpaths

    在 selenium 中使用哪个 xpath 不会有任何区别,前者可能比后者更快(但它不会被观察到)

    绝对 xpath 更容易回归,因为 DOM 的微小变化会使它们无效或引用错误的元素

    【讨论】:

    • 这个答案是完全错误的。绝对 XPath 表达式不是以“html”开头的表达式,而是以/ 开头的表达式。您所描述的似乎是“位置”路径表达式与通过 ID 引用元素。
    • @MathiasMüller 答案是特定于 html dom 的,不是通用的,一般来说它不是真的。由于提到了硒,因此答案对用户有效。
    • @adnankamili 我不确定这是不是真的。例如,This page 表明以 /html 开头的路径将是绝对路径。
    • @MathiasMüller 是正确的; 这个答案是错误的html/bodyrelative location path/html/body 将是 absolute location path。请更正您的答案或将其删除。谢谢。
    • @adnankamili - 这个 xpath 怎么样 - //div[@id='123']/div ?这类似于绝对 xpath,对吧?
    【解决方案3】:

    考虑下面的Html

    <html>
      <body>
        <input type ="text" id="username">
      </body>
    
    </html>
    

    所以 绝对路径= html/body/input 和 相对路径 = //*[@id="username"]

    绝对 xpath 的缺点是维护成本很高,如果对 html 进行任何更改,它可能会干扰整个路径,而且有时我们需要编写较长的绝对 xpath,因此首选相对 xpath

    【讨论】:

      【解决方案4】:

      绝对 XPath: 它是查找元素的直接方法,但绝对 XPath 的缺点是,如果元素的路径发生任何更改,那么 XPath 就会失败。

      XPath 的关键特性是它以单个正斜杠(/)开头,这意味着您可以从根节点中选择元素。

      以下是绝对 xpath 的示例。

      /html/body/div[1]/section/div/div[2]/div/form/div[2]/input[3]
      

      相对 Xpath: 相对 Xpath 从 HTML DOM 结构的中间开始。它以双正斜杠 (//) 开头。它可以在网页上的任何位置搜索元素,这意味着无需编写很长的 xpath,您可以从 HTML DOM 结构的中间开始。始终首选相对 Xpath,因为它不是从根元素开始的完整路径。

      以下是相对 XPath 的示例。

      //input[@name=’email’]
      

      【讨论】:

        【解决方案5】:

        我们可以说主要有3个不同:

        1. Absolute 将以/ 开头,而Relative 将以// 开头
        2. 属性不用于绝对属性,而属性用于相对属性
        3. 绝对路径是完整路径,而相对路径是部分路径

        主要是相对是首选,绝对不是首选,因为它是一个完整的路径,并且由于动态性质,元素可能会发生变化,因此可能会破坏路径,因此首选相对。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-07
          • 2021-04-23
          • 1970-01-01
          相关资源
          最近更新 更多