L'appel d'une méthode de classe à l'autre à l'aide de Java pour Selenium Webdriver

Je suis nouveau sur le Sélénium et le Java. L'idée de base sur mon code, j'ai créé deux classes à savoir la première et la seconde dans mon projet java. Ma première classe se compose de toutes les méthodes (de l'ouverture d'un navigateur, la connexion, la déconnexion) et mon deuxième classe comprend le programme principal d'hériter de toutes les méthodes de la première.

J'ai créé un fichier excel indiquant les cas de test (connexion , déconnexion) doit exécuter en fonction de la feuille excel. Le test sera exécuté sur la base d' "Y" ou "N" en vertu de l'Exécution de la colonne dans la feuille Excel

Quand j'ai essayé de lancer mon deuxième classe, il a montré une erreur. Veuillez trouver mon code ci-dessous et de l'erreur et de la feuille de calcul excel en tant qu'image, d'où les cas de test doivent exécuter.

C'est mon Deuxième classe (programme Principal)

package asdf;
import java.io.File;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.SkipException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class second {                   
@DataProvider(name = "DP1")
public Object[][] createData1() throws Exception {
Object[][]retObjArr=getTableArray("Resource\\Testdata.xls","credentials","TD");
return(retObjArr);
}
@Test(dataProvider = "DP1")
public void execution(String TCname, String TCDescription, String Execute) {
first r=new first();
if(Execute.equalsIgnoreCase("Y")) { 
if(TCname.equalsIgnoreCase("TC01")) {
r.login();
} else if(TCname.equalsIgnoreCase("TC02")) {
r.login();
r.logout();
}
} else {
throw new SkipException("Skipping this test case: "+TCname);
}
}       
public String[][] getTableArray(String xlFilePath, String sheetName, String tableName) throws Exception {
String[][] tabArray=null;
Workbook workbook = Workbook.getWorkbook(new File(xlFilePath));
Sheet sheet = workbook.getSheet(sheetName);
int startRow,startCol, endRow, endCol, ci, cj;
Cell tableStart=sheet.findCell(tableName);
startRow = tableStart.getRow();
startCol = tableStart.getColumn();
Cell tableEnd = sheet.findCell(tableName, startCol+1, startRow+1, 100, 64000,  false);
endRow = tableEnd.getRow();
endCol=tableEnd.getColumn();
System.out.println("startRow="+startRow+",  endRow="+endRow+", " + "startCol="+startCol+", endCol="+endCol);
tabArray = new String[endRow-startRow-1][endCol-startCol-1];
ci=0;
for (int i=startRow+1;i<endRow;i++,ci++) {
cj=0;
for (int j=startCol+1;j<endCol;j++,cj++) {
tabArray[ci][cj]=sheet.getCell(j,i).getContents();
}
}
return(tabArray);
}
}        
**This is my First class (which contains all the methods and should return these methods to Second class)** 
package asdf;
import java.io.File;    
import org.openqa.selenium.WebDriver;    
import org.openqa.selenium.By;    
import org.openqa.selenium.WebDriver;    
import org.openqa.selenium.firefox.FirefoxDriver;    
import org.openqa.selenium.ie.InternetExplorerDriver;    
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.BeforeMethod;    
import org.testng.annotations.Test;
public class first {
public static WebDriver driver;
public String baseUrl;
static{
driver =new InternetExplorerDriver();
String baseUrl = "http://newtours.demoaut.com/";
}
public void login()
{
driver.get(baseUrl);
driver.findElement(By.name("Email")).sendKeys("mercury");
driver.findElement(By.name("Passwd")).sendKeys("mercury");
driver.findElement(By.name("signIn")).click();
}
public void logout()
{
driver.findElement(By.xpath(".//*[@id='gb_71']"));
}
}

L'exception il jette est donnée ci-dessous

> [TestNG] Running:
C:\Users\SRI\AppData\Local\Temp\testng-eclipse--2072559575\testng-customsuite.xml
startRow=0, endRow=3, startCol=0, endCol=4
FAILED: execution("TC01", "login", "Y")
java.lang.ExceptionInInitializerError
at asdf.second.execution(second.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:128)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1203)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
at org.testng.TestNG.run(TestNG.java:1036)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Caused by: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.ie.driver system property; for more information, see http://code.google.com/p/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://code.google.com/p/selenium/downloads/list
at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:105)
at org.openqa.selenium.ie.InternetExplorerDriverService.access$1(InternetExplorerDriverService.java:1)
at org.openqa.selenium.ie.InternetExplorerDriverService$Builder.build(InternetExplorerDriverService.java:177)
at org.openqa.selenium.ie.InternetExplorerDriver.setupService(InternetExplorerDriver.java:111)
at org.openqa.selenium.ie.InternetExplorerDriver.setup(InternetExplorerDriver.java:104)
at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:51)
at asdf.first.<clinit>(first.java:19)
... 25 more
FAILED: execution("TC02", "logout", "N")
java.lang.NoClassDefFoundError: Could not initialize class asdf.first
at asdf.second.execution(second.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:128)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1203)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
at org.testng.TestNG.run(TestNG.java:1036)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
===============================================
Default test
Tests run: 2, Failures: 2, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 2, Failures: 2, Skips: 0
===============================================
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 0 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@9fa12f: 16 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@1cc0a0f: 0 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@e43b44: 0 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@109062e: 0 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@1d7e4d6: 31 ms

Veuillez demander votre aide.

Capture d'écran de la feuille de calcul Excel:

TD    TCname        TCDescription          Execute  
TC01                login                 Y  
TC02                logout                N  
TD

NOUVEAU RAPPORT D'ERREUR APRÈS L'AJOUT DE L'IE CHEMIN

[TestNG] Running:
C:\Users\SRI\AppData\Local\Temp\testng-eclipse--824275806\testng-customsuite.xml
startRow=0, endRow=3, startCol=0, endCol=4
FAILED: execution("TC01", "login", "Y")
java.lang.ExceptionInInitializerError
at asdf.second.execution(second.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:128)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1203)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
at org.testng.TestNG.run(TestNG.java:1036)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Caused by: java.lang.IllegalStateException: The driver executable does not exist: C:\Selenium\iexploredriver.exe
at com.google.common.base.Preconditions.checkState(Preconditions.java:176)
at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:117)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:112)
at org.openqa.selenium.ie.InternetExplorerDriverService.access$1(InternetExplorerDriverService.java:1)
at org.openqa.selenium.ie.InternetExplorerDriverService$Builder.build(InternetExplorerDriverService.java:177)
at org.openqa.selenium.ie.InternetExplorerDriver.setupService(InternetExplorerDriver.java:111)
at org.openqa.selenium.ie.InternetExplorerDriver.setup(InternetExplorerDriver.java:104)
at org.openqa.selenium.ie.InternetExplorerDriver.<init>(InternetExplorerDriver.java:51)
at asdf.first.<clinit>(first.java:21)
... 25 more
FAILED: execution("TC02", "logout", "N")
java.lang.NoClassDefFoundError: Could not initialize class asdf.first
at asdf.second.execution(second.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:128)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1203)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
at org.testng.TestNG.run(TestNG.java:1036)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
===============================================
Default test
Tests run: 2, Failures: 2, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 2, Failures: 2, Skips: 0
===============================================
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 15 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@9fa12f: 78 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@1cc0a0f: 0 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@e43b44: 47 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@109062e: 0 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@1d7e4d6: 110 ms
  • La réponse est dans le journal des erreurs. Vous devez définir le chemin d'accès à l'internet explorer de pilote pour webdriver.
InformationsquelleAutor Sriram | 2013-04-05