2016-10-06 2 views
0

J'ai une classe de base Test qui appelle une méthode de la classe LandingPage qui a le localisateur pour la page testée. Lorsque j'exécute ce projet, j'obtiens une exception de pointeur Null. Je suis sûr que cela a quelque chose à voir avec les annotations de testNG, mais je suis incapable de trouver la raison.Obtention d'une exception de pointeur Null lors de l'exécution de Selenium via 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(); 

    } 

Ci-dessous est ma classe 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); 
    } 
} 

Ce qui suit est le message d'erreur

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) 

Toutes les suggestions seront appréciées.

+0

Où est SignIn() Méthode ? –

Répondre

1

Je vois, vous n'avez pas instancié landingPage & loginPage n'importe où. C'est pourquoi vous obtenez une exception de pointeur null. Pour contourner ce problème, vous devez instancier ces références (principalement, landingPage ici). Instanciez-le à la place de la déclaration ou dans l'annotation @BeforeClass.

+0

Merci, cela a aidé :) – AdiBoy

2

Je ne suis pas sûr de ce que la ligne de votre NullPointerException est lancée, mais je pense cela à l'échec parce que votre LandingPage n'a pas été initialisé lorsque la méthode est exécutée @Test:

landingPage = new LandingPage(driver); 
+0

Merci beaucoup :) Je pensais que je l'avais initialisé dans une classe différente. – AdiBoy