如何 运行 两个不同节点中的单个硒测试用例?
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在执行测试用例时随机选择节点。
我的问题:
运行 同时在两个节点中测试用例
- 我不确定您使用的是什么框架。我使用 "testng" 框架进行了并行执行。
- 要使用 testng,您必须在项目构建路径中添加 testng jar 文件,或者如果您使用 IDE,如 eclipse,请添加 testng 插件。
- 然后使用适当的注释(即@test)创建您的 class。
- 创建 testNG.xml 文件并配置这些东西。(确保你提到了 parallel=2。计数 2 只是你想并行执行的测试数量)
- 然后右键单击 xml 文件并单击 runas 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();
}
}
我是 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在执行测试用例时随机选择节点。
我的问题: 运行 同时在两个节点中测试用例
- 我不确定您使用的是什么框架。我使用 "testng" 框架进行了并行执行。
- 要使用 testng,您必须在项目构建路径中添加 testng jar 文件,或者如果您使用 IDE,如 eclipse,请添加 testng 插件。
- 然后使用适当的注释(即@test)创建您的 class。
- 创建 testNG.xml 文件并配置这些东西。(确保你提到了 parallel=2。计数 2 只是你想并行执行的测试数量)
- 然后右键单击 xml 文件并单击 runas 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();
}
}