简体   繁体   English

执行Testng文件时方法错误

[英]Method error while executing the Testng file

I am a beginner to java. 我是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. 就像使用dataprovider类或使用testng.xml并作为参数传递来运行一样。 You can createa a testng.xml like this 您可以像这样创建一个testng.xml

<?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. 然后使用testng.xml运行文件。 You can right click go to runas - > run configurations - > Suite -> chose the testng.xml in your project. 您可以右键单击转到runas->运行配置-> Suite->在项目中选择testng.xml。 For more details read this 有关更多详细信息,请阅读

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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