如何在两个不同的节点中运行单个硒测试用例?

时间:2015-06-24 10:14:07

标签: selenium selenium-webdriver selenium-rc selenium-grid

我是selenium的新手,我需要使用FIREFOX浏览器(selenium网格)在两个不同的节点中运行我的单个selenium测试用例,我已经使用下面的命令启动了我的集线器

java -jar selenium-server-standalone-2.32.0.jar -role hub

节点1: java -jar selenium-server-standalone-2.32.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 9595

节点2: java -jar selenium-server-standalone-2.32.0.jar -role webdriver -hub http://localhost:4444/grid/register -port 8585

已经为集线器创建了两个节点。但是当我在集线器中运行测试用例时,只有一个节点正在执行测试用例而另一个节点仍然可用但不执行测试用例。

2)执行测试用例时,hub会随机选择节点。

我的问题: 同时在两个节点中运行testcase

2 个答案:

答案 0 :(得分:2)

节点可以声明如下: -

用于chrome的节点1 java -Dwebdriver.chrome.driver = C:\ drivers \ chromedriver.exe -jar selenium-server-standalone-2.44.0.jar -role node -hub {{ 3}} -port 8585 -browserName = chrome

firefox的节点2: java -jar selenium-server-standalone-2.44.0.jar -role node -hub http://localhost:4444/grid/register -port 9595 -browserName = firefox

您需要使用以下testng.xml在不同的浏览器上运行相同的测试用例: -

<suite name="Selenium TestNG Suite" parallel="tests" thread-count="5">

    <test name="Selenium TestNG - 1">
        <parameter name="browser" value="firefox" />
        <parameter name="port" value="9595" />
        <classes>
            <class name="grid.testcase" />
        </classes>
    </test>
    <test name="Selenium TestNG - 2">
        <parameter name="browser" value="chrome" />
        <parameter name="port" value="8585" />
        <classes>
            <class name="grid.testcase" />
        </classes>
    </test>

</suite>

在您的测试用例中,编写如下代码: -

package grid;

import java.net.MalformedURLException;
import java.net.URL;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class testcase {
    public WebDriver driver=null;
    @Parameters({"browser","port"})
    @BeforeClass
    public void initialize(String browser, String port) throws MalformedURLException{
        DesiredCapabilities capability= new DesiredCapabilities();
        capability.setBrowserName(browser);
        driver= new RemoteWebDriver(new URL("http://localhost:".concat(port).concat("/wd/hub")), capability);

    }
    @Test
    public void testThis() throws InterruptedException {
        String url="https://www.google.com";
        driver.get(url);
        driver.manage().window().maximize();
        //do something
        driver.close();
    }

}

答案 1 :(得分:0)

  1. 我不确定您使用的是哪种框架。我使用&#34; testng&#34;进行了并行执行。框架。
  2. 要使用testng,您必须在项目构建路径中添加testng jar文件,或者如果您使用像eclipse add testng插件这样的IDE。
  3. 然后用适当的注释创建你的类(即@test)。
  4. 创建testNG.xml文件并配置它们。(确保你提到parallel = 2.count 2只是你要并行执行的测试数量)
  5. 然后右键单击xml文件并单击runas testNG ..
  6. 参考:

    1. testng-executing-parallel-tests

    2. parallel-execution-of-test-methods-in-testng