selenium简介及环境搭建
Selenium简介
1.Selenium简介及组成
selenium是一种web自动化测试工具,它可以在主流的浏览器上运行,支持的语言有java, python,javascript
selenium主要有三部分组成:
Selenium IDE:录制和回放脚本,可以模拟用户对页面的真实操作,区别于其他工具:是通过拦截http请求。
一般只把录制脚本当作一个辅助功能,因为一个UI节点的细微变化,都可能导致自动化测试工具无法识别,当测试项目项目大时,定位、更新十分困难。
其次,录制的脚本有时候人工难以理解。
Selenium Grid:实现在多台机器上、和异构环境中并行执行测试用例。并行执行不仅节省时间,而且可以同时在不同的浏览器、平台上运行自动化测试脚本。
Selenium Web Driver:针对各个浏览器而开发,通过原生浏览器支持或者扩展(Chrome webDrive、FireFox WebDriver)直接控制浏览器
Selenium RC(Selenium1.0):在浏览器中运行javaScript,使用浏览器内置的JavaScript来翻译和执行selense
2.Selenium特点
支持录制和回放(Selenium IDE)
通过WebDriver,直接控制浏览器,而不是通过拦截HTTP请求,实现真正模仿了用户的操作;同时使用WebDriver能够灵活的获取页面元素(WebDriver),并且提供执行JS的接口
能够分布式运行在不同机器和异构环境中(不同浏览器)
3. Selenium的内部运行机制?如何能够跨浏览器使用?——WebDriver原理(&RC原理)
1)RC原理
在Selenium1.0中,是通过Selenium RC服务器作为代理服务器去访问应用从而达到测试的目的。
Selenium RC分为三个部分,Launcher、HttpProxy、Core。
Launcher用于启动浏览器,把Selenium Core加载到浏览器中,并且把浏览器的代理设置为Selenium Server的Http Proxy。
Core是一堆JavaScript的集合,所以本质相当于运行这些JavaScript函数来实现对Html页面的操作。——这也是为什么可以运行在几乎所有主流的浏览器上。
然而直接运行JavaScript会有极大的安全漏洞,所以会受到“同源限制”,在这个基础上,Selenium2.0引入了WebDriver。
2)Web Driver原理
webDriver是按照client/server模式设计的。client是我们的测试脚本,发送请求;server就是打开的浏览器,用来接收client的请求并作出响应。
具体的工作流程:
webDriver打开浏览器并绑定到指定端口。启动的浏览器作为远程服务器remote server
client通过CommandExecuter发送http请求给远程服务器的侦听端口(the wire protocal)
远程服务器根据原生的浏览器组件来转化为浏览器的本地(native)调用
所以web Driver用到的协议:
打开浏览器时:HTTP协议
client端发送http请求到远程服务器的侦听端口:the wire protocol
其中:
有线协议:指的是从点到点获取数据的方式,是应用层的协议。
HTTP协议:是用于从服务器传输超文本标记语言HTML到客户端的通信协议。是一个应用层协议,由请求/响应构成,是一个标准的客户/服务器模式。是一个无状态的协议。
(无状态:对事务没有记忆能力,不会保存这次传输的信息——节约内存)
环境搭建
1.安装java运行环境
2.下载selenium IDE : https://www.seleniumhq.org/download/
下载chromedriver.exe : http://selenium-release.storage.googleapis.com/index.html
3.新建一个java项目,在其下面创建一个libs的文件夹,将selenium-java.zip中的jar包都拷贝进去
4.鼠标右击java项目->Build Path -> Config build path -> java build Path -> Libraries -> Add JARs
如下所示,添加jar包成功
6.编写代码启动Chrome浏览器
package com.java.sele; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class Test { public static void main(String[] args) { WebDriver driver; //设置浏览器驱动环境变量 System.setProperty("webdriver.chrome.driver", "C:\Program Files (x86)\ChromeCore\chromedriver.exe"); driver = new ChromeDriver(); driver.get("http://www.baidu.com"); } }
注意:
chromedriver.exe与Chrome浏览器的版本要对应,否则代码会报错
参考资料:《基于Selenium 2的自动化测试》