一、 selenium 1的原理
selenium 1 包括以下两部分:selenium server、 Client Libraries组成
1. selenium server
selenium server负责控制浏览器的行为。主要有launcher,Http Proxy,selenium core。selenium core使用Selenium Server嵌入到浏览器页面中。实质上,selenium core是由JS函数组成,这样我们可以实现用程序对浏览器进行操作。
2. client Libraries
编写测试用例时控制selenium server的库
3. selenium RC与TestCase之间的关系
4. testCase 工作过程
(1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。
为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server是很正常的。
(2).Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。
(3).测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。
(4).Selenium Core接收到指令后,执行操作。
(5).浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的Web页面。
由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。
(6).Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。
(7).Selenium Server的Http Proxy把接收的Web页面返回给浏览器。
二、 selenium 2-selenium webDriver原理
1. 直接利用浏览器原生的API,封装成更加面向对象的selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身。如:截屏、窗口大小、启动、关闭、安装插件、配置证书等。
2. selenium 2是基于对象的测试。不同的对象拥有不同的操作方法。selenium 1则更多的基于方法的API。
3. WebDriver还支持Android和ios上的浏览器
4. 便于与junit和testNG结合
5. selenium Grid实现多平台同时测试,满足兼容性测试需求
二、 selenium 3原理
1.selenium 3.0有了更新的特性加入,尤其是对Edge和safari原生驱动的支持,Edge驱动由MS提供,safari原生驱动由Apple提供。
2.在最新的Firefox方面,开始支持Mlzilla的geckodriver驱动,来驱动Firefox的控制。
3.selenium3.0可以支持firefox47以上版本,但是许要下载geckodriver.exe驱动,并添加到环境变量path下