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

带有Dataprovider的Selenium webdriver使用null参数运行每个测试

暨弘毅
2023-03-14

我使用selenium、TestNG和dataprovider创建了一些测试。每次运行测试时,都会执行两次测试,一次使用参数,第二次使用null参数,请在此处输入图像描述

请找到截图以供参考

请让我知道如何解决这个问题。

感谢您的帮助!!

代码:公共类AppTest\u BlankOrder扩展了ReplaceBaseclass{

CreatePageLocator pf;

public AppTest_Blankrder()
{}


/* Below code is used to open the browser....*/
@BeforeTest
public void testSetup() {


    System.setProperty("webdriver.chrome.driver", "./testdata/chromedriver.exe");
    driver= new ChromeDriver();

     driver.manage().timeouts().implicitlyWait(500, TimeUnit.SECONDS);
     driver.get("http://loginapp.group/");


}

    @Test(dataProvider="WosLoginData",dataProviderClass=CreateProvider.class,priority = 1)
    public void WOSLogintest(String user,String password)
    { 

        System.out.println("Open Logintest method and pass data");


        // -----page factory code---
    CreatePageLocator pf= new CreatePageLocator(driver);

        pf.setUserName(user);

        pf.setPassword(password);

        pf.clickLogin();

    }

//---- 数据提供者代码----

public class CreatePageProvider {
@DataProvider(name="WosLoginData")
public Object [][] getLoginData(Method name)
{
    Object [][] data=null;
    /
    ExcelDataConfig config=new com.ExcelDataConfig("./testdata/InputData.xlsx");
    int rows=config.getRowCount(0);

                data=new  Object[rows][2];

    for(int i=1; i<rows; i++)
    {
        data[i][0]=config.getData(0, i, 0);
        data[i][1]=config.getData(0, i, 1);



    }


enter code here
    return data;
}

共有1个答案

谷梁子濯
2023-03-14

dataprovider中for循环的计数器应该从0开始。这就是使数据[][]的第一个元素具有空值的原因。

 类似资料:
  • 我目前正在使用testng selenium来自动化我的测试,我有以下场景: 我需要从excel文件中读取数据,转换对象中的每一行,并为每一行运行一个测试。我试图使用annotation@DataProvider返回一个对象数组,但是它只能返回迭代器和对象[]。是否有任何变通方法可用于从数据提供程序返回客户机对象数组?我尝试了以下代码,但它只打印来自Client2的数据: 编辑1:客户类别: 在控

  • 设置: 我有一门考试课。 这个测试类有几个带有注释的方法。 数据中有7条记录(行)。 所有测试都是顺序的 问题: 我需要用一行数据运行所有方法(测试),但到目前为止,它会在所有行上重复相同的测试,即如果有7行数据,那么测试1将运行7次,然后第二次测试将开始,第二次测试也会如此,以此类推。 我希望对第1行运行所有测试,然后对第2行再次运行所有测试。 我正在使用ApachePOIAPI从ms exce

  • 争论严格适用于每个国家。 我不想为所有国家复制粘贴这个场景,我想知道我是否可以有功能/支持文件,这样我就可以取代“巴西”参数,以获得更动态的东西。 也许所有测试都像cucumber一样运行--参数“巴西”

  • 问题内容: 我想使用TestNG以特定顺序运行Selenium WebDriver(Java)测试类。 例如。我有3个类,例如Test1,Test2和Test3。我要按Test2,Test1和Test3的顺序运行。是否可以不分组? 我尝试了以下方式,但是我以其自己的顺序(字母顺序)运行。 还有其他方法吗?如果没有分组,这可能吗? 问题答案: 只需使用 preserve-order =“ true”

  • 我使用testNg用于使用java的自动化,我使用从excel获取数据并作为参数传递给测试脚本。 假设我在中有10行数据,我的测试用例将按顺序执行10次,但现在我想并行运行这10个测试,同时使用线程。 这能做到吗?如果是的话,有人能给我一个同样的例子吗?

  • 我有一系列TestNG测试,它们使用数据提供者作为一系列参数运行。 我的跑步者看起来像这样: 假设我从Dataprovider获得了两个参数(param1和param2),测试将按以下顺序执行: 有没有办法让它每个参数运行所有测试用例。i、 e.执行应如下所示: test1与param1 test2与param1 test1与param2 test2与param2