Selenium自动化测试_元素定位

Selenium 提供了8个元素定位的API,可以分为三种:

1. 标签定位策略
2. 属性定位策略
3. 通用定位策略

find_element 用来定位单个元素
find_elements 用来定位多个元素

1. 标签定位策略

LINK_TEXT :精确匹配
PARTIAL_LINK_TEXT :模糊匹配

1 driver.get("http://101.34.221.219:8010/") # 控制浏览器
2 el = driver.find_element(By.PARTIAL_LINK_TEXT, "") # 定位元素
3 print(el.tag_name, el.text) # 打印元素的信息

2. 属性定位策略

ID     NAME     TAG_NAME    CLASS_NAME

1 <input
2 id="search-input"
3 name="wd"
4 type="text"
5 placeholder="其实搜索很简单^_^ !"
6 value=""
7 autocomplete="off"
8 >
1 el = driver.find_element(By.TAG_NAME, "input")
2 print(el.tag_name, el.text) # 打印元素的信息
3 el = driver.find_element(By.ID, "search-input")
4 print(el.tag_name, el.text) # 打印元素的信息
5 el = driver.find_element(By.NAME, "wd")
6 print(el.tag_name, el.text) # 打印元素的信息

3. 通用定位策略

对于大部分的定位策略,其底层,是使用CSS或者XPath实现。

XPath 是一种查询语言,支持逻辑表达式和函数,可以实现复杂元素的动态定位,可以用于App自动化测试的定位。

1 //*[@id="search-input"]
2 /html/body/div[3]/div/div[3]/form/div/input
3 /html/body/div/../div

XPath 语法

/ (开头) :根路径
// :任一级
/ (在中间) :下一级
.  :当前节点(同级)
[n]  :序号 表示同级元素的序号
@ :属性 ,//input[@name="wd"]

../:上一级目录

 XPath 函数

text : 精确匹配                $x("//*[text()='iphoneX新品发布了']")
contains :模糊匹配        $x("//*[contains(@id,'new')]")
starts-with:开头一致      $x("//*[starts-with(text(),'iphoneX新品')]")

旧版selenium:find_element_by_xpath('//div[@id="lisi"]')
新版selenium:find_element(By.XPATH, '//div[@id="zhangsan"]')

 

这个世界上最大的能量就是心能,为什么有的人高位截肢了,他还会感到膝盖疼,西医解释不了,那是因为他心里还有膝盖。

posted @ 2023-01-09 18:39  心如__止水  阅读(82)  评论(0编辑  收藏  举报