2016-06-02 25 views
2

Ich versuche, eine TestNG Suite gegen Internet Explorer zu starten. Es scheint jedoch fehlgeschlagen zu sein, mit dem CSS-Locator ein Element auf der Webseite zu finden. Ich verwende die Annotation @FindAll, um mehrere Ortungsstrategien anzugeben, und diese Strategien eignen sich gut für Chrome und Firefox. Hier ist der Fehler, den ich in der TestNG Ausfall Zusammenfassung sehe:Wie @FindAll funktioniert für InternetExplorer WebDriver mit Selenium

org.openqa.selenium.WebDriverException: (ACHTUNG: Der Server hat nicht bietet alle Informationen Stacktrace) Befehl Dauer oder Timeout: 70 Millisekunden Build-Info : Version: '2.53.0', Revision: '35ae25b', Uhrzeit: '2016-03-15 17:00:58' Systeminfo: Host: '(Hostname wurde hier weggelassen)', IP: '10 .18 .28.53 ', Betriebssystemname:' Windows 10 ', os.arch:' amd64 ', Versionsnummer: '10.0', java.version: '1.8.0_91' Treiberinfo: org.openqa.selenium.ie .InternetExplorerDriver Capabilities [{browserAttachTimeout = 0, dh.enableFullPageScreenshot = true, enablePersistentHover = true, ie.forceCreateProcessApi = false, ie.forceShellWindowsApi = false, pageLoadStrategy = normal, ignoreZoomSetting = false, ie.fileUploadDialogTimeout = 3000, Version = 11, Plattform = WINDOWS, nativeEvents = true, ie.ensureCleanSession = falsch, elementScrollBehavior = 0, ie.browserCommandLineSwitches =, requireWindowFocus = false, browser = Internet Explorer, initialBrowserUrl = http://localhost:28843/, javascriptEnabled = true, ignoreProtectedModeSettings = false, enableElementCacheCleanup = true, unexpectedAlertBehaviour = entlassen}] Session ID: 3ccb2fc8-aac7-484c-8a0d-ca8c8539742e *** Elementinfo: {Using = css selektor, value = # content> div.container> h1} a t sun.reflect.NativeConstructorAccessorImpl.newInstance0 (native Methode) bei sun.reflect.NativeConstructorAccessorImpl.newInstance (Unbekannt Quelle) bei sun.reflect.DelegatingConstructorAccessorImpl.newInstance (Unbekannt Quelle) bei java.lang.reflect.Constructor.newInstance (Unknown Source) bei org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:206) bei org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:158) bei org .openqa.selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.java:678) unter org.openqa.selenium.remote.RemoteWebDriver.findElements (RemoteWebDriver.jav a: 388) bei org.openqa.selenium.remote.RemoteWebDriver.findElementsByCssSelector (RemoteWebDriver.java:496) bei org.openqa.selenium.By $ ByCssSelector.findElements (By.java:441) bei org.openqa .selenium.support.pagefactory.ByAll.findElements (ByAll.java:63) bei org.openqa.selenium.support.pagefactory.ByAll.findElement (ByAll.java:52) bei org.openqa.selenium.remote .RemoteWebDriver.findElement (RemoteWebDriver.java:355) bei org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement (DefaultElementLocator.java:69) bei org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler .invozieren (OrtungElem entHandler.java:38) bei com.sun.proxy. $ Proxy13.getText (Unknown Source) bei com.webcp.common.pageobjects.LoginPage.getLoginTextTop (LoginPage.java:58) bei com.webcp.common .pageobjects.LoginPage.verifyLoginTextTop (LoginPage.java:65) unter com.webcp.common.tests.LoginPageTest.verifyLoginPage (LoginPageTest.java:45) bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) bei sun.reflect.NativeMethodAccessorImpl.invoke (Unknown Source) bei sun.reflect.DelegatingMethodAccessorImpl.invoke (Unknown Source) bei java.lang.reflect.Method.invoke (Unknown Source) bei org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:85) bei org.testng.internal.Invoker.invokeMethod (Invoker.java:639) um org.testng.internal.Invoker.invokeTestMethod (Invoker.java: 816) bei org.testng.internal.Invoker.invokeTestMethods (Invoker.java:1124) bei org.testng.internal.TestMethodWorker.invokeTestMethods (TestMethodWorker.java:125) bei org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:108) bei org.testng.TestRunner.privateRun (TestRunner.java:774) bei org.testng.TestRunner.run (TestRunner.java:624) bei org.testng.SuiteRunner.runTest (SuiteRunner.java:359) bei org.testng.SuiteRunner.runSequentially (SuiteRunner.java:354) um org.testng.SuiteRunner.privateRun (SuiteRunner.java:312) um org.testng.SuiteRunner.run (SuiteRunner.java:261) um org. testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) um org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker.java:86) um org.testng.TestNG.runSuites Sequentially (TestNG.java:1215) um org.testng. TestNG.runSuitesLocally (TestNG.java:1140) um org.testng.TestNG.run (TestNG.java:1048) um ​​ org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:126) bei org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java:137) bei org.testng.remote.RemoteTestNG.main (RemoteTestNG.java : 58)

Und hier ist der Code-Block, der ausgeführt wird:

TestBaseSetup Klasse Schnipsel:

public class TestBaseSetup 
    { 
     private static WebDriver driver; 
     private static Logger  Log   = Logger.getLogger(TestBaseSetup.class.getName()); 
     static String    driverPath = "C:\\Users\\bberndt\\eclipse\\Selenium Files\\"; 

     public static WebDriver getDriver() 
      { 
       return driver; 
      } 

private static WebDriver initIEDriver(String appURL) 
     { 
      Log.info("Launching Microsoft Internet Explorer with new profile"); 
      File file = new File(driverPath + "IEDriverServer.exe"); 
      System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); 
      WebDriver driver = new InternetExplorerDriver(); 
      Log.info("Driver instantiated"); 
      driver.manage().window().maximize(); 
      Log.info("Window maximized"); 
      driver.get(appURL); 
      Log.info("Navigating to: " + appURL); 
      return driver; 
     } 
} 

LoginPageTest Klasse:

Objekt-Repository

Loginpage:

public class LoginPage 
    { 
     protected WebDriver  driver; 
     private static Logger Log = Logger.getLogger(LoginPage.class.getName()); 

     @FindAll({ @FindBy(xpath = "/html/body/div/div/div/h1"), 
       @FindBy(css = "#content > div.container > h1") }) 
     private WebElement  loginTextTop; 
     @FindAll({ @FindBy(xpath = "/html/body/div/div/div/h2"), 
       @FindBy(css = "h2") }) 
     private WebElement  loginTextBottom; 

     public LoginPage(WebDriver driver) 
      { 
       this.driver = driver; 
      } 

     public String getPageTitle() 
      { 
       String title = driver.getTitle(); 
       return title; 
      } 

     public boolean verifyLoginPageTitle() 
      { 
       String expectedPageTitle = "WTS"; 
       return getPageTitle().contains(expectedPageTitle); 
      } 

     public String getLoginTextTop() 
      { 
       String TextTop = loginTextTop.getText(); 
       return TextTop; 
      } 

     public boolean verifyLoginTextTop() 
      { 
       String expectedPageText = "Welcome to CenterPoint™"; 
       return getLoginTextTop().contains(expectedPageText); 
      } 

     public String getLoginTextBottom() 
      { 
       String TextBottom = loginTextBottom.getText(); 
       return TextBottom; 
      } 

     public boolean verifyLoginTextBottom() 
      { 
       String expectedPageText = "Please Sign In"; 
       return getLoginTextBottom().contains(expectedPageText); 
      } 
    } 
+0

Mit welchen Versionen von Internet Explorer soll das laufen? – Zoot

+0

Die Version, die ich verwende, ist IE 11 @Zoot –

Antwort

0

Es stellte sich heraus, dass dies mit dem Code kein Problem war. Stattdessen musste eine Einstellung in den Internetoptionen aktiviert werden, damit sie funktioniert. Erweitert> Einstellungen> Sicherheit> Zulassen, dass aktiver Inhalt in Dateien auf Arbeitsplatz ausgeführt wird.

Sobald ich dieses Kästchen ankreuzte, arbeitete mein IE Test wie erwartet.