Web元素定位方法_8大元素+xpath定位

Posted Dan monkey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web元素定位方法_8大元素+xpath定位相关的知识,希望对你有一定的参考价值。

元素定位,顾名思义就是根据元素的特征,来确认元素的条件,然后根据条件去找到唯一的那个元素。

一、八大元素

1、只根据元素的一个属性来找元素(6大)

1)id、name、class_name(只支持一个class值)、tag_name 

2)只针对a元素

link_text、partial_link_text

示例:

 

 1 # class - 只能是class属性当中的一个值
 2 driver.find_element_by_class_name("s_ipt")   # 1个元素 - 匹配到的第1个元素
 3 driver.find_elements_by_class_name("s_ipt")   # 所有匹配多个元素 - 列表
 4 
 5 # name
 6 driver.find_element_by_name("wd")
 7 driver.find_elements_by_name("wd")
 8 #
 9 #  tag
10 driver.find_element_by_tag_name("input")
11 driver.find_elements_by_tag_name("input")
12 #
13 #  link_text
14 driver.find_element_by_link_text("地图")
15 driver.find_elements_by_link_text("地图")
16 #
17 # # partial_link_text
18 driver.find_element_by_partial_link_text("hao")
19 driver.find_elements_by_partial_link_text("hao")

 

2、多个属性组合来找元素或者通过其它的关系来找元素(2大)-

1)绝对定位: 以/开头, 父/子

根据继承顺序、同级位置顺序一层一层的找,与在windows文件目录,需要一层一层的打开找到对应的文件(逐层打开)。

示例:

/html/body/div[2]/div[3]/div/div/div[2]/div[3]/i[1]

/*[@id="number-attend"]/div[2]/div[3]/i[1]

//div[@id="number-attend"]//i[@class="ing

2)相对定位(Xpath定位):靠自己的特征来定位,自己唯一的标识,以//开头

 

二、Xpath定位

(在当前需定位的页面按F12下elements当中,按Ctrl +F,弹出表达式确认框)

1、根据元素的唯一属性(标识来定位)

表达式格式://标签名[@属性=值]

示例://i[@class="ing"]

//*[@*="ing"]

2、文本匹配

表达式格式://标签名[text()=值]

示例://a[text()="公告"]

3、包含

表达式格式://标签名[contains(@属性/text(),值)]

示例://a[contains(@href,"/Notify/index/courseid/")]

//a[contains(text(),"公告")]

4、辑运算 来组合更多的元素特征。 and or

表达式格式:

1)//标签名[@属性=值 and @属性=值 and contains(@属性/text(),值) and text()=值]
2)//标签名[@属性=值 or @属性=值]

示例://a[text()="公告" and contains(@href,"/Notify/index/courseid/")]

5、层级定位://一级元素//二级元素//......

示例://div[@id="number-attend"]//i[@class="ing"]

6、轴定位: 关系 - 分析元素之间的关系,页面的结构。

1)通过兄弟姐妹找到自己

2)通过后代元素来找到 祖先元素

轴运算:

ancestor:祖先结点 包括父

parent:父结点 给g

preceding: 当前元素节点标签之前的所有结点。(html页面先后顺序)

preceding-sibling: 当前元素节点标签之前的所有兄弟结点

following: 当前元素节点标签之后的所有结点。(html页面先后顺序)

following-sibling:当前元素节点标签之后的所有兄弟结点

使用语法:

已知的元素/轴名称::标签名称[@属性=值]

例://div//table//td//preceding::td

//p[@title="余粮"]/preceding-sibling::p[@class="stuno"]

//p[@title=”余粮"]/parent::*/following-sibling::li//p[@class="name"]

1 # 直接写By,按Alt+Enter进行导入即可
2 from selenium.webdriver.common.by import By
3 element = driver.find_element(By.XPATH,//p[@title="余粮"]/preceding-sibling::p[@class="stuno"])
4 element_list = driver.find_elements(By.XPATH,//p[@title="余粮"]/preceding-sibling::p[@class="stuno"])

 

以上是关于Web元素定位方法_8大元素+xpath定位的主要内容,如果未能解决你的问题,请参考以下文章

selenium怎么定位页面元素

Xpath定位大全

Appium之xpath定位元素

selenium中为啥依据xpath定位html页面左边树形菜单无效

web自动化——元素定位

Web自动化测试:xpath元素定位深入讲解