它运行第一个测试OK,但是在运行"编辑配置文件"时,我得到一个空指针异常。测试,我不知道为什么。我全球宣布公共司机。
public class TestLogin
{
public WebDriver driver;// = new FirefoxDriver();
public String baseURL = "mytestsite.com";
@BeforeTest
public void setBaseURL()
{
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait( 20L, TimeUnit.SECONDS );
driver.get( baseURL );
}
// Login test
@Test
public void testLogin() throws InterruptedException{
driver.manage().timeouts().implicitlyWait(20L, TimeUnit.SECONDS);
analyticsLoginPage mylogin = PageFactory.initElements(driver, ` ` analyticsLoginPage.class);
analyticsLandingPage landingpage = mylogin.login("username", "password");
Thread.sleep(3000);
}
// Edit Profile test
@Test // (dependsOnMethods = { "testLogin" })
public void verifyProfile()
throws InterruptedException
{
// driver = new FirefoxDriver();
Thread.sleep( 3000 );
analyticsLandingPage landingpage = new analyticsLandingPage( driver );
Thread.sleep( 3000 );
landingpage.gotoProfile();
// Thread.sleep(5000);
analyticsEditProfilePage editprofile = PageFactory.initElements( driver, analyticsEditProfilePage.class );
editprofile.verifyEditFirstName();
editprofile.verifyEditLastName();
editprofile.verifyCompanyName();
editprofile.verifyReportingProfile();
editprofile.verifyUsageStatistics();
}
着陆页类
package com.tapanalytics.pom.domain;
import java.util.concurrent.TimeUnit;
import javax.security.auth.login.Configuration;
import org.junit.Test;
public class analyticsLandingPage
{
WebDriver driver;
public analyticsLandingPage( WebDriver driver )
{
this.driver = driver;
}
@FindBy( xpath = Configuration.manage_dashboard )
public WebElement manage_dashboard;
@FindBy( xpath = Configuration.manage_services )
public WebElement manage_services;
@FindBy( xpath = Configuration.profile )
public WebElement profile;
@FindBy( xpath = Configuration.support )
public WebElement support;
@FindBy( xpath = Configuration.logout )
public WebElement logout;
public void gotoMangeDashboards()
{
manage_dashboard.click();
}
public void gotoServices()
{
manage_services.click();
}
public void gotoProfile()
{
profile.click();
}
public void gotoSupport()
{
support.click();
}
public void Logout()
{
logout.click();
}
}
答案 0 :(得分:0)
有多种方法可以解决这个问题。我认为您可以使用@BeforeMethod
方法在每个测试方法之前初始化驱动程序,然后使用调用 driver.quit()的@AfterMethod
并将驱动程序设置为每个测试方法后都为null 。非静态驱动程序可以保持与类成员相同。
就个人而言,通过Selenium测试,我永远不会为多种测试方法重复使用相同的驱动程序。当你这样做时你会遇到麻烦,而你通常需要强制执行测试方法。
更高级:在数据提供程序中创建WebDriver实例,然后将其传递给每个测试方法。然后,有一个@AfterMethod,在每次测试后关闭驱动程序。然后,您的测试类不需要包含自己的共享驱动程序实例,TestNG会处理您的测试多线程。
答案 1 :(得分:-1)
尝试
public static WebDriver driver;
分为两类。
谢谢你, 穆拉利