绝对和相对xpath有什么区别?哪个在Selenium自动化测试中首选?

时间:2014-11-28 06:47:11

标签: xpath selenium-webdriver

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

4 个答案:

答案 0 :(得分:9)

绝对Xpath :它使用从根元素到欲望元素的完整路径。

相对Xpath :您只需从引用所需元素开始,然后从那里开始。

始终相对Xpath是首选,因为它们不是Root元素的完整路径。 (// html // body)..在将来添加/删除任何webelement然后绝对Xpath更改时。因此,请始终在自动化中使用相对X路径。

以下是一些链接,您可以参考这些链接以获取更多相关信息。

答案 1 :(得分:6)

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)生成两种类型的xpath

你在硒中使用的xpath没有任何区别,前者可能比后者快(但它不会被观察到)

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

答案 2 :(得分:1)

考虑下面的Html

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

</html>

所以绝对路径 = html / body / input 和相对路径 = // * [@ id =“用户名”]

Absolute xpath的缺点是维护很高,如果在html中有任何改变可能会干扰整个路径,有时我们需要编写长绝对x路径,所以相对xpath是首选

答案 3 :(得分:0)

绝对 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’]