首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Selenium VS Webdriver(4)

Selenium VS Webdriver(4)

WebDriver 的并行测试支持
在 Selenium 2 中,Selenium Grid 被集成到了 Selenium Server 中,即是包含在 selenium-server-standalone-x-x-x.jar 包中,好处就是更简洁更方便了!Selenium Grid 包含有两种角色,hub 和 node,其中 hub 是用来接收所有的请求,并将请求分发给不同的 node;node 指的便是实际执行测试的节点,它包含 Selenium 和 WebDriver 两种类型,其中 Selenium 是兼容 Selenium 1 中的 Selenium RC。下面我们看下如何启动 hub 和 node:
启动 Selenium Grid hub:
1
2
#启动 Selenium Grid 的 hub,指定端口号 4444,最多运行 40 个测试 session
java -jar selenium-server-standalone-2.28.0.jar -role hub -maxSession 40 -port 4444




挂载 node,在缺省情况下,会分别为 Selenium 和 Webdriver 的测试引擎启动 5 个 firefox,5 个 googlechrome,和 1 个 internet explorer。但也可以通过参数的方式来定制启动 node 所支持的浏览器,例如:
1
2
3
4
5
#挂载 node,支持启动 20 个 session 的版本号为 17.0.1 的 firefox 浏览器,指定端口号为 5555,指定启动 firefox 时使用的 profile
java -jar selenium-server-standalone-2.28.0.jar -role node  \
-hub http://{grid_server}:4444/grid/register -port 5555 \
-firefoxProfileTemplate llinotes.profile -maxSession 20 \
-browser "browserName=firefox,version=17,platform=WINDOWS,maxInstances=20"




    客户端的调用,在客户端向 Selenium Grid 的 hub 来提交一个测试请求时,对于申请 Selenium 的 node 是和使用 Selenium 1 的方法是一样的,直接使用 DefaultSelenium 就可以了:
1
2
Selenium selenium = new DefaultSelenium(“{grid_server}”, \
4444, “*firefox”, “https://apps.na.collabserv.com/”);




    对于 WebDriver 的 node 的话,我们需要使用 RemoteDWebriver 和 DesiredCapabilities 来定义你想向 Selenium Grid 申请的浏览器的类型,版本号等等,例如下面的 capability 就可以匹配到browserName=firefox,version=17,platform=WINDOWS的浏览器:
1
2
3
4
5
6
7
DesiredCapabilities capability = DesiredCapabilities.firefox();
capability.setBrowserName(“firefox” );
capability.setPlatform(“WINDOWS”);  
capability.setVersion(“17.0.1”);

WebDriver driver = new RemoteWebDriver(\
  new URL("http://{grid_driver}:4444/wd/hub"), capability);




其实,除了将 Selenium Grid 合并到 Selenium 2 中以及加入对 WebDriver 的支持之外,没有太大的改变,Selenium Grid 的使用方面没有太大的区别,可以参考官方网站获得更多信息:

小结
    WebDriver 有更简洁的 API,它针对各个浏览器而开发,取代了嵌入到被测 Web 应用中的 JavaScript。它与浏览器的紧密集成支持创建更高级的测试,避免了 JavaScript 安全模型导致的限制。除了来自浏览器厂商的支持之外,WebDriver 还可以利用操作系统级的调用模拟用户输入,例如鼠标和键盘操作,这些都是 Selenium 所不能比拟的。
    而 Selenium 可以使用任何支持 HTTP 的编程语言,它基于 Javasript 并支持多数浏览器,但它也不是完美的,由于浏览器对于 Javascript 的安全策略的加强导致某些情况下不能使用 Selenium。而且随着 WebDriver 的逐步完善,Selenium 可能将完全不受支持,所以选择 WebDriver 必将成为一个必然趋势。但毋庸置疑的是两个项目的将为用户提供了一个更为通用的强大的 Web 测试框架。
返回列表