我已经编写了并行运行测试的代码。我已经在我的 ubuntu 机器上启动了 selenium hub,并向它注册了 2 个节点,一个来自虚拟机的节点,另一个来自不同系统的节点。我的代码正在运行在虚拟机上的节点上,但没有'不在远程机器上运行。
这是我的代码
package com.example.selenium;
import org.testng.annotations.Test;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
public class ParllelTest {
static RemoteWebDriver driver;
@BeforeTest (alwaysRun=true)
@Parameters({"platform","browserName","remoteurl"})
public void beforeTest(String platform,String browserName,String remoteurl) throws MalformedURLException {
DesiredCapabilities cap = null;
if(browserName.equals("firefox")) {
cap=new DesiredCapabilities().firefox();
cap.setPlatform(Platform.VISTA);
cap.setBrowserName("firefox");
}
else if(browserName.equals("firefox"))
{
cap=new DesiredCapabilities().firefox();
cap.setBrowserName("firefox");
cap.setPlatform(Platform.WIN8);
}
driver=new RemoteWebDriver(new URL(remoteurl),cap);
}
@Test
public void googlesearch()
{
driver.get("http://www.gmail.com");
driver.findElement(By.name("username")).sendKeys("xxx");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.name("password")).sendKeys("xxxx");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElement(By.id("click")).click();
}
}
以及对应的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="4" parallel="tests" >
<test verbose="3" name="Vista">
<paramaters>
<parameter name="platform" value="VISTA"/>
<parameter name="browserName" value="firefox"/>
<parameter name="remoteurl" value="http://10.X.X.X:5557/wd/hub"/>
</paramaters>
<classes>
<class name="com.example.selenium.ParllelTest">
<method>
<include name="googlesearch"/>
</method>
</class>
</classes>
</test>
<test verbose="3" name="windows">
<paramaters>
<parameter name="platform" value="WIN8"/>
<parameter name="browserName" value="firefox"/>
<parameter name="remoteurl" value="http://10.X.X.X:5553/wd/hub"/>
</paramaters>
<classes>
<class name="com.example.selenium.ParllelTest">
<method>
<include name="googlesearch"/>
</method>
</class>
</classes>
</test>
这是我试图运行测试 Firefox 版本的远程机器的规格:44 selenium jar:2.53.0 平台:Windows 8
尝试运行测试时出现以下错误
org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
虽然我可以在我的远程机器上使用 chrome 浏览器,但我想在 10 多个设备上并行执行测试,因此在每台机器上设置 chrome 驱动程序路径将是一项繁重的任务。我被困在这里有人可以帮助我吗?