2017-07-07 1 views
0

Ich implementiere pagefactory in meinem Framework für Seitenobjektmodellautomatisierung. Mein bestehendes Framework funktioniert ohne pagefactory. Jetzt implementiere ich pagefactory, um Elemente aufzurufen. Ich stehe vor einem Problem, bei dem das Pagefactory-Element Nullwerte ausgibt. Ich habe Zweifel, dass es wegen Konstrukteure nicht sicher sein kann.Pagefactory wirft null in der Seitenobjektstruktur

ich bauen einen Rahmen auf Seite Object Model Pakete wie folgt: - com.automationframework com.configutaion com.pageObject com.testcases com.testsuites

Meine Testsuites Klassen ruft Testfälle Präsentieren Sie in Testcases Paket und rufen Sie Treiber und andere Framework-basierte Klassen in Automationframework auf. Ich weiß, dass es schwer ist, den Fehler zu packen, indem man einfach nur ein paar Sachen liest, aber vielleicht hat jemand das gleiche Problem und kann mir helfen.

Mein sieht etwas Page-Klasse wie folgt: -

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

Mein Testfall-Klasse: -

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

ich Fehler wie unten bin immer: -

java.lang.NullPointerException bei org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement (DefaultElementLocator.java:69) bei org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke (LocatingElementHandler.java:38) bei com.sun.proxy. $ Proxy5.click (unbekannte Quelle) um com.cc.automation.testcases.SyncTest.syncFeature (SyncTest.java:130) um com.cc. automation.testcases.SyncTest.verifyTestCases (SyncTest.java:60) um com.cc.automation.automationframework.AutomationTestCaseVerification.Execute (AutomationTestCaseVerification.java:58) bei com.cc.automation.testsuites.SynchronizationTest.testSync (SynchronizationTest.java:22) bei sun.reflect.NativeMethodAccessorImpl.invoke0 (Mutter Methode) bei sun.reflect.NativeMethodAccessorImpl.invoke (Unknown Source) bei Sonne .reflect.DelegatingMethodAccessorImpl.invoke (Unknown Source) bei java.lang.reflect.Method.invoke (Unknown Source) bei org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:108) bei org.testng.internal .Invoker.invokeMethod (Invoker.java:661) um org.testng.internal.Invoker.invokeTestMethod (Invoker.java:869) um org.testng.internal.Invoker.invokeTestMethods (Invoker.java:1193) um org .testng.internal.TestMethodWork er.invokeTestMethods (TestMethodWorker.java:126) bei org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) bei org.testng.TestRunner.privateRun (TestRunner.java:744) bei org.testng .TestRunner.run (TestRunner.java:602) um org.testng.SuiteRunner.runTest (SuiteRunner.java:380) um org.testng.SuiteRunner.runSequentially (SuiteRunner.java:375) um org.testng.SuiteRunner .privateRun (SuiteRunner.Java: 340) bei org.testng.SuiteRunner.run (SuiteRunner.java:289) bei org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) bei org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker.java: 86) um org.testng.TestNG.runSuitesSequentially (TestNG.java:1301) um org.testng.TestNG.runSuitesLocally (TestNG.java:1226) um org.testng.TestNG.runSuites (TestNG.java:1144) bei org.testng.TestNG.run (TestNG.java:1115) bei org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:132) bei org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java: 230) bei org.testng.remote.RemoteTestNG.main (RemoteTestNG.java:76)

Ich habe auch versucht, unten, damit aber immer noch nicht funktioniert: -

PageFactory.initElements (this.driver, this);

enter image description here

enter image description here

+0

anstelle von Drucken ex.getMessage() - verwenden Sie ex.printStackTrace(), um Fehler anzuzeigen und fügen Sie es dem Thema –

+0

Danke für die Antwort @Vitaliy .. Ich habe die Stacktrace hinzugefügt –

+0

Fehler ist in 'com.cc.automation .testcases.SyncTest.syncFeature (SyncTest.java:130) '. Welche Linie genau ist das? –

Antwort

1

Können Sie versuchen, einmal von PageFactory.initElements(driver, this); innerhalb der Konstruktor Ihrer SynchronizationPage Klasse aufrufen.

Verwandte Themen