Selenium
what:进行web网站的自动化测试,提供了操控网页的功能,包括向网页中put和从网页中get
how:提供了库,针对不同语言提供了不同语言的库
一、自动化原理
三部分组成:自动化程序+浏览器驱动器+浏览器
- 自动化程序
使用selenium提供的库,编写的测试脚本(向驱动器发送一些http网络消息)浏览器驱动器
将脚本发送来的消息,转换成浏览器可以理解的请求;将浏览器的响应返回给脚本浏览器
不同浏览器需要安装不同的浏览器驱动器,注意版本号匹配(浏览器胶囊按钮-帮助-关于)
自动化原理图
二、基本使用
1、安装
安装selenium
java
1)在maven中添加selenium依赖
2)在命令行窗口执行安装命令,安装selenium以及相关依赖mvn clean install
python
1)pip install selenium安装浏览器驱动器
去官网下载和浏览器版本号一致的driver,(驱动器.exe存放目录后面跑脚本的时候要用)安装浏览器
2、使用
编写自动化测试程序
1)创建WebDriver对象webDriver,相当于一个浏览器驱动器的实例
2)通过webDriver调用接口进行元素的选择和操作
运行
三、核心功能
1、选择元素
By.ID:通过id属性By.CLASS_NAME:通过class属性By.TAG_NAME:通过标签名By.CSS_SELECTOR:通过CSS选择器By.XPATH:通过Xpath(比css方便好用)
| CSS | Xpath | |
|---|---|---|
| 所有标签 | 标签名 | //标签名 |
| class值为xx的元素 | .class属性值 | [@class=“属性值”] |
| id为xx的元素 | #id属性值 | [@id=“属性值”] |
| 属性aa为xx的元素 | [属性名=“属性值”] | [@属性名=“属性值”] |
| A的直接子元素B | A>B | //A/B |
| A的后代元素B | A空格B | //A//B |
| A后第一个兄弟元素B | A+B | //A/follwing-sibling::B[1] |
| A后所有兄弟元素B | A~B | //A/follwing-sibling::B |
| A和B元素 | A,B | A|B |
| A前面的兄弟元素 | //A/preceding-sibling:: * | |
| A的父元素 | //A/… | |
| 当前元素内找A | ./A | |
| 以xx开头 | [属性名^=“属性值”] | [starts-with(@属性名=“属性值”)] |
| 以xx结尾 | [属性名$=“属性值”] | [ends-with(@属性名=“属性值”)] |
| 包含xx | [属性名*=“属性值”] | [contains(@属性名=“属性值”)] |
| 前两个A元素 | //A[postion()>=2] | |
| 后两个A元素 | //A[postion()>=last()-1] | |
| 第两个A元素 | A:nth-of-type(2) | //A[2] |
2、操作元素(e)
清除e.clean()获取属性e.getAttribute()获取元素文本e.text获取元素htmle.outerHTML转换frame驱动器对象.switchTo.frame()转换窗口驱动器对象.switchTo.windows(jhandle)双击、移动等,由ActionChains类…
教程参见:https://www.byhy.net/tut/auto/selenium/01/



