硒中:: ::的含义是什么

JAVA开发人员

::的确切含义是什么?除了父母,我们还能使用什么不同的东西?

By.xpath("parent::*/parent::*")
马蒂亚斯·穆勒(Mathias Mueller)

我能管理的最短答案

:: 在XPath表达式中将轴名称与节点测试分开。

更长的答案

询问“::在硒中”的含义没有多大意义,因为它不是硒的功能。它属于XPath,它本身就是W3C规范,用于浏览XML或XHTML文档。

By.xpath("   parent::*/parent::*    ")
    ^                 ^             ^
Selenium            XPath        Selenium

Selenium恰好将XPath嵌入其Web应用程序框架中(这是一件好事!)。

因此,我可以自由回答以下问题:XPath中的含义是::什么?

::XPath中的含义

在XPath中,::它并不意味着任何东西,只有在存在

  • 左侧的有效XPath轴标识符
  • 右侧的有效节点测试

例如,parent::*是有效的XPath表达式1在此,parent是一个XPath坐标轴名称,*是一个节点测试2 -和::马克从轴线到节点测试的过渡。其他可能的轴是

ancestor              following-sibling
ancestor-or-self      namespace
attribute             parent
child                 preceding
descendant            preceding-sibling
descendant-or-self    self
following

当然,这些不只是名称,它们还有一个非常明确的语义维度:它们每个都定义了一种导航XML文档的独特方法(或者更确切地说,是这种文档的树状表示)。在大多数情况下,它们的含义很简单,例如,它们following::标识“跟随”当前上下文的事物。

可以使用二元/运算符将这些轴和节点测试(或三元组,也包括谓词)的元组“链接在一起”,以形成包含以下步骤的路径

outermost-element/other/third

浏览一个简单的文档

<root>
    <person>James Clark</person>
    <person>Steve DeRose</person>
</root>

自然,导航可能在很大程度上取决于您当前的下落。有绝对路径表达式和相对路径表达式。绝对路径表达式的一个示例是

/child::root/child::person      | abbreviated syntax:     /root/person

如您所见,/绝对路径表达式的开头有一个。它代表文档节点(树的最外层节点,不同于一棵树的最外层元素节点)。相对路径表达式看起来像

child::person                   | abbreviated syntax:     person

person如果当前上下文元素节点,则相对路径表达式将仅找到root元素节点。否则,它将找不到任何东西。

您的XPath表达式

总结和使用到目前为止所学的知识:

By.xpath("parent::*/parent::*")

查找作为当前节点的祖父母的元素节点。父节点和祖父母节点的名称都没有关系(这就是*目的)。/开头没有,所以它必须是相对路径。


1实际上,它是一个位置路径,一种特殊的XPath表达式。另外,我遗漏了一个重要的概念:谓词好东西总是三分之二,XPath表达式带有轴,节点测试以及零个或多个谓词。

2节点测试必须是名称测试(测试节点的名称)或种类测试(测试节点的种类)。在XPath规范相关部分中找到有关节点测试的大量信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

gradle中“ with”的含义是什么

来自分类Dev

Prolog中(+,?,?)或(-,-,+)的含义是什么?

来自分类Dev

Lua中for ...的含义是什么?

来自分类Dev

TypeScript中“:”的含义是什么?

来自分类Dev

JavaScript中“ ===”的含义是什么?

来自分类Dev

硒中的EventFiringWebDriver是什么?

来自分类Dev

Segmentation Fault中“代码”的含义是什么

来自分类Dev

Python Tkinter中.xxxxxxx的含义是什么

来自分类Dev

规范中此注释的含义是什么?

来自分类Dev

Go中“ ... Type”的含义是什么?

来自分类Dev

在此scala代码中_的含义是什么?

来自分类Dev

NSURLErrorDomain中的代码的含义是什么?

来自分类Dev

C ++中void * volatile *的含义是什么

来自分类Dev

编程中实例的含义是什么?

来自分类Dev

在lucene中查询*:value的含义是什么?

来自分类Dev

PHPUnit中模拟对象的含义是什么?

来自分类Dev

“#”栏中红色圆圈的含义是什么?

来自分类Dev

TParallel.For中AStride的含义是什么?

来自分类Dev

这句话中“&”符号的含义是什么?

来自分类Dev

scp命令中-f的含义是什么?

来自分类Dev

perl中\ 0的含义是什么?

来自分类Dev

C ++中“ Class <>”的含义是什么?

来自分类Dev

UML中双倍减号的含义是什么

来自分类Dev

RegExp中“ | e”的含义是什么

来自分类Dev

$(Q)@:在Makefile中的含义是什么

来自分类Dev

快速地,括号中的含义是什么?

来自分类Dev

mysql查询中<>的含义是什么?

来自分类Dev

.css文件中“ @include”的含义是什么?

来自分类Dev

乳胶中@符号的含义是什么