简体   繁体   中英

Method error while executing the Testng file

I am a beginner to java. Kindly help me in the below code,

@Test(priority=1)
  public void signup(String emailvalue) {
  System.out.println("Page Title: " +driver.getTitle()); 

  driver.findElement(By.id("proprietorName")).sendKeys("Im Owner");

  driver.findElement(By.id("businessName")).sendKeys("Pharmacy By Selenium");

  driver.findElement(By.id("proprietorMobileNo")).sendKeys("1236547890");

  driver.findElement(By.id("website")).sendKeys("http://www.google.com");

  driver.findElement(By.id("businessUserEmail")).sendKeys("emailvalue");

  driver.findElement(By.id("businessUserPassword")).sendKeys("123456");

  driver.findElement(By.id("confirmpass")).sendKeys("123456");

  driver.findElement(By.xpath("//div[@class='col-md-12 mgbt-xs-10 mgtp-20']//div[@class='vd_checkbox']//label[@for='checkbox-2']")).click();

  driver.findElement(By.id("submit-register")).click();

  try
  {
      if(driver.findElement(By.xpath("//div[@class='alert alert-danger vd_hidden']")).isDisplayed())
      {
          driver.findElement(By.id("businessUserEmail")).clear();

          driver.findElement(By.id("businessUserEmail")).sendKeys("emailvalue");

          driver.findElement(By.id("submit-register")).click();
      }

  }
  catch(NoSuchElementException e)
  {
      System.out.println("Given inputs are accepted.");
  }


      switch(emailvalue)
      {   

    case "0": 
          emailvalue = "daniel@xxxx.in";
          break;

    case "1":
          emailvalue = "daniel1@xxxx.in";
          break;

    case "2":
          emailvalue = "daniel2@xxxx.in";
          break;

    case "3":
          emailvalue = "daniel3@xxxx.in";
          break;

    case "4":
          emailvalue = "daniel4@xxxx.in";
          break;      

    case "5":
          emailvalue = "daniel5@xxxx.in";
          break;          

      }

}
  } 

When i execute the above code, i got the following error,

Method signup requires 1 parameters but 0 were supplied in the @Test annotation.
    at org.testng.internal.Parameters.checkParameterTypes(Parameters.java:198)
    at org.testng.internal.Parameters.createParameters(Parameters.java:134)
    at org.testng.internal.Parameters.createParameters(Parameters.java:373)
    at org.testng.internal.Parameters.handleParameters(Parameters.java:450)
    at org.testng.internal.Invoker.handleParameters(Invoker.java:1383)
    at org.testng.internal.Invoker.createParameters(Invoker.java:1075)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1180)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
    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:1224)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
    at org.testng.TestNG.run(TestNG.java:1057)
    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)

You need to pass arguments to the test method. That could be done in multiple ways. Like using dataprovider classes or running using testng.xml and passing as argument. You can createa a testng.xml like this

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<suite allow-return-values="false" configfailurepolicy="skip" data-provider-thread-count="10" group-by-instances="false" junit="false" name="FullSuite" preserve-order="true" skipfailedinvocationcounts="false" thread-count="5" verbose="1">

   <test allow-return-values="false" group-by-instances="false" id="apiversion1" junit="false" name="TestExecutionWithAPIversion1" preserve-order="true" skipfailedinvocationcounts="false">
      <parameter name="emailvalue" value="0"/>
      <classes>
         <class name="com.test.scripts.yourclassnamewithcorrectpackage/>

      </classes>
   </test>
</suite>

and then modify your method to read the parameter you are passing

@Parameters({ "emailvalue" })
@Test(priority=1)
  public void signup(String emailvalue) {
  System.out.println("Page Title: " +driver.
....


}

And then run the file using testng.xml. You can right click go to runas - > run configurations - > Suite -> chose the testng.xml in your project. For more details read this

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM