初识selenium(一)
介绍
1.selenium版本
selenium 1:
selenium IDE :Firefox插件,录制,回放
selenium RC:JS类库,支持各种语言
selenium Grid:分布式执行,主机控制执行机执行代码
selenium 2:selenium 1+webdriver(谷歌产品,代码控制浏览器)
selenium 3(现在多数使用的):在 selenium 2基础上增加了一些方法
2.工作原理
client(脚本)请求 webdriver(remote server),使用session绑定,脚本向driver发送http请求,driver响应请求而驱动浏览器(浏览器实现了driver各种动作的接口),即代码就是客户端,driver就是服务器,是典型的C/S设计;
3.webdriver协议
webdriver协议:The WebDriver Wire Protocol(http二次封装)是一套json格式的规范(http请求body),本身是基于http协议的,这个协议规定了每个操作对应的数据格式;
webdriver作为一个服务端,需要实现协议中的每一个操作作为客户端的库文件需要封装好给用户使用的api,每个api对应着协议中不同的数据格式,这些数据封装在http中的body中,数据格式内容和具体的操作一一对应selenium中的webdriver就是浏览器驱动,比如ChromeDriver等,驱动实现了webdriver协议appium中的webdriver是appium server通俗地说:由于客户端脚本(java, python, ruby)不能直接与浏览器/手机通信,这时候可以把webdriver server当做一个翻译器,它可以把客户端代码翻译成浏览器/手机可以识别的代码(比如js),客户端通过http请求向webdriver server发送restful的请求,webdriver server翻译成浏览器/手机懂得脚本传给浏览器/手机,浏览器/手机把执行的结果返回给webdriver server,webdriver server把返回的结果做了一些封装(JSON Wire protocol),然后返回给客户端脚本,客户端根据返回值就能判断对浏览器/手机的操作是否执行成功协议就像是一个抽象类,规定了方法,以及触发方法所需要的数据格式和内容,但是没有具体实现;服务端需要具体去实现这些方法;客户端则需要按照协议规定的数据格式和内容去封装提供给用户的api
4.适合ui自动化的项目
系统变更不频繁,项目长期且稳定,每次上线有大量功能需要回归;
环境搭建
1.添加maven依赖
在pom.xml文件中添加依赖,selenium依赖地址:https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/3.141.59
2.driver下载
一般使用chromedriver,需要考虑chromedriver和Chrome的版本兼容,Chromedriver下载地址:
http://chromedriver.storage.googleapis.com/index.html
测试
打开Chrome:浏览器是默认安装路径:System.setProperty("驱动类型","驱动路径");默认安装路径时,selenium会自动去找默认的安装路径找浏览器,不用特意注明安装路径
public class OpenBrowser { public static void main(String[] args) {
//设置driver类型 和 driver存放的路径 System.setProperty("webdriver.chrome.driver","E:\\chromedriver_win32\\chromedriver.exe");
//打开浏览器 WebDriver driver=new ChromeDriver(); driver.get("http://www.baidu.com"); } }