0

Abfrage - Der letzte Satz von Werten bleibt erhalten, der Fehler, den ich bekomme, ist, dass es nicht in der Lage ist, den Xpath zu korrigieren, aber es funktioniert gut für andere zwei Fälle. Also ein bisschen verwirrt. Ich habe den Fehlercode auch eingefügt. Würde mich über jede Hilfe freuen, die ich bekommen kann. Danke im Voraus.Datenprovider Anotation - Testng Selenium Java

Testcode -

@Test(priority = 4, dataProvider = "getData") 
      public void loginScenario(String Username, String Password) throws InterruptedException { 

WebElement user = driver.findElement(By.xpath(".//*[@id='LoginForm_username']")); 
       if(null != user) { 
        user.clear(); 
       } 

       WebElement pass = driver.findElement(By.xpath(".//*[@id='LoginForm_password']")); 
       if(null != pass) { 
        pass.clear(); 
       } 

       // driver.findElement(By.xpath(".//*[@id='LoginForm_username']")).click(); 
       // driver.findElement(By.xpath(".//*[@id='LoginForm_username']")).click(); 
       driver.findElement(By.xpath(".//*[@id='LoginForm_username']")).sendKeys(Username); 
       driver.findElement(By.xpath(".//*[@id='LoginForm_password']")).sendKeys(Password); 
       driver.findElement(By.xpath(".//*[@id='login-form']/button")).click(); 
       driver.findElement(By.xpath(".//*[@id='LoginForm_username']")).clear(); 
       driver.findElement(By.xpath(".//*[@id='LoginForm_password']")).clear(); 

      } 

      @DataProvider 
      public Object[][] getData() { 

       Object[][] data = new Object[3][2]; 
       data[0][0] = "abcd"; 
       data[0][1] = "xyz"; 
       data[1][0] = "..."; 
       data[1][1] = "."; 
       data[2][0] = "[email protected]"; 
       data[2][1] = "kingkongkijai"; 

       return data; 

      } 
     } 

Error - 

FAILED: loginScenario("[email protected]", "kingkongkijai") 
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":".//*[@id='LoginForm_username']"} 
Command duration or timeout: 51 milliseconds 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:215) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:167) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:671) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:410) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:509) 
    at org.openqa.selenium.By$ByXPath.findElement(By.java:361) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:402) 
    at pages.LoginPage.loginScenario(LoginPage.java:69) 
    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:108) 
    at org.testng.internal.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.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) 
    at org.testng.TestRunner.privateRun(TestRunner.java:744) 
    at org.testng.TestRunner.run(TestRunner.java:602) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) 
    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:1301) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 
    at org.testng.TestNG.runSuites(TestNG.java:1144) 
    at org.testng.TestNG.run(TestNG.java:1115) 
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76) 
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":".//*[@id='LoginForm_username']"} 
For documentation on this error, please visit: 

http://seleniumhq.org/exceptions/no_such_element.html

+0

Können Sie uns die Website geben, wo Sie testen wollen? Derzeit denke ich, einer der Gründe, warum es scheitert, ist, dass für den Treiber keine Zeitüberschreitung festgelegt ist. Es kommt also zu einer Zeitüberschreitung, bevor das Element gefunden wird. –

+0

@Madis Kangro - Vielen Dank für Ihre Antwort. Möchte teilen, dass die 2 von 3 Sets gut laufen und auch da der letzte Satz ein gültiger Benutzername und ein Passwort ist, meldet er sich auch in der Firefox-Instanz an, die vom Treiber gestartet wurde. Es zeigt jedoch, dass es in der Konsole fehlschlägt. Es tut mir leid, dass ich Ihnen die Details der URL nicht mitteilen kann. Ich würde ein Timeout hinzufügen und Sie in Kürze aktualisieren. –

+0

Auch eine Frage. Sollte es mit den endgültigen Daten ein Erfolgsfall sein? Wenn ja, besteht das Problem darin, dass es sich auf der Website anmeldet und dann dieses driver.findElement (By.xpath (".//**@@ id = 'LoginForm_username')")). Clear(); Das Element verschwindet aus der Ansicht, was zu der Ausnahme Element nicht gefunden führt. –

Antwort

0

@Madis Kangro

Habe ich nur noch den Code unten, nachdem Sie Eingänge und Sie waren Knall auf! Vielen Dank

WebElement user = driver.findElement(By.xpath(".//*[@id='LoginForm_username']"‌​)); if(null != user) { user.clear(); } WebElement pass = driver.findElement(By.xpath(".//*[@id='LoginForm_password']"‌​)); if(null != pass) { pass.clear(); } 
Verwandte Themen