2017-07-07 23 views
0

我在頁面對象模型自動化框架中實現了pagefactory。我現有的框架沒有pagefactory工作正常。現在我正在實施pagefactory來調用元素。我面臨的一個問題是Pagefactory元素拋出空值。 我懷疑它可能是因爲構造函數不確定。頁面對象結構中的Pagefactory拋出null

我必須建立一個基於網頁對象模型 下面有包一個框架: - com.automationframework com.configutaion com.pageObject com.testcases com.testsuites

我的測試包類調用測試用例存在於測試用例包中並調用驅動程序和其他基於框架的自動化框架類。 我知道很難通過閱讀一些東西來獲取錯誤,但可能有人遇到同樣的問題,可以幫助我。

我的Page類看起來類似如下: -

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; 
} 

我的測試用例類: -

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) at com.sun.proxy。$ Proxy5.click(Unknown Source)at com.cc.automation.testcases.SyncTest.syncFeature(SyncTest.java:130) at com.cc. automation.testcases.SyncTest.verifyTestCases(SyncTest.java:60) at com.cc.automation.automationframework.AutomationTestCaseVerification.Execute(AutomationTestCaseVerification.java:58) 在 com.cc.automation.testsuites.SynchronizationTest.testSync(SynchronizationTest.java:22) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(來源不明)在 太陽.relegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) at org.testng.internal .Invoker.invokeMethod(Invoker.java:661)在 org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)在 組織.testng.internal.TestMethodWork er.invokeTestMethods(TestMethodWorker.java:126) 在 org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 在org.testng.TestRunner.privateRun(TestRunner.java:744)在 org.testng .TestRunner.run(TestRunner.java:602)在 org.testng.SuiteRunner.runTest(SuiteRunner.java:380)在 org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)在 org.testng.SuiteRunner .privateRun(SuiteRunner。的java:340) org.testng.SuiteRunner.run(SuiteRunner.java:289),該 org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52),該 org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java: 86),該 org.testng.TestNG.runSuitesSequentially(TestNG.java:1301),該 org.testng.TestNG.runSuitesLocally(TestNG.java:1226),該 org.testng.TestNG.runSuites(TestNG.java:1144)該 org.testng.TestNG.run(TestNG.java:1115),該 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) 該org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java: 230) 該org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)

在還嘗試了兩種低於申請,但仍無法正常工作: -

PageFactory.initElements(this.driver,這一點);

enter image description here

enter image description here

+0

,而不是印刷ex.getMessage() - 使用ex.printStackTrace()兩個節目的錯誤,並將其添加到主題 –

+0

感謝響應@Vitaliy ..我已經加入堆棧跟蹤 –

+0

錯誤是'com.cc.automation .testcases.SyncTest.syncFeature(SyncTest.java:130)'。哪條線究竟是什麼? –

回答

1

可以通過調用PageFactory.initElements(driver, this);您SynchronizationPage類的構造函數裏嘗試一次。