2017-07-07 3 views
0

私はPageオブジェクトモデルの自動化フレームワークでpagefactoryを実装しています。私の既存のフレームワークはページ属性なしでうまく動作します。今私は要素を呼び出すためにpagefactoryを実装しています。 Pagefactory要素がnull値を投げている問題に直面しています。 コンストラクタがわからないことが原因である可能性があります。私は以下のようにパッケージをお持ちの ページオブジェクトモデルに基づくフレームワーク構築していPageオブジェクト構造でnullをスローするPagefactory

: - com.automationframework com.configutaion com.pageObject com.testcases com.testsuites

私のテストスイートクラスは、テストケースを呼び出しますテストケースパッケージ内に存在し、ドライバやその他のフレームワークベースのクラスをオートメーションフレームワーク内で呼び出す。 私はいくつかのものを読むだけでエラーをつかむのは難しいことを知っていますが、誰もが同じ問題に直面し、私を助けることができるかもしれません。

マイページクラスには、以下のようになります -

public class SynchronizationPage extends Page { 

    ExcelLib xl = new ExcelLib(); 

    private WebElement element = null; 

    public SynchronizationPage(WebDriver driver) { 
     super(driver); 
    } 

    protected boolean isSecured() { 
     return true; 
    } 

    @FindBy(how = How.XPATH, using = "//a[@class='header-font']/span[@class='icon-cog']") 
    @CacheLookup 
    public WebElement HoverOnSettings; 
} 

マイTestCaseクラス: -

public class SyncTest extends AutomationTestCaseVerification { 

// SynchronizationPage sync = new SynchronizationPage(Page.driver); 
    SignOutPage signout = new SignOutPage(Page.driver); 
    ExcelLib xl = new ExcelLib(); 
    SynchronizationPage synccc = PageFactory.initElements(Page.driver, SynchronizationPage.class); 

    private WebElement element = null; 
    private WebDriver driver; 

    public SyncTest() { 
     super(); 
    } 


    @Override 
    protected void verifyTestCases() throws Exception { 
     syncFeature(); 
    } 

    public void syncFeature() throws Exception { 

     try { 
     WebDriverWait waits = new WebDriverWait(Page.driver, 60); 
    // waits.until(ExpectedConditions.elementToBeClickable(synccc.clickOnOffButton)).click(); 
     synccc.clickOnOffButton.click(); 
     System.out.println("Yes I clicked"); 
     } 
     catch(Exception ex) 
     { 
      System.out.println("error ="+ex.getMessage()); 
      } 

    } 
} 

enter image description here

enter image description here

私は以下のようなエラーを取得しています: -

org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invokeでorg.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69) で

java.lang.NullPointerExceptionが(LocatingElementHandler.java:38) (com.sun.proxy)$ Proxy5.click(不明なソース) com.cc.automation.testcases.SyncTest.syncFeature(SyncTest.java:130) at com.cc. automation.testcases.SyncTest.verifyTestCases(SyncTest.java:60) ( )com.cc.automation.automationframework.AutomationTestCaseVerification.Execute(AutomationTestCaseVerification.java:58) sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)で でcom.cc.automation.testsuites.SynchronizationTest.testSync(SynchronizationTest.java:22) 日でorg.testng.internalで org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) で java.lang.reflect.Method.invoke(不明なソース)で.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース) .Invoker.invokeMethod(Invoker.java:661)at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)at org .testng.internal.TestMethodWork org.testngでorg.testng.TestRunner.privateRunでer.invokeTestMethods org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)で(TestMethodWorker.java:126) (TestRunner.java:744) .TestRunner.run(TestRunner.java:602)at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) org.testng.SuiteRunner .privateRun(SuiteRunner。(SuiteRunnerWorker.java:289)at org.testng.SuiteRunner.run(SuiteRunner.java:289) org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java: (TestNG.java:1301)at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) org.testng.TestNG.runSuitesLocally(TestNG.java:1226)at org.testng.TestNG.runSuites(TestNG.java:1144) org.testng.remote.RemoteTestNG.initAndRunで org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) でorg.testng.TestNG.run(TestNG.java:1115)(RemoteTestNG.javaで: 230) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)

私はまた、以下に適用しようとしましたが、まだ動作していない: -

PageFactory.initElements(this.driver、これを)。

enter image description here

enter image description here

+0

ex.printStackTrace()を使用してエラーを表示し、トピックに追加してください –

+0

応答@Vitaliyに感謝します。スタックトレースを追加しました –

+0

エラーは 'com.cc.automation .testcases.SyncTest.syncFeature(SyncTest.java:130) '。それはどんな行ですか? –

答えて

1

あなたSynchronizationPageクラスのコンストラクタ内PageFactory.initElements(driver, this);を呼び出すことにより、一度試すことができます。

の代わりに
関連する問題