使用XPath在Selenium中寻找元素

时间:2019-05-24 06:53:58

标签: selenium selenium-webdriver xpath

在Selenium中查找元素时, XPath 中的“ .//”,“ //”,“ ./”和“ /” 有什么区别?描述。

3 个答案:

答案 0 :(得分:3)

XPath定义:

.// - Find something that is a descendant of the current node
//  - Find something that is anywhere in the DOM
./  - Find a child node of the current node
/   - Find a child of the root of the document

但是在Selenium中,//和//不遵循XPath规范,并且具有相同的含义,在本例中是在DOM中的任何地方找到

*编辑*

由于这似乎有些争议,所以这里有一些其他信息。

Selenium在其JavaScript原子中使用了邪恶的XPath(请参见Selenium codebase)。

虽然速度很快,却不是很好的XPath实现,它并不是一个完全兼容的XPath实现,并且不能在所有情况下都正确实现//,因此上面的断言要求您将.//和//都视为操作符以在DOM(请参见this wicked good XPath issue

答案 1 :(得分:1)

  1. .//-匹配表达式的所有节点的相对选择
  2. //-匹配表达式的所有节点的绝对选择
  3. ./-不是有效的XPath表达式
  4. /-选择文档的根节点

更多信息:

答案 2 :(得分:1)

xpath中点(。)的含义:

  • 单点(。)-指向当前元素。
  • 双点(..)-指向父元素。

“ /”单斜杠和“ //”双斜杠的含义:

  • 单斜杠'/'-搜索子元素。
  • 双斜杠“ //”: 它搜索子元素以及子元素。简而言之,它作为后代工作。
  • '//'是一个宏,它的扩展是:/ descendant-or-self :: node()/

问题的答案:

  • //-搜索DOM中的后代或自身节点
  • .//-搜索后代或自身节点,分别对应当前节点

  • /-搜索子节点

  • ./-搜索与当前节点相对应的子节点
  

有关更多信息,请参见:   https://www.linkedin.com/pulse/basics-xpath-pritam-maske/