简体   繁体   English

在Java中运行selenium webdriver测试用例时的参数错误

[英]Parameter error when running selenium webdriver test case in Java

I'm trying to run this method in Selenium webdriver but I continue to get this error: 我正在尝试在Selenium webdriver中运行此方法,但我继续收到此错误:

org.testng.TestNGException: 
Method PopulateBorrower requires 2 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:370)
    at org.testng.internal.Parameters.handleParameters(Parameters.java:447)
    at org.testng.internal.Invoker.handleParameters(Invoker.java:1384)
    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: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)

--------->what am I doing wrong? --------->我做错了什么? The code is below. 代码如下。 I have its's setup in a SetUpBase separate class. 我在SetUpBase单独的类中设置了它。

@Test
public static void PopulateBorrower(String PrimaryBorrowerBaseName1,String PrimaryBorrowerBaseName)
{       
    String fName= PrimaryBorrowerInputDictionary.get(BorrowerFirstNameElement);
    String lName=PrimaryBorrowerInputDictionary.get(BorrowerLastNameElement);
    String suffix=PrimaryBorrowerInputDictionary.get(BorrowerSuffixElement);
    String social=PrimaryBorrowerInputDictionary.get(BorrowerSocialSecurityNumberElement);
    String homePhone=PrimaryBorrowerInputDictionary.get(BorrowerHomePhoneNumberElement);
    String schoolYears=PrimaryBorrowerInputDictionary.get(BorrowerYearsInSchoolElement);

    driver.findElement(By.id(PrimaryBorrowerBaseName1 + BorrowerFirstNameElement)).sendKeys(fName);
    driver.findElement(By.id(PrimaryBorrowerBaseName1 + BorrowerLastNameElement)).sendKeys(lName);
    driver.findElement(By.id(PrimaryBorrowerBaseName1 + BorrowerSuffixElement)).sendKeys(suffix);
    driver.findElement(By.name(PrimaryBorrowerBaseName + BorrowerHomePhoneNumberElement)).sendKeys(social);

    driver.findElement(By.name(PrimaryBorrowerBaseName + BorrowerHomePhoneNumberElement)).sendKeys(homePhone);
    driver.findElement(By.name(PrimaryBorrowerBaseName + BorrowerYearsInSchoolElement)).sendKeys(schoolYears);
    driver.findElement(By.name(PrimaryBorrowerBaseName +BorrowerMarriageStatusElement )).click();


    assertEquals(driver.findElement(By.id(PrimaryBorrowerBaseName + BorrowerFirstNameElement))
                .getText(), fName);

    assertEquals(driver.findElement(By.id(PrimaryBorrowerBaseName + BorrowerLastNameElement))
            .getText(), lName);

    assertEquals(driver.findElement(By.id(PrimaryBorrowerBaseName + BorrowerSuffixElement))
            .getText(), suffix);

    assertEquals(driver.findElement(By.id(PrimaryBorrowerBaseName + BorrowerHomePhoneNumberElement))
            .getText(), homePhone);

    assertEquals(driver.findElement(By.id(PrimaryBorrowerBaseName + BorrowerYearsInSchoolElement))
            .getText(), schoolYears);

    assertTrue(driver.findElement(By.id(PrimaryBorrowerBaseName + BorrowerMarriageStatusElement))
            .isSelected());
 }

The TestNGException is coming because your @Test method requires 2 parameters (ie PrimaryBorrowerBaseName1 and PrimaryBorrowerBaseName ) but you are not passing them. TestNGException即将发布,因为您的@Test方法需要2个参数(即PrimaryBorrowerBaseName1PrimaryBorrowerBaseName ),但您没有传递它们。

To solve this you need to supply these parameters when TestNG invokes your @Test method (ie PopulateBorrower ). 要解决此问题,您需要在TestNG调用@Test方法(即PopulateBorrower )时提供这些参数。 TestNG provides 2 ways to do the same. TestNG提供了两种方法来做同样的事情。

Supplying parameters in TestNG TestNG提供参数

  1. Parameters from testng.xml 来自testng.xml的参数
  2. Parameters with DataProviders DataProviders的参数

You can try any one of below approach to solve your issue. 您可以尝试以下任何一种方法来解决您的问题。

Solution 1: Parameters from testng.xml 解决方案1:testng.xml中的参数

The testng.xml file : testng.xml文件

<suite name="My Suite">
    <parameter name="primary-borrower-base-name1" value="value1" />
    <parameter name="primary-borrower-base-name"  value="value"/>
    <test name="My Test">
        <classes>
            <class
                name="yourpackage.PopulateBorrowerTestClass2" />
        </classes>
    </test>
</suite>

Your test class : 你的考试班

package yourpackage;

import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

public class PopulateBorrowerTestClass2 {

    @Parameters({ "primary-borrower-base-name1", "primary-borrower-base-name" })
    @Test
    public static void PopulateBorrower(String PrimaryBorrowerBaseName1, String PrimaryBorrowerBaseName)
    {       
        System.out.println(PrimaryBorrowerBaseName1 + " " + PrimaryBorrowerBaseName);
       //your all code goes here
     }
}

Solution 2: Parameters with DataProviders 解决方案2:使用DataProviders的参数

The testng.xml file : testng.xml文件

<suite name="My Suite">
    <test name="My Test">
        <classes>
            <class name="yourpackage.PopulateBorrowerTestClass1" />
        </classes>
    </test>
</suite>

Your test class : 你的考试班

package yourpackage;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class PopulateBorrowerTestClass1 {

    //This method will provide data to any test method that declares that its Data Provider
    //is named "test1"
    @DataProvider(name = "test1")
    public Object[][] createData1() {
     return new Object[][] {
       { "PrimaryBorrowerBaseName1Value", "PrimaryBorrowerBaseNameValue" }
     };
    }

    //This test method declares that its data should be supplied by the Data Provider
    //named "test1"
    @Test(dataProvider = "test1")
    public static void PopulateBorrower(String PrimaryBorrowerBaseName1, String PrimaryBorrowerBaseName)
    {       
        System.out.println(PrimaryBorrowerBaseName1 + " " + PrimaryBorrowerBaseName);
       //your all code goes here
     }
}

Why do you use static function as a test? 为什么使用静态函数作为测试? It should not be static! 它不应该是静态的!

Does your unit test use the @DataProvider annotation (@Parameterized in JUnit 4.11)? 您的单元测试是否使用@DataProvider注释(JUnit 4.11中的@Parameterized)? If so, and you have defined a data provider method, then your @Test annotation needs to recognize it as such like so: 如果是这样,并且您已经定义了数据提供者方法,那么您的@Test注释需要像这样识别它:

@Test
@Parameters(value="number", value2="digit")
public void parameterIntTest(int number, int digit) {
    System.out.println("Parameterized Number is : " + number + " and " + digit);
}

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

相关问题 运行 Selenium Webdriver Test 时不会出现警报 - When running Selenium Webdriver Test no Alert appears 使用jenkins运行硒测试用例时出错 - Error when running selenium test case using jenkins 运行 webdriver.io 测试时出现“错误:未找到:java” - "Error: not found: java" when running webdriver.io test 如何在Linux中运行Selenium WebDriver测试用例项目(在Java中完成) - How to run the selenium webdriver test case project(done in java) into Linux Selenium Webdriver和Eclipse Java登录GMAIL的测试用例 - Test case for Selenium Webdriver and Eclipse java to login GMAIL 当以junit测试用例运行时,为什么黄瓜+硒测试会出错? - Why cucumber+selenium test giving error when running as run as junit test case? 使用 Java 在 safari 浏览器中运行 Selenium Web 驱动程序测试用例时出错? - Getting error while running Selenium web-driver test case in safari browser using Java? 使用GeckoDriver运行Java Selenium WebDriver时,Firefox无法连接 - Firefox Cannot Connect When Running Java Selenium WebDriver With GeckoDriver 使用Selenium Java长时间运行Webdriver时内存增加 - Memory increasing when webdriver running for long time using Selenium java 使用ant / ivy运行构建时出现Selenium远程webdriver错误 - Selenium remote webdriver error when running a build with ant/ivy
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM