调用setup和login方法会抛出NullPointer异常

时间:2016-02-26 01:38:03

标签: selenium testng

我正在使用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();

}
}

1 个答案:

答案 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