selenium1. 介绍自动化2. selenium环境搭建3. WebDriver元素定位3.1 id定位3.2 name定位3.3 class_name定位3.4 tag_name定位3.5 link_text定位3.6 partial_link_text定位3.7 find_element[s]_by_XXX()3.8 Xpath定位3.9 CSS定位4. 元素操作4.1 常用操作4.2 浏览器常用方法4.3 WebDriver其它常用方法
selenium
1. 介绍自动化
-
web自动化:
selenium、robot framework
-
App端自动化测试:
Appium、Monkey
-
接口:
Jmeter、Postman、httpUnit、RESTClient
2. selenium环境搭建
-
python:下载python安装
-
下载WebDriver,可以去淘宝镜像下载,最好安装在python目录下,不需要单独配置环境变量
-
pip install selenium
3. WebDriver元素定位
-
定位方式8种:
1). id、name、class_name:为元素属性定位
2). tag_name:为元素标签名称
3). link_text、partial_link_text:为超链接定位(a标签)
4). Xpath:为元素路径定位
5). Css:为CSS选择器定位 -
Webdriver代码格式:
from selenium import webdriver # 导入库
driver = web driver.Chrome() # 打开浏览器
driver.get('url') # 填写http地址
driver.find_element_by_id("").send_keys("") # 做操作
driver.close() # 关闭当前页
driver.quit() # 关闭浏览器
3.1 id定位
-
说明:
- id属性在HTML文档种必须是唯一的
-
方式:
- find_element_by_id()
3.2 name定位
-
说明:
- HTML规定name属性来指定元素名称,因此它的作用更像人名,name的属性值在当前文档中可以不是唯一的
-
定位方法:
- find_element_by_name()
3.3 class_name定位
-
说明:
- HTML规定了class来指定元素的类名,用法和name、id类似;
-
定位方法:
- find_element_by_class_name()
-
注意:
- HTML的class元素里的名称如果用空格分隔,代表多个类名,写其中一个就行
3.4 tag_name定位
-
说明:
- HTML本质就是由不同的tag(标签)组成,而每个tag都是指同一类,所以tag定位效率低,
一般不建议使用;tag_name定位就是通过标签名来定位;
- HTML本质就是由不同的tag(标签)组成,而每个tag都是指同一类,所以tag定位效率低,
-
定位方法:
-
find_element_by_tag_name()
返回的符合条件的第一个标签
-
如何获取第二个元素?
-
3.5 link_text定位
-
说明:
- 专门定位超链接文本(<a>标签</a>)
-
方法:
- find_element_by_link_text()
需要传入a标签全部文本
定位后可以通过 .click() 来进行点击操作
- find_element_by_link_text()
3.6 partial_link_text定位
-
说明:
- partial_link_text定位是对link_text定位的补充,partial_like_text为模糊匹配;link_text全部匹配
-
方法:
- find_element_by_partial_link_text()
传入a标签局部文本
- find_element_by_partial_link_text()
3.7 find_element[s]_by_XXX()
-
element加了s
-
作用:
- 1. 查找定位所有符合条件的元素
2. 返回的定位元素格式为数组(列表)格式;
说明:
2.1 列表数据格式的读取需要指定下标(下标从0开始)
- 1. 查找定位所有符合条件的元素
-
例子
-
使用tag_name获取第二个元素(密码框)
driver.find_elements_by_tag_name("input")[1].send_keys("123456")
-
3.8 Xpath定位
-
Xpath和CSS定位可以解决,项目中没有id、name、class属性,或者id、name、class属性值为动态获取,随着刷新或加载而变化
-
方法
- driver.find_element_by_xpath()
-
Xpath定位方式
-
路径-定位:绝对路径、相对路径
-
绝对路径:从最外层元素到指定元素之间所有经过元素层级路径
- 绝对路径以 ‘/’开始
-
相对路径:从第一个符合条件元素开始(一般配合属性来区分)
- 相对路径以‘//’开始
-
-
利用元素等级定位
- 利用元素的唯一属性定位 :
//*[@id='userA']
- 利用元素的唯一属性定位 :
-
层级与属性结合
- 要找的元素没有属性,但是它的父级有:
//*[@id='p1']/input
- 要找的元素没有属性,但是它的父级有:
-
属性与逻辑结合
- 解决元素之间个相同属性重名的问题:
//*[@id='telA' and @class='telA']
- 解决元素之间个相同属性重名的问题:
-
//[text()="xxx"] 文本内容是xxx的元素
//[starts-with(@attribute,'xxx')] 属性以xxx开头的元素
//*[contains(@attribute,'Sxxx')] 属性中含有xxx的元素
-
3.9 CSS定位
-
CSS定位速度Xpath要快
-
CSS定位方法
- driver.find_element_by_css_selector()
-
方式
-
id选择器
- 说明:根据元素id属性来选择
格式:#id 如:#userA <选择id属性值为userA的所有元素>
- 说明:根据元素id属性来选择
-
class选择器
- 说明:根据元素class属性来选择
格式:.class 如:.telA <选择class属性值为telA的所有元素>
- 说明:根据元素class属性来选择
-
元素选择器
- 说明:根据元素的标签名选择
格式:element 如:input <选择所有input元素>
- 说明:根据元素的标签名选择
-
属性选择器
- 说明:根据元素的属性名和值来选择
格式:[attribute=value] 如:[type="password"] <选择所有type属性值为password的值>
- 说明:根据元素的属性名和值来选择
-
层级选择器
- 说明:根据元素的父子关系来选择
格式:element>element 如:p>input <返回所有p元素下所有的input元素>
提示:> 可以用空格代替 如:p input 或者 p [type='password']
- 说明:根据元素的父子关系来选择
-
1. input[type^='p'] 说明:type属性以p字母开头的元素
2. input[type$='d'] 说明:type属性以d字母结束的元素
3. input[type*='w'] 说明:type属性包含w字母的元素
-
-
CSS功能
-
选择器 例子 描述 #id #userA id选择器,选择id="userA"的所有元素 .class .telA class选择器,选择class="telA"的所有元素 element input 选择所有input元素 [attribute=value] [type="password"] 选择type="password"的所有元素 element>element p>input 选择所有父元素为p元素的input元素 -
XPath与CSS类似功能对比
定位方式 XPath CSS 元素名 //input input id //input[@id='userA'] #userA class //*[@class='telA'] .telA 属性 1. //※[text()="xxx"] 2. //※[starts-with(@attribute,'xxx')] 3. //※[contains(@attribute,'xxx')] 1. input[type^='p'] 2. input[type$='d'] 3. input[type*='w']
4. 元素操作
4.1 常用操作
-
clear():清除文本 一般清除input输入的值
-
send_keys:模拟输入
-
click():单击元素
4.2 浏览器常用方法
1. maximize_window() 最大化 --> 模拟浏览器最大化按钮
2. set_window_size(100,100) 浏览器大小 --> 设置浏览器宽、高(像素点)
3. set_window_position(300,200) 浏览器位置 --> 设置浏览器位置
4. back() 后退 --> 模拟浏览器后退按钮
5. forward() 前进 --> 模拟浏览器前进按钮
6. refresh() 刷新 --> 模拟浏览器F5刷新
7. close() 关闭 --> 模拟浏览器关闭按钮(关闭单个窗口)
8. quit() 关闭 --> 关闭所有WebDriver启动的窗口
4.3 WebDriver其它常用方法
1. size 返回元素大小
2. text 获取元素的文本
3. title 获取页面title
4. current_url 获取当前页面URL
5. get_attribute() 获取属性值
6. is_display() 判断元素是否可见
7. is_enabled() 判断元素是否可用
网友评论