Note that there are some explanatory texts on larger screens.

plurals
  1. POCalling a method from class to another using Java for Selenium Webdriver
    primarykey
    data
    text
    <p>I am new to Selenium and Java. The basic idea about my code is, I have created two classes namely first and second under my java project. My first class consists of all the methods (opening a browser, login, logout) and my second class consists of the main program to inherit all the methods from the first. </p> <p>I have created an excel stating which test case (login , logout) should run based on the excel sheet. The test case will be executed based on "Y" or "N" under Execute column in Excel sheet </p> <p>When I tried to run my second class it showed an error. Please find my code below and the error and excel sheet as image from where the test case ought to run.</p> <p><strong>This is my Second class (Main program)</strong> </p> <pre class="lang-java prettyprint-override"><code>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&lt;endRow;i++,ci++) { cj=0; for (int j=startCol+1;j&lt;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)** </code></pre> <pre class="lang-java prettyprint-override"><code>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']")); } } </code></pre> <p><strong>The exception it throws is given below</strong></p> <pre class="lang-java prettyprint-override"><code>&gt; [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.&lt;init&gt;(InternetExplorerDriver.java:51) at asdf.first.&lt;clinit&gt;(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 </code></pre> <p>Kindly requesting your help on this.</p> <p>Screen shot of Excel sheet:</p> <pre><code>TD TCname TCDescription Execute TC01 login Y TC02 logout N TD </code></pre> <p><strong>NEW ERROR REPORT AFTER ADDING THE IE PATH</strong></p> <pre><code>[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.&lt;init&gt;(InternetExplorerDriver.java:51) at asdf.first.&lt;clinit&gt;(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 </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload