Test Frameworkをテストフレームワークとして使用してSeleniumテスト自動化を試みています。このために、私はテストを書くウェブサイトの各ページをモデル化するためにページオブジェクトパターンを使用しました。Page Object Modelクラスを呼び出すときにNULLポインタ例外が発生する
私は2つのJavaクラス
- SignInPage.java(ページオブジェクトモデルクラス)(実際の試験が書かれており、SignInPageがインスタンス化されている)
- TestLogin.java
を持っていますSignInPage.java
public class SignInPage {
private WebDriver driver;
@FindBy(id = "username")
private WebElement usernameTextbox;
@FindBy(id = "password")
private WebElement passwordTextbox;
@FindBy(xpath = "//*[@id=\"left\"]/div[3]/div/form/input[3]")
private WebElement loginButton;
public SignInPage(WebDriver driver) {
this.driver = driver;
driver.get("www.somewebsite.com");
}
public HomePage performLogin(String username, String password){
usernameTextbox.sendKeys(username);
passwordTextbox.sendKeys(password);
loginButton.click();
return PageFactory.initElements(driver, HomePage.class);
}
}
TestLogin.java
public class TestLogin {
public WebDriver driver;
@BeforeClass
public void setup(){
System.setProperty("webdriver.chrome.driver", "path_to_chromedriver.exe");
driver = new ChromeDriver();
}
@Test
public void TestSignIn(){
SignInPage signInPage = new SignInPage(driver);
HomePage homePage = signInPage.performLogin("someusername","somepassword");
}
}
私の問題は、いつでもsignInPage.performLoginは()TestLogin.javaの@Test、例外が発生したヌルポインタで呼び出されています。
java.lang.NullPointerException
at com.tipidpc.webpages.SignInPage.performLogin(SignInPage.java:30)
at com.tipidpc.tests.TestLogin.TestSignIn(TestLogin.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:645)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:756)
at org.testng.TestRunner.run(TestRunner.java:610)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
at org.testng.TestNG.runSuites(TestNG.java:1133)
at org.testng.TestNG.run(TestNG.java:1104)
at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
あなた自身の答えを受け入れる必要があります。それは質問を「閉じる」でしょう。 – juherr