我正在尝试创建数据驱动的框架。当我在不拆卸的情况下运行脚本时,脚本运行成功。
我尝试实现teardown(),但遇到了空指针异常。我编写了最后关闭浏览器的脚本,但我仍然得到了空指针异常。
public class WordPressLogin {
WebDriver driver;
@Test(dataProvider="wordpressData")
public void loginToWordPress(String username,String password) throws InterruptedException
{
driver=new FirefoxDriver();
System.setProperty("webdriver.gecko.driver","C:\\Users\\naga.priyanka\\workspace\\TestNG jars\\geckodriver-v0.13.0-win64\\geckodriver.exe");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("http://demosite.center/wordpress/wp-login.php");
driver.findElement(By.id("user_login")).sendKeys(username);
driver.findElement(By.id("user_pass")).sendKeys(password);
driver.findElement(By.xpath(".//*[@id='wp-submit']")).click();
Thread.sleep(5000);
Assert.assertTrue(driver.getTitle().contains("Dashboard"), "User is not able to login-Invalid credentials");
System.out.println("Page title verified - user is able to login successfully");
}
@AfterTest
public void tearDown()
{
driver.quit();
}
@DataProvider(name="wordpressData")
public Object[][] passData()
{
Object[][] data=new Object[3][2];
data[0][0]="XYZ1";
data[0][1]="XYZ";
/*data[1][0]="XYZ2";
data[1][1]="XYZ";
data[2][0]="XYZ3";
data[2][1]="XYZ";*/
return data;
}
}
@After应该允许您执行使用 JUnit 时尝试的操作。
@AfterTest可能由于 Web 驱动程序的生命周期在此时过期而失败,但该标记也仅在使用 TestNG 运行时有效。
我建议初始化你的驱动程序,并设置属性在一个@之前标记,这样你就可以运行多个测试使用相同的驱动程序。