2017-11-28 3 views
0

以下のtestngテストスクリプトを実行した後、NullPointerExceptionが発生します。テストスクリプトメソッドの内部に入ったときにURLを起動すると、例外がスローされます。これで私を助けてくれますか?Seleniumテストスクリプトの実行中にNullPointeExceptionを取得する

(レポオブジェクト)LakesAndMountainsHomePage.java: -

import org.openqa.selenium.WebElement; 
import org.openqa.selenium.support.FindBy; 
import org.openqa.selenium.support.PageFactory; 
import com.actitime.genericlib.WebDriverCommonLib; 

public class LakesAndMountainsHomePage extends WebDriverCommonLib{ 

WebDriver driver; 

public LakesAndMountainsHomePage(WebDriver driver) 
{ 
this.driver = driver; 
PageFactory.initElements(driver, this); 
} 


@FindBy(xpath= "//*[@id='the-main-menu']//*[contains(text() , 'LAKES & 
MOUNTAINS')]") 
WebElement LandM; 

public WebElement LandMHeader() 
{ 
System.out.println("came inside the method"); 
//LandM.isDisplayed(); 
return LandM; 
} 

} 

BaseTest.java:-

public abstract class BaseTest { 

    ExcelLib eLib; 
    WebDriverCommonLib wLib; 
    WebDriver driver; 
    HomePage homepage; 

    @BeforeClass 
    public void baseBeforeClass() 
    { 
    eLib = new ExcelLib(); 
    wLib = new WebDriverCommonLib(); 
    driver=Driver.getBrowser(); 
    driver.manage().window().maximize(); 
    System.out.println("Browser is launched"); 
    } 

    @BeforeMethod 
    public void launchURL() 
    { 
     wLib.homePage(); 
     //loginPage.loginToAPP(); 
     System.out.println("Navigated to the URL"); 
    }  
} 

にTestScript: -

public class LakesAndMountainsHomePageTest extends BaseTest{ 

LakesAndMountainsHomePage lm = new LakesAndMountainsHomePage(this.driver); 

//TC TC131409 [New Lakes & Mountains Tab] : Verify New Lakes & Mountains 
Tab is displayed in header. 
@Test(priority=0) 
    public void lakesAndMountainsHeader() 
    { 
boolean a= lm.LandMHeader().isDisplayed(); //getting exception here 
if(a==true) 
{ 
System.out.println("Lakes And Mountains tab is present in the HomePage"); 
} 
else 
{ 
System.out.println("Lakes And Mountains tab is not present in the 
HomePage"); 
} 
     lm.LandMHeader().click(); 
     System.out.println("It has clicked the tab"); 
    } 
} 

以下は例外スタックトレースです: - :

java.lang.NullPointerExceptionが org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocatorで - 下記

例外スタックトレースです。 java:69) at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38) (com.sun.proxy)$ Proxy9.isDisplayed(不明なソース) com.acttime。 (LakesAndMountainsHomePageTest.java:27) at sun .reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)java.lang.reflect.Method.invokeでsun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) でsun.reflect.NativeMethodAccessorImpl.invoke(不明なソース) で (不明なソース(Invoker.java:669) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) .java:877) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1201) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) at org.testng.internal.TestMethodWorker .run(TestMethodWorker.java:109)(TestRunner.java:412) で(SuiteRunner.java:334) at org。 testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1318) at org.testng。 TestNG.runSuitesLocally(TestNG.java:1243) at org.testng.TestNG.runSuites(TestNG.java:1161) at org.testng.TestNG.run(TestNG.java:1129) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java: 251) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

以下のtestngテストスクリプトを実行した後、NullPointerExceptionが発生しています。テストスクリプトメソッドの内部に入ったときにURLを起動すると、例外がスローされます。これで私を助けてくれますか?

+0

コード内に[NullPointerException]が重複している可能性があります。どのように対処する](https://stackoverflow.com/questions/45474353/nullpointerexception-in-my-code-how-to-deal-with-it) – DebanjanB

+0

他のクエリは、私のコードのように別の問題を抱えていますブラウザでURLを起動できますが、ページ・ファクトリを使用してオブジェクト・リポジトリからいくつかのアクションを実行しているときに、NullPointerExceptionが発生しています。 –

+0

例外スタックトレース@shashanksinhaをアタッチするための良い方法です! –

答えて

1

このインスタンス化は不正です。

LakesAndMountainsHomePage lm = new LakesAndMountainsHomePage(this.driver); 

Nullポインタ例外の根本原因です。

このステートメントをBaseTestクラスに移動して、クラスフィールドを作成し、@BeforeClassメソッドの内部でインスタンス化します。また、このオペレータを削除してください。

+0

ありがとう@Manmohan_singh。コードは今実行されています。 –

+0

LakesAndMountainsHomePageのlm = new LakesAndMountainsHomePage(this.driver)を保持している場合に問題が何であるか説明してください。私のテストスクリプトクラスの ステートメント? –

+0

テストスクリプトクラスは** BastTest **のTestNG注釈付きメソッドを継承しています。コンストラクタが定義されていないため、LakesAndMountainsHomePageのインスタンス化は決してJVMによって選択されません。これを実行フローにするには、インスタンス化を@BeforeClassメソッドに移す必要があります。あるいは、クラスコンストラクタを使用することもできます。 –

0

私は初期化されているドライバのタイプ(firefox、chrome、IE)を指定するドライバクラスの実装を見ることができません。

+0

は、異なるDriver javaクラスで初期化されます。 –

関連する問題