UI自动化学习:Selenium WebDriver 定位之Xpath定位

Selenium 定位之Xpath定位:

 1、绝对路径定位以/开头从根节点一直找到当前节点,不推荐使用决定路径定位方式

 

2、相对路径定位:使用“//”表示相对路径定位,格式://标签名[ @属性= "属性值"]

  列如://area[@hidefocus="true"]

 

3、索引定位:即下标定位,格式:标签名[下标]

  列如://div[2]

 

4、属性值定位:格式://标签名[ @属性= "属性值"]

  列如://area[@id="account"]

  除了上述的id还有nameclassshapetitlehref 等属性

 

5、使用模糊函数定位:contains(),第一个入参是属性,第二个是第一个参数中的属性值包含的内容;格式://标签名[contains( @属性, "属性值")]

百度搜索 的input框

  列如://input[contains(@alog-action, 'earc')]

  这里的alog-actio属性的值是search,使用contains方法时会自动匹配包含earc的alog-action的input标签

 

6、轴定位:用::表示,选择当前节点的父节点(parent)、子节点(child)、祖先节点(ancestor)、子孙节点(descendant)、后节点(following)前节点(preceding)、后兄弟节点(following-sibling)、前兄弟节点(preceding-sibling)

  列如://input[@id='su']/parent::span

百度搜索 的input框的父类标签

 

  如图:先找到id为su的input标签;再查找父类class为bg s_btn_wr的span标签

     另:如果::后面是*,则表示取所有符合条件的元素

 

7、文本text定位:通过html标签的文本定位的方法,格式://标签名[text( )= "text值"]
 
text 百度热榜
 
  列如://div[text()="百度热榜"]
  备注:部分标签没有text值;故不能使用此方法
 
END:
  xpath定位支持结合运算符定位:常用的有and和or,这里主要分享and和or的用法,其他请自行了解,我们还是以百度搜索输入框为列:
运算符

  如上图:使用and连接多个属性值  配合定位。

 

or的用法

 

 

   如上图:使用or连接多个属性值  配合定位了两个标签;当然也可以定位一个标签,如://input[@id='kw' or @name='wd' ]这样写的话;就会定位出id等于kw或者name=wd的标签(如果是id和name的值等于两个标签的属性就会定位出两个标签,当然我这里是定位了一个标签)。。。

  
 
 
个人分享:
  1、xpath定位建议优先使用id、name,
  2、其次使用变动较小的属性值来作为定位方式,
  3、text值可以一眼看出来定位的标签是哪一个,
  4、模糊定位很可能定位多个或者随着前段改动受到匹配精度的影响,
  5、下标定位适合该标签没有可定位属性或者非常不好定位再使用,
  6、轴定位适合该标签其他方式都不容易定位的情况再使用。

 

posted @ 2020-09-09 19:56  不周之风  阅读(338)  评论(0编辑  收藏  举报