您的位置:软件测试 > 开源软件测试 > 开源功能测试工具 > Selenium
Selenium-Grid工作方式
作者:网络转载 发布时间:[ 2015/2/6 15:07:43 ] 推荐标签:Selenium 功能测试工具 单元测试

  Selenium-Grid版本
  selenium-grid分为版本1和版本2,其实它的2个版本并不是和selenium的版本1和2相对应发布的[即selenium-grid2的发布比selenium2要晚一点]。不过幸运的是现在的selenium-grid2基本能支持selenium2的所有功能了。
  selenium虽然分1和2,但其实原理和基本工作方式都是一样的。只是版本2同时支持selenium1和selenium2两种协议,并且在一些小的功能和易用性上进行了优化。比如:指定测试平台的方式;以下未作特殊说明的Selenium-Grid均为通用。
  Selenium1工作原理
  selenium1中除了使用selenium-core以外,进行自动化测试时都需要使用selenium-RC来作为代理[不管是本机还是远程],目的是为了解决同源问题;而造成同源问题的原因是因为selenium1中是使用Javascript来驱动测试执行的【浏览器由于安全问题不允许不同域之间的JS调用,即非同源不可调用;而selenium1中的工作方式是在宿主页面注入JS并且通过调用JS来执行测试操作的,所以设计到同源问题】。所以为了达成目的,其解决方案有2种:
  1、使用selenium-core:
  selenium-core是一组js库,用来驱动浏览器操作的所有库文件都在这里,整个selenium1可以认为核心组件是这个selenium-core;而使用selenium-core的方式是在被测试站点程序的源码里把selenium-core中的所有js库直接添加到页面里,这样页面正常加载的同时也会把selenium-core加载下来,并且天生是同源的。
  2、使用selenium-RC:
  RC是一个http代理程序,用来注入到浏览器和被测web程序之间,这样浏览器所有的请求和接收的内容都会通过RC;RC会把浏览器的请求发送给真实的web程序,而在接收到web程序的响应内容时,并没有把内容原原本本的返回给浏览器客户端,而是把包含selenium-core的内容注入到响应内容中去,然后才发送响应内容给浏览器,这样通过欺骗的方式让浏览器认为selenium1的驱动类库同样是同源的。
  Selenium2工作原理
  selenium2中因为使用的webdriver,这个技术不是靠js驱动的,而是直接调用浏览器的原生态接口驱动的。所以没有同源问题,也不需要使用RC来执行本地脚本了【当然缺点是并不是所有的浏览器都有提供很好的驱动支持,但JS却是所有浏览器都通用的】。所以selenium2中执行本地脚本的方式是:通过本地webdriver驱动直接调用本地浏览器接口完事了。在本地调用本地的代码是这样的:
  import org.openqa.selenium.*;
  import org.openqa.selenium.firefox.*;
  WebDriver wd = new FirefoxDriver();
  wd.doSomething()
  但有时候并总是只执行本地测试的脚本,有时候可能需要在本地调用远程的环境来执行测试,【比如:因为测试环境覆盖原因】此时需要一个类似selenium1中的RC来承担这个任务,也是selenium2中的selenium-server。selenium-server支持接收远程脚本的调用命令,然后操作其宿主机上的浏览器来到远程执行测试的任务。当然selenium-server为了兼容selenium1的脚本,它同样也支持selniumRC所支持的功能【即能接收selenium1的调用命令】。在本地调用远程机器执行测试的代码是这样的:
  import org.openqa.selenium.*;
  import org.openqa.selenium.remote.RemoteWebDriver;
  import org.openqa.selenium.remote.DesiredCapabilities;
  DesiredCapabilities ieDesiredcap = DesiredCapabilities.internetExplorer();
  WebDriver wd = new RemoteWebDriver("http://localhost:4444/wd/hub", ieDesiredcap);
  wd.doSomething()
  但是在运行这段代码之前,要先启动Selenium-Server;启动命令为:
  java -jar selenium-server-standalone-x.xx.x.jar
  调用selenium-server对应的结构图:

上一页123下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd