Selenium之用xpath定位元素

selenium中有8种方式可以定位元素,分别为:ID、XPATH、LINK_TEXT、PARTIAL_LINK_TEXT、NAME、TAG_NAME、CLASS_NAME、CSS_SELECTOR,本文记录XPATH的使用方法。

根据路径选择

绝对路径

从根路径即html开始一层一层的往下找,即绝对路径。例如百度首页的按钮:

/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input

相对路径

即相对于其他路径而写的xpath。例如id为form的元素下的所有span子元素:

//*[@id="form"]/span

 

根据属性选择

常用属性有class、name、text等。举例说明:

表达式 说明

//span[@class='tools'] 

class等于tools的span元素。(注意:是等于!)
//div[contains(@class,"submit")] class包含submit的div元素。(注意:是包含!)
//a[contains(text(),'取消')] 文本内容包含"取消"的a元素
//input[@name='mobile'] name等于mobile的input元素
//input[@name="item"][not(@disabled)]/.. name等于item且没有disabled属性的input元素的父元素
 //*[@type='hidden'] type属性等于hidden所有元素。(注意通配符*)
 //input[@formcontrolname="username"] formcontrolname属性等于username的input
 ......

......

*只要是有的属性都可以,不一定是要自己见过的;

*可以写多个属性,表示都需要满足;

*用xpath可以实现所有情况的定位啊,超好用;

根据第几个来选择

根据找到的元素本身取,用(xpath)[1]

比如博客园的登录页面,根据xpath  //div[@class="mat-tab-label-content"]可以定位到两个元素,“密码登录”和“短信登录”;若只想取第一个,即密码登录,则用 (//div[@class="mat-tab-label-content"])[1];若只想取第二个,即短信的登录,则用(//div[@class="mat-tab-label-content"])[2]

背景颜色:#FFEFD5

组选择、父节点、兄弟节点

组选择

加上符号   |   即可。例如要选择所有的p元素和h4元素:

//p | //h4

父节点

某个元素的父节点用 /..   来选择。例如要选择百度首页id为su的元素的父节点:

//*[@id='su']/..

上上级父节点可以加多个/..,例如://*[@id='su']/../..

兄弟节点

选择后续的兄弟节点,可以使用:following-sibling:: 

1、后续所有兄弟节点:

//*[@name='ie']/following-sibling::*

2、后续的所有兄弟节点中的span元素:

//*[@name='ie']/following-sibling::span

3、后续的所有兄弟节点中的span元素且span元素的class包含bg:

//*[@name='ie']/following-sibling::span[contains(@class,'bg')]

选择前面的兄弟节点,可以使用:preceding-sibling:: 

例如://input[@name='f']/preceding-sibling::*

 

End.

posted @ 2022-04-14 16:17  youreyebows  阅读(736)  评论(0编辑  收藏  举报