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

How to run single selenium test case in two different nodes?

我是 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在执行测试用例时随机选择节点。

我的问题: 运行 同时在两个节点中测试用例

  1. 我不确定您使用的是什么框架。我使用 "testng" 框架进行了并行执行。
  2. 要使用 testng,您必须在项目构建路径中添加 testng jar 文件,或者如果您使用 IDE,如 eclipse,请添加 testng 插件。
  3. 然后使用适当的注释(即@test)创建您的 class。
  4. 创建 testNG.xml 文件并配置这些东西。(确保你提到了 parallel=2。计数 2 只是你想并行执行的测试数量)
  5. 然后右键单击 xml 文件并单击 runas testNG..

参考:

  1. testng-executing-parallel-tests

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

节点可以声明如下:-

节点 1 chrome java -Dwebdriver.chrome.driver=C:\drivers\chromedriver.exe -jar selenium-server- standalone-2.44.0.jar -role node -hub http://localhost:4444/grid/register -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();
    }

}