Selenium hub何时一次运行一个节点?对于selenium代码和testNG xml,我可能都错了。
我已经配置了TestNG.xml以运行并行线程,并且网格框架似乎没问题,集线器在5555上处于活动状态,http://xx.xx.xx.xx:5555/grid/console显示两个节点已连接并且在IE浏览器中处于活动状态。 IE驱动程序服务器用于在这两个节点上启动IE,selenium-server-standalone-2.35.0用于所有节点和集线器上的网格。当我在eclipse上运行TestNG Test或通过pom.xml通过Jenkins运行时,脚本首先在node1上启动,然后在下一次运行中在节点2上启动。
可能是:1。错误的testNG.xml / selenium网格代码? 2.集线器以maxinstances = 1启动,这是否导致它?它有什么解决方案?尝试使用hubconfig.json但似乎没有生效。 3.节点上的任何配置错误? 4. IEDriverServer或selenium服务器版本问题? [尝试了37/39版本] ..
的testng.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="CO" verbose='1' parallel="tests" thread-count="10" preserve-order="true">
<test name="FI" preserve-order="true">
<parameter name="browser" value="internet explorer" />
<parameter name="port" value="5566" />
<classes>
<class name="src/test/java.clickonce.remoteFresh"/>
</classes>
</test> <!-- Test -->
<test name="Ad" preserve-order="true">
<parameter name="browser" value="internet explorer" />
<parameter name="port" value="5567" />
<classes>
<class name="src/test/java.clickonce.Admin"/>
</classes>
</test>
</suite>
<!-- Suite -->
网格的Selenium代码:
@BeforeTest
public void setUp() throws IOException {
baseUrl = "http://xxx/";
nodeUrl = "http://xx.xx.xx.xx/wd/hub";
String sUrl = "http://xxx";
DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
capability.setBrowserName("iexplorer");
capability.setPlatform(Platform.WINDOWS);
capability.setCapability( InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true );
capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
File file = new File("d:/IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
WebDriver WebDriverObj = new InternetExplorerDriver();
WebDriverObj.get(sUrl);
driver = new RemoteWebDriver(new URL(nodeUrl), capability);
selenium = new WebDriverBackedSelenium(driver, baseUrl);
}
节点命令 -
java -jar selenium-server-standalone-2.35.0.jar - Dwebdriver.ie.driver="D:\IEDriverServer.exe" -role webdriver -hub http://
xx.xx.xx.xx:5555 / grid / register -port 5566 -browser“browserName = iexplorer,platform = WINDOWS”
5567端口上的节点2
答案 0 :(得分:0)
使用-role webdriver
而不是在Node命令上使用-role node
。另外,更改指定集线器及其端口的方式:按-hub http://xx.xx.xx.xx:5555/grid/register -port 5566
更改-hub http://xx.xx.xx.xx/grid/register -port 5555
。在node命令中,您必须使用集线器正在侦听的端口。
因此,node命令的最终版本将是:
java -jar selenium-server-standalone-2.35.0.jar -role node -hub http://xx.xx.xx.xx/grid/register -port 5555 -Dwebdriver.ie.driver="D:\IEDriverServer.exe" -browser "browserName=iexplorer,platform=WINDOWS"
答案 1 :(得分:0)
检查RemoteWebDriver参数中user-data-dir
开关的设置。如果每次启动时都写入同一个配置文件,则无法同时启动2个节点。
public ChromeUserImpl(URL url) {
DesiredCapabilities cap = DesiredCapabilities.chrome();
ChromeOptions o = new ChromeOptions();
o.addArguments("user-data-dir=" <SHOULD BE DIFFERENT IN ORDER TO RUN SIMULATANOUSLY>);
o.addArguments("test-type");
o.addArguments("--start-maximized");
cap.setCapability(ChromeOptions.CAPABILITY, o);
mDriver = new RemoteWebDriver(url, cap);
}