让我们来看看高级定位器XPath的情况吧

253 阅读3分钟

阅读时间: 3 分钟

在Selenium自动化中,如果元素没有被一般的定位器如id,class,name等找到,那么XPath被用来寻找网页上的一个元素。在这篇博客中,我们将专注于高级定位器功能,如包含,同胞,祖先和Selenium AND/OR孩子,父母 ,他们是XPath 1.0库的功能。我们已经在之前的博客中讨论了关于定位器和xpath。你可以看一下这里。通过这些函数的组合,我们可以在Selenium中创建更具体的XPath。其中一些是:-

Selenium中的Contains()

Contains()是Xpath表达式中的一个函数,用于识别一个元素,当我们熟悉一个元素的某些部分属性值的时候。我们可以使用XPath contains()函数在整个网页上提取所有符合给定文本值的元素。Contains可以找到部分文本的元素。

通过XPath- Using contains()方法定位元素的语法可以写成。


//<HTML tag>[contains(@attribute_name,'attribute_value')] 

or

//*[contains(@attribute_name,'attribute_value')]   

使用XPath- conatins()方法,我们可以将Java代码与动态XPath定位一起写成。

findElement(By.xpath("//a[contains(text(),'LEARN MORE')]")

Selenium中的兄弟姐妹

Selenium Webdriver中的Sibling是一个用于获取网络元素的函数,它是父元素的兄弟姐妹。它确定了上下文节点的兄弟姐妹。这些兄弟姐妹应该位于现有节点的相同级别,并且应该有相同的父元素。

后面的包含在上下文节点之后出现的所有节点,按文档顺序排列
following-sibling选择当前节点之后的所有兄弟姐妹
前面的包含所有出现在上下文节点之前的节点,按文档顺序排列
前面的兄弟姐妹包含上下文节点的前面的兄弟姐妹。
//input[@id='email']/following::*

//select[@id='day']/following-sibling::*

//input[@id='pass']/preceding::tr

//select[@id='item']/preceding-sibling::*

Selenium中的祖先

为了在父元素的基础上找到一个元素,我们可以使用XPath的祖先属性。父轴最多只包含一个节点。

祖先选择当前节点的所有祖先(父,祖父,等)。
ancestor-or-self选择当前节点的所有祖先(父辈、祖辈等)和当前节点本身。
//div[.//a[text()='KNOLDUS']]/ancestor::div[@class='rt-grid-2 rt-omega']

Selenium中的父节点

Selenium中的父节点是一种用于检索网页中选择的当前节点的父节点的方法。父轴最多只包含一个节点。父节点可以是根节点,也可以是元素节点。
根节点没有父节点;因此,当上下文节点是根节点时,父轴是空的。对于所有其他元素节点,父轴包含一个节点。

父节点选择当前节点的父节点
parent::node()

The below example will selects the parent node of the input tag of Id='email'.
Ex: //input[@id='email']/parent::*

the above can also be re-written as 
//input[@id='email']/..

Xpath=//*[@id='rt-feature']//parent::div

在Selenium中使用AND和OR

OR 表达式使用两个条件,第一个条件或第二个条件是否为真。它也适用于任何一个条件为真,或者可能两个条件都为真。这意味着任何一个条件都应该是真的,才能找到这个元素。

在下面的XPath中,它确定了单个或两个条件都是真的元素。

XPath=//*[@id='FirstName' or @name='LastName']

突出显示这两个元素,因为'First Name'元素有属性'id','Last Name'元素有属性'name'。

AND 表达式使用两个条件。两个条件都应该为真,才能找到该元素。如果任何一个条件是假的,它就不能找到该元素。

XPath=//*[@id='FirstName' and @name='FirstName']

在下面的表达式中,我们强调了'First Name'元素,因为它有'id'和'name'两个属性。

Xpath=//*[@type='submit' OR @name='btnReset']


Xpath=//input[@type='submit' and @name='btnLogin']

是时候说再见了。我希望你喜欢这个博客。更多此类有趣的博客,请继续浏览Knoldus博客页面

分享Knol。

相关信息