::的确切含义是什么?除了父母,我们还能使用什么不同的东西?
By.xpath("parent::*/parent::*")
::
在XPath表达式中将轴名称与节点测试分开。
询问“::
在硒中”的含义没有多大意义,因为它不是硒的功能。它属于XPath,它本身就是W3C规范,用于浏览XML或XHTML文档。
By.xpath(" parent::*/parent::* ")
^ ^ ^
Selenium XPath Selenium
Selenium恰好将XPath嵌入其Web应用程序框架中(这是一件好事!)。
因此,我可以自由回答以下问题: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] 删除。
我来说两句