Selenium
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、选择元素
- 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 - 获取元素html
e.outerHTML - 转换frame
驱动器对象.switchTo.frame() - 转换窗口
驱动器对象.switchTo.windows(jhandle) - 双击、移动等,由ActionChains类
- …
教程参见:https://www.byhy.net/tut/auto/selenium/01/
|