2016-10-06 3 views
0

У меня есть базовый класс тестов, который вызывает метод класса LandingPage, который имеет локатор для тестируемой страницы. Когда я выполняю этот проект, я получаю исключение Null pointer. Я уверен, что это связано с аннотациями testNG, но я не могу узнать причину.Получение исключения Null указателя при запуске Selenium через TestNG

package com.xyz.tests; 

import java.util.concurrent.TimeUnit; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.testng.annotations.BeforeSuite; 
import org.testng.annotations.BeforeTest; 
import org.testng.annotations.Test; 

import com.xyz.pageObjects.LandingPage; 
import com.xyz.pageObjects.LoginPage; 
import com.xyz.utils.Utils; 

import engine.Engine; 

public class LandingPageTest { 

    public WebDriver driver; 
    //Engine engine = new Engine(driver); 
    LandingPage landingPage; 
    LoginPage loginPage; 

    @BeforeTest 
    public void setUp(){ 

     driver = new FirefoxDriver(); 
     driver.manage().window().maximize(); 
     driver.get("https://www.go.com"); 
     driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 
    } 

    @Test 
    public void clickOnSignInLink() { 

    landingPage.SignIn().click(); 

    } 

Ниже мой LandingPage класс

package com.xyz.pageObjects; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 


public class LandingPage { 

    private WebDriver driver; 

    public LandingPage(WebDriver driver) { 
     this.driver = driver; 
    } 

    //By signIn= By.xpath(".//*[@id='pageContainerInner']/div[2]/div[1]/div/div[2]/div[1]/a"); 

    By signInBtn = By.linkText("Sign In or Create Account"); 
    //By signInBtn2 = By.cssSelector("css=a.signIn"); 

    By closeCrisisMessage = By.xpath(".//*[@id='closeCrisisMessageBtn']"); 
     public WebElement SignIn(){ 
      return driver.findElement(signInBtn); 
    } 
} 

Ниже приводится сообщение об ошибке

C:\Users\ad\AppData\Local\Temp\testng-eclipse--957796922\testng-customsuite.xml 

FAILED: clickOnSignInLink 
java.lang.NullPointerException 
    at com.disney.tests.LandingPageTest.clickOnSignInLink(LandingPageTest.java:36) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) 
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) 
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) 
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) 
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 
    at org.testng.TestRunner.privateRun(TestRunner.java:767) 
    at org.testng.TestRunner.run(TestRunner.java:617) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:240) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) 
    at org.testng.TestNG.run(TestNG.java:1057) 
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) 

Любые предложения будут оценены.

+0

Где зарегистрировался() Метод? –

ответ

1

Я вижу, вы не создавали экземпляр landingPage & loginPage где угодно. Вот почему вы получаете исключение с нулевым указателем. Чтобы обойти эту проблему, вам нужно создать эти ссылки (в основном, здесь вы можете указать пункт назначения). Создайте его либо вместо объявления, либо в аннотации @BeforeClass.

+0

Спасибо, что помогло :) – AdiBoy

2

Я не уверен, на какую линию вашей NullPointerException брошена, но я бы ожидать, что это не потому, что ваш LandingPage не был инициализирован, когда метод @Test запускается:

landingPage = new LandingPage(driver); 
+0

Спасибо куча :) Я думал, что инициализировал его в другом классе. – AdiBoy