【发布时间】:2015-12-04 23:36:35
【问题描述】:
这是我的测试类,我想在新浏览器中并行执行 Data Provider 的每个输入。我能够打开新的浏览器,但我得到 Session Not Found Exception 并且没有这样的元素异常
public class DemoTest {
private WebDriver driver;
@Test(dataProvider = "dp")
public void f(Integer n, String s) {
try {
System.out.println("Driver: "+driver.toString());
driver.get("www.google.com");
driver.findElement(By.id("lst-ib")).sendKeys("1234567");
System.out.println("method f id:"+Thread.currentThread().getId()+" n:"+n+" s:"+s);
}
catch(Exception e) {
e.printStackTrace();
}
}
@BeforeMethod
public void beforeMethod() {
try {
driver= new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
System.out.println("Before method id:"+Thread.currentThread().getId());
}
catch (Exception e) {
e.printStackTrace();
}
}
@AfterMethod
public void afterMethod() {
try {
System.out.println("After method id:"+Thread.currentThread().getId());
if(driver != null ) {
driver.quit();
// driver.close();
}
}
catch(Exception e) {
e.printStackTrace();
}
}
@DataProvider(parallel=true)
public Object[][] dp() {
return new Object[][] {
new Object[] { 1, "a" },
new Object[] { 2, "b" },
new Object[] { 3, "c" },
new Object[] { 4, "d" },
};
}
}
这是 testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" parallel="methods">
<test name="prelogin">
<classes>
<class name="com.package.DemoTest"></class>
</classes>
</test>
</suite>
谁能告诉我为什么会出现这个异常以及如何解决它?
【问题讨论】:
-
能否请您提供带有完整堆栈跟踪等的控制台输出?
-
顺便说一句,我建议不要将您的代码包装在 try-catch 块中。如果您的 BeforeMethod 引发异常,那么您不希望 TestNG 跳过测试执行吗? TestNG 将处理来自测试和配置方法的异常,并为您打印堆栈跟踪。
标签: java selenium-webdriver testng-dataprovider