我正在使用setup()和login()上课。
创建了另一个类Edit配置文件,在@BeforeClass中调用setup并登录并获得null poiinter异常。
public class TestLogin {
public static WebDriver driver;// = new FirefoxDriver();
public static String baseURL = Configuration.testsite;
@BeforeTest
@Parameters("browser")
public void setup(String browser) throws Exception{
//Check if parameter passed from TestNG is 'firefox'
if(browser.equalsIgnoreCase("firefox")){
//create firefox instance
driver = new FirefoxDriver();
}
//Check if parameter passed as 'chrome'
else if(browser.equalsIgnoreCase("chrome")){
//set path to chromedriver.exe You may need to download it from http://code.google.com/p/selenium/wiki/ChromeDriver
System.setProperty("webdriver.chrome.driver","//Users/eugeneshapo/Documents/chromedriver");
//create chrome instance
driver = new ChromeDriver();
}
else if(browser.equalsIgnoreCase("safari")){
//create chrome instance
driver = new SafariDriver();
}
else{
//If no browser passed throw exception
throw new Exception("Browser is not correct");
}
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
//Login test
@Test
public void testLogin() throws InterruptedException{
driver.get(baseURL);
driver.manage().timeouts().implicitlyWait(20L, TimeUnit.SECONDS);
analyticsLoginPage mylogin = PageFactory.initElements(driver, analyticsLoginPage.class);
mylogin.verifylogin("username", "password");
Thread.sleep(3000);
}
@AfterTest
public static void quitDriver(){
driver.quit();
}
}
@Test//(dependsOnMethods = { "testLogin" })
public void verifyEditProfile() throws InterruptedException{
***** //在下面的行//
中实例化了网络驱动程序 WebDriver driver = new ChromeDriver();
analyticsLandingPage landingpage = PageFactory.initElements(driver, analyticsLandingPage.class);
analyticsEditProfilePage editprofile = PageFactory.initElements(driver, analyticsEditProfilePage.class);
landingpage.gotoProfile();
editprofile.verifyEditFirstName();
editprofile.verifyEditLastName();
editprofile.verifyCompanyName();
editprofile.verifyReportingProfile();
editprofile.verifyUsageStatistics();
}
@AfterTest
public static void quitDriver(){
driver.quit();
}
}
答案 0 :(得分:0)
问题在于您的代码。
你在Login()方法[@BeforeClass annotated]中看到空指针异常的原因是因为你正在调用
login.setup("chrome");
但你似乎没有创建一个登录实例,即
TestLogin login = new TestLogin();
您的代码中缺少。
解决问题之后,由于以下行,您最有可能在EditProfile#verifyEditProfile()[@Test annotated method]中看到另一个NullPointerException
analyticsLandingPage landingpage = PageFactory.initElements(driver, analyticsLandingPage.class);
在这里,您似乎没有实例化驱动程序实例,因此它也可能导致另一个NullPointerException