Selenium Grid 初探

之前研究过Jenkins的应用,知道基本的流程和原理,能进行一些基本的应用。
Grid的好处不多说。Selenium-Grid包括两个部分:
Hub:总控节点,连接调用Node,负责分配用例到对应的Node节点所在的执行器上Node
Node:负责执行TestCase,启动浏览器

举例说一下整个流程:

  1. Start the hub
    通过windows的DOS窗口进入selenium-server-standalone-2.48.2.jar所在目录,执行以下命令

    1
    java -jar selenium-server-standalone-2.48.2.jar -role hub

    Default port is 4444. To change the default port, you can add the optional parameter -port when you run the command. You can view the status of the hub by opening a browser window and navigating to: http://localhost:4444/grid/console

  2. Start the nodes
    进入到node,通过windows的DOS窗口进入selenium-server-standalone-2.48.2.jar所在目录,执行以下命令

    1
    java -jar selenium-server-standalone-2.48.2.jar -role node -hub http://localhost:4444/grid/register

    至此,Selenium-Grid就弄成功了,下面我用一个简单的例子来跑一下。

  3. Grid run

  • Selenium Script

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public class Grid {
    private WebDriver driver;
    DesiredCapabilities browserCapa;
    String baseUrl;

    @Parameters({ "browser", "nodeUrl", "webSite" })
    @BeforeMethod
    public void setUp(String browser, String nodeUrl, String webSite) {
    baseUrl = webSite;

    if (browser.equals("ie"))
    browserCapa = DesiredCapabilities.internetExplorer();
    else if (browser.equals("ff"))
    browserCapa = DesiredCapabilities.firefox();
    else if (browser.equals("chrome"))
    browserCapa = DesiredCapabilities.chrome();

    String url = nodeUrl + "/wd/hub";
    try {
    driver = new RemoteWebDriver(new URL(url), browserCapa);
    } catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    driver.get(webSite);

    }

    @Parameters({ "browser"})
    @Test
    public void test1(String browser) {
    System.out.println(driver.getCurrentUrl());
    driver.quit();
    System.out.println(browser + " test1");
    }
    }
  • TestNG XML

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <suite thread-count="5" parallel="tests"  name="demo" >
    <test name="test1">
    <parameter name="browser" value="ff"/>
    <parameter name="nodeUrl" value="http://localhost:5555"/>
    <parameter name="webSite" value="http://www.baidu.com"/>
    <classes>
    <class name="testGrid2.Grid" />
    </classes>
    </test>

    <test name="test2">
    <parameter name="browser" value="ie"/>
    <parameter name="nodeUrl" value="http://10.8.20.160:5555"/>
    <parameter name="webSite" value="http://www.baidu.com"/>
    <classes>
    <class name="testGrid2.Grid" />

    </classes>
    </test>

    <test name="test3">
    <parameter name="browser" value="chrome"/>
    <parameter name="nodeUrl" value="http://10.8.20.160:5555"/>
    <parameter name="webSite" value="http://www.baidu.com"/>
    <classes>
    <class name="testGrid2.Grid" />
    </classes>
    </test>
    </suite>

运行testNG XML就可以看到结果了。

只是一个初步的环境搭建,还有很多没想明白的地方,需要再深入的研究一下。

唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!