【发布时间】:2016-08-22 11:04:48
【问题描述】:
我正在尝试通过从 VirtualBox 注册一个节点来运行 Selenium Grid。每当我尝试执行 testng.xml 以并行运行测试时,都会收到以下错误:FAILED CONFIGURATION: @BeforeTest beforeTest 如何解决此问题。
我确保添加了所有必要的 jar 文件。 Selenium 集线器正在运行,并且节点也已注册到集线器。
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.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Parameters;
public class ParllelTest {
//RemoteWebDriverInstance
static RemoteWebDriver driver;
//Checking the type of browser and platform registered
@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("chrome"))
{
cap=new DesiredCapabilities().chrome();
cap.setBrowserName("chrome");
cap.setPlatform(Platform.LINUX);
}
driver=new RemoteWebDriver(new URL("remoteurl"),cap);
}
//navigating to particular page
@Test
public void googlesearch()
{
driver.get("http://www.gmail.com");
driver.findElement(By.name("username")).sendKeys("xxxxx");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.name("password")).sendKeys("xxxxx");
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="ubuntu">
<paramaters>
<parameter name="platform" value="WIN8"/>
<parameter name="browserName" value="firefox"/>
<parameter name="remoteurl" value="http://10.x.x.x:4467/wd/hub"/>
</paramaters>
<classes>
<class name="com.example.selenium.ParllelTest">
<method>
<include name="googlesearch"/>
</method>
</class>
</classes>
</test>
</suite>
【问题讨论】:
-
你在用@BeforeTest注释的方法中有什么。
-
我将代码粘贴到我的问题中
-
请不要对 selenium 的绝对初学者投反对票。我真的卡在这里很久了,需要帮助。
-
否决票是衡量您的问题对社区有用性的衡量标准,而不是衡量您值得同情的程度。我不是一个反对者,但我建议您查看有关如何创建 minimal reproducible example 的说明,然后再查看 edit 您的问题以集中注意力。
标签: xml testng virtualbox selenium-grid