当前位置: 首页 > 知识库问答 >
问题:

我试图从excel表中获取数据,并将这些测试数据传递到登录密码字段中,但我得到以下错误

孔鸿哲
2023-03-14

失败:cptoadsLogin org.testng.testng异常:数据提供程序试图传递2个参数,但方法com.toadslogin在org.testng.internal.invoker.injectParameters(invoker.java:1225)在org.testng.internal.invoker.invoketestMethods(invoker.java:1118)在org.testng.internal.testmethodworker.invoketestMethods(testmethodworker.java:125)在org.testng.internal.testmethodworker.runng.runsuiteslocal(testng.java:1140)在org.testng.testng.run(testng.java:1048)在org.testng.remote.abstractremoteTestng.run(abstractremoteTestng.java:132)在org.testng.remoteTestng.initandrun(remoteTestng.java:236)在org.testng.remoteTestng.main(remoteTestng.java:81)

页面对象:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;

public class ToadsLogin {

    @FindBy(how=How.XPATH,using="//input[@id='Username']")
    WebElement username;

    @FindBy(how=How.XPATH,using="//input[@id='Password']")
    WebElement password;

    @FindBy(how=How.XPATH,using="//button")
    WebElement loginbtn;

    public ToadsLogin(WebDriver driver)
    {
        PageFactory.initElements(driver, this);
    }

    public void unpwd(String un,String pwd)
    {
        username.sendKeys("un");
        password.sendKeys("pwd");
    }

    public void clikonLogin()
    {
        loginbtn.click();
    }
}

TestNG脚本:

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

import com.toads.PoM.ToadsLogin;
import com.toads.lib.ExcelDataConfig;

public class LoginDemo extends SuperTestNG {

    @Test(dataProvider="toadsLogin")
    public void cptoadsLogin() throws Exception
    {
        ToadsLogin tlogin=new ToadsLogin(driver);
        tlogin.unpwd("un", "pwd");
        tlogin.clikonLogin();
        Thread.sleep(5000);
        driver.close();
    }


    @DataProvider(name="toadsLogin")
    public Object[][] cpToadsLogin()
    {
        ExcelDataConfig config=new ExcelDataConfig("D:\\login.xlsx");
        int rows=config.getRowCount(0);


        Object[][] data1= new Object[rows][2];
        for(int i=0;i<rows;i++)
        {
            data1[i][0]=config.getData(0, i, 0);
            data1[i][1]=config.getData(0, i, 1);

        }
        return data1;
    }

}

共有1个答案

周飞
2023-03-14

DataProvider需要方法CPToAdslogin来获取参数。

数据提供程序试图传递%2个参数,但方法cptoadsLogin接受%0

您需要将方法签名更改为接收2个参数

@Test(dataProvider = "toadsLogin")
public void cptoadsLogin(String user, String pwd) throws Exception
{
    ToadsLogin tlogin=new ToadsLogin(driver);
    tlogin.unpwd(user, pwd);
    tlogin.clikonLogin();
    Thread.sleep(5000);
    driver.close();
}
 类似资料: