Selenium WebDriver+Grid2的环境搭建和实现

上一篇 / 下一篇  2013-12-31 14:40:57 / 个人分类:自动化测试

Selenium WebDriver+Grid2的环境搭建和实现

Selenium WebDriver + Grid2可以解决浏览器端性能测试中的自动化和并发性问题。本文介绍了这种新测试框架的环境搭建和脚本的开发过程。Grid2的机制:启动一个中央节点(Hub),然后启动多个远程控制节点(Node),启动Node时告知Hub的位置,这样Node就可以注册到Hub上,测试程序与Hub通讯,当测试被并发地发给Hub时,Hub会根据所要运行的浏览器自动将这些测试命令分发给已经注册的NodeNode接到命令后执行测试。

一.启动Hub

e.g. java -jar C:\Work\Selenium\Build\selenium-server-standalone-<version>.jar -role hub

-role hub:指出当前启动的是Hub

二.启动Node

e.g. java -jar D:\Selenium\driver\selenium-server-standalone-2.35.0.jar -role node -hub http://localhost:4444/grid/register -port 5557 -browser browserName=firefox,version=22,platform=WINDOWS

-role node:指出当前启动的是Node

-hub:默认为http://ip_for_hub:4444/grid/register,为当前的Node所要注册的HubURL(根据用户实际情况替换ip地址和端口)

-portNode的启动端口,当同一台机器上启动多个Node的时候,注意替换端口避免冲突

-browser:指定这个Node支持了哪些浏览器、平台、可以启动几个浏览器实例等。它是可以重复指定的。

三.验证HubNode的启动状态

可以在http://ip_for_hub:4444/grid/console查看所有子节点的状态


四.代码Sample

1.      TestNG Class Code部分:

对于WebDriver nodes来说,你将用到RemoteWebDriverDesiredCapabilities对象来定义你要运行哪个浏览器,以及其版本和平台。

packagetest.sample;

 

importjava.net.MalformedURLException;

importjava.net.URL;

 

importorg.openqa.selenium.By;

importorg.openqa.selenium.Platform;

importorg.openqa.selenium.WebDriver;

importorg.openqa.selenium.WebElement;

importorg.openqa.selenium.firefox.FirefoxDriver;

importorg.openqa.selenium.remote.DesiredCapabilities;

importorg.openqa.selenium.remote.RemoteWebDriver;

importorg.openqa.selenium.support.events.EventFiringWebDriver;

importorg.testng.annotations.BeforeMethod;

importorg.testng.annotations.Parameters;

importorg.testng.annotations.Test;

 

publicclassSample {

 StringbasicTestURL;

 

 @Parameters({"initBrowserName","initBrowserVersion","initBrowserPlatform","testURL"})

 @BeforeMethod

 publicvoidsetup(String initBrowserName, String initBrowserVersion, String initBrowserPlatform, String testURL) {

       basicTestURL= testURL;

      DesiredCapabilities capabilities = DesiredCapabilities.firefox();

       capabilities.setBrowserName(initBrowserName);

       capabilities.setVersion(initBrowserVersion);

       capabilities.setPlatform(Platform.valueOf(initBrowserPlatform));       

       try{

           WebDriverwebDriver=newRemoteWebDriver(newURL("http://localhost:4444/wd/hub"), capabilities);

       }catch(MalformedURLException e) {

           //TODOAuto-generated catch block

           e.printStackTrace();

       }

 }

  

 @Test

 publicvoidsimpleTest() {

      WebDriver driver =newFirefoxDriver();

      driver.get(basicTestURL);

      WebElement keyword = driver.findElement(By.id("kw"));

      keyword.sendKeys("Selenium");

      WebElement searchBtn = driver.findElement(By.id("su"));

      searchBtn.click();

      

 }

}

 

2.      对应的TestNG.xml修改,增加相关需要的参数,供TestNGClass使用

<?xmlversion="1.0"encoding="UTF-8"?>

<suitename="Suite"parallel="false">

 <testname="Test">

   <parametername="initBrowserName"value="firefox"/>

   <parametername="initBrowserVersion"value="22"/>

   <parametername="initBrowserPlatform"value="WINDOWS"/>

   <parametername="testURL"value="http://www.baidu.com"/>

   <classes>

     <classname="test.sample.Sample"/>

   </classes>

 </test><!-- Test -->

</suite><!-- Suite -->

3.      新建对应的ant文件来执行对应的TestNGXML。直接执行此ant文件即可完成测试。

<?xmlversion="1.0"encoding="UTF-8"standalone="no"?>

<projectbasedir="."default="run"name="Meeting"> 

<propertyname="src"value="${basedir}\src"/>

<propertyname="bin"value="${basedir}\bin"/>

<propertyname="lib"value="${basedir}\libs"/>

<propertyname="report"value="${basedir}\test-output"/>

<propertyname="suite"value="${basedir}\suite"/>

<propertyname="debuglevel"value="source,lines,vars"/>

 

<tstamp>

<formatproperty="nowstamp"pattern="yyyyMMdd-HHmmss"locale="en"/>

</tstamp>

 

<pathid="classpath">

<pathelementlocation="."/>

<pathelementlocation="${bin}"/>

<filesetdir="${lib}/">

TAG:

 

评分:0

我来说两句

Open Toolbar