自动化测试 Xpath选择器一些注意点

1、Xpath表达式:比较强大、灵活的选择元素的方式

2、目前主流的浏览器chrome、firefox、edge、safari都支持xpath语法,xpath和xpath2两个版本,目前支持的是xpath1的语法

3、Xpath:爬虫框架Scrapy、手机APP框架 Appium

 

一、

根据id属性来选择:[@属性名=“属性值”]

选择id为tes的元素  //*[@id='tes']

选择有id属性的元素 //*[@id]

选择所有属性id名 且tag为p  //p[@id]

 

二、

根据class选择:注意 属性值必须一模一样,

div元素 //div[@class='tes']

 

三、

选择属性包含multiple的元素

<select class="multi_choice" multiple>

//*[@multiple]

 

四、

CSS:选择属性值包含某个字符串的元素abc

a[href*="abc"]

CSS::选择属性值某个字符开头的

a[href^='http']

CSS:选择属性值谬个字符串结尾的元素

a[href$='gov.cn']

Xpath:属性style 含有color

//*[contains(@style,'color')]

XPath:属性style以color开头//*[starts-with(@style,'color')]

目前浏览器不支持:以..为结尾

 

五、

Xpath : 可以按照次序选择:

选择p元素的第二个子元素://p[2]

父元素为div中的p的第二个元素

//div/p[2]

p类型的最后一个元素

//p[last()]

倒数第二个元素

//p[last()-1]

 

六、

xpath:可以选择子元素的次序范围

比如:选择option类型的第一个到第二个子元素

//option[position()<=2]  or  //option[position()<3]

获取class属性为a的前三个子元素

//*[@class='a']/*[position()<3]

选择后三个元素

//*[@class='a']/option[position()>=last()-2]

 

七、

组选择器

选择所有的option和h4元素,可以使用

// option | //h4

选择所有clss为a和class b的元素 可以使用:

//*[@class='a'] | //*[@class='b']

 

八、

选择父节点

/..:属性本身没有什么特征

选择id为b的父节点

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

 

九、

兄弟节点 : following-sibling::

选择class为b的元素的所有后续兄弟节点div

//*[@class='b']/follwing-sibling::div

选择前面的兄弟节点

//*[@class='b']/preceding-sibling::div

 

十、

陷阱:找某个对象的内部的p,则需要在前面加上,

需要在某个对象加上.

c = self.driver.find_element_by_id("c")

e = c.find_elements_by_xpath(".//p")

 

posted @ 2020-10-12 22:14  CWZzzzz  阅读(283)  评论(0编辑  收藏  举报