Selenium-Grid工作方式

发表于:2015-2-06 13:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:princessd8251    来源:51Testing软件测试网采编

  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对应的结构图:
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号