2016-02-26 84 views
0

我正在使用setup()和login()类。调用设置和登录方法会抛出NullPointer异常

创建另一个类编辑配置文件,调用@BeforeClass中的设置和登录并获取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

您可以提交堆栈跟踪吗? – MaximeF

回答

0

的问题在该行实例化的web驱动程序在你的代码。

为什么你在登录看到一个空指针异常的原因()方法[@BeforeClass进行标注]是因为你调用

login.setup("chrome"); 

,但你好像还没有创建实例的登录即

TestLogin login = new TestLogin(); 

在代码中缺失。

一旦你解决问题,你最有可能看到另外一个NullPointerException异常在EditProfile#verifyEditProfile()[@Test标注的方法],因为下面的线

analyticsLandingPage landingpage = PageFactory.initElements(driver, analyticsLandingPage.class); 

在这里,你似乎并不具备的实例化驱动程序实例,因此它可能还会导致另一个空指针异常

+0

谢谢克里希南。我可以登录。但你是对的我得到另一个空指针。我添加了WebDriver driver = new ChromeDriver();但仍然出现错误。我做错了吗? – user16626

+0

谢谢。如果我的回答帮助您解决了原来的问题,请继续并帮助接受答案。对于您的新问题,我建议您发布整个堆栈跟踪以及整个代码,以便我们可以将问题与问题联系起来,并提出问题所在。 –

+0

再次感谢克里希南。如果你可以在这里帮助:http://stackoverflow.com/questions/35678351/created-new-class-edit-profile-login-works-fine-but-getting-null-pointer-on-ve – user16626

相关问题