1.Selenium简介及组成javascript
selenium是一种web自动化测试工具,它能够在主流的浏览器上运行,支持的语言有java, python,javascripthtml
selenium主要有三部分组成:java
Selenium IDE:录制和回放脚本,能够模拟用户对页面的真实操做,区别于其余工具:是经过拦截http请求。python
通常只把录制脚本看成一个辅助功能,由于一个UI节点的细微变化,均可能致使自动化测试工具没法识别,当测试项目项目大时,定位、更新十分困难。web
其次,录制的脚本有时候人工难以理解。面试
Selenium Grid:实如今多台机器上、和异构环境中并行执行测试用例。并行执行不只节省时间,并且能够同时在不一样的浏览器、平台上运行自动化测试脚本。chrome
Selenium Web Driver:针对各个浏览器而开发,经过原生浏览器支持或者扩展(Chrome webDrive、FireFox WebDriver)直接控制浏览器api
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的自动化测试》