2016-02-13 64 views
0

它運行第一個測試OK,但是當運行「Edit Profile」測試時,我得到一個空指針異常,我不知道爲什麼。我全球宣佈公共車手。TestNG.java.lang.NullPointerException當運行第二個@Test

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

n位於何處? – juherr

回答

-1

public static WebDriver driver; 

嘗試在兩班。

謝謝你, 穆拉利

0

有你能解決這個多種方式。我想你可以使用一種@BeforeMethod方法,在每種測試方法之前初始化驅動程序,然後在每種測試方法之後調用driver.quit()並將驅動程序設置爲null@AfterMethod。非靜態驅動程序可以保持與類成員相同。

就個人而言,通過硒測試,我從不重複使用相同的驅動程序進行多種測試方法。當你這樣做時,你要求麻煩,你通常需要執行測試方法順序。

更高級:在數據提供程序中創建WebDriver實例,然後將其傳遞給每個測試方法。然後,有一個@AfterMethod在每次測試後關閉驅動程序。然後,您的測試類不需要包含它自己的共享驅動程序實例,並且TestNG處理您的測試多線程。

+0

感謝您的幫助,我目前使用:@BeforeTest和測試後關閉瀏覽器。 @AfterTest public static void quitDriver(){ driver.quit(); \t} – user16626

+0

這就是你從提供者傳遞給每個測試的含義:analyticsLandingPage landingpage = new analyticsLandingPage(driver); – user16626

+0

不,我的意思是,如果你看看我在這個問題中的例子,然後用「Object a」替換WebDriverHelper對象,假設該幫助器有一個createWebDriver方法:http://stackoverflow.com/questions/32536537/initialize 35066015#35066015這就是爲什麼我將其稱爲高級示例,因爲它需要進一步的解釋,在這裏不適合。 – djangofan

相關問題