我是java的初学者。请在下面的代码中帮助我,
@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;
}
}
}
当我执行上面的代码时,我收到以下错误,
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)
答案 0 :(得分:0)
您需要将参数传递给测试方法。这可以通过多种方式完成。就像使用dataprovider类或使用testng.xml运行并作为参数传递一样。您可以像这样创建一个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>
然后修改您的方法以读取您要传递的参数
@Parameters({ "emailvalue" })
@Test(priority=1)
public void signup(String emailvalue) {
System.out.println("Page Title: " +driver.
....
}
然后使用testng.xml运行该文件。您可以右键单击转到runas - &gt;运行配置 - &gt;套房 - &gt;选择了项目中的testng.xml。有关详细信息,请参阅this