如何在seleniumjava中设计一个逻辑,根据问题在两个不同的路径之间切换

lrl1mhuk  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(265)

我正在尝试用SeleniumJava编写一个逻辑,在这里我正在自动化一个测试流程。在进行这项测试时,测试者可能会在每个节点中得到set-1/set-2,这将由系统随机分配。
每组的问题数量可能会有所不同
答案数据将从excel传递(附excel文档)
有谁能根据情况告诉我在set-1/set-2之间切换的最佳方法吗?抱歉,我还没有编码要共享的内容。我从没处理过这种情况。任何建议都会有帮助。
事先非常感谢。

bakd9h0s

bakd9h0s1#

从excel中获取数据并将其传输到方法
首先,每个数据集应该放在单独的excel表上。

图纸名称:数据集1
列名:column1
它接受列中的所有值(除了列名),然后您可以以任何方式使用它们。在这种情况下,testng将循环测试方法中的数据。
解决方案的第二部分是从excel中获取数据。

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class BaseTestProvider {
        Object[][] dataSupplierBase(String path, String sheetname) throws IOException {

        File file = new File(path); //FILE name
        FileInputStream fis = new FileInputStream(file);

        XSSFWorkbook wb = new XSSFWorkbook(fis);
        XSSFSheet sheet = wb.getSheet(sheetname);//SHEET name
        wb.close();
        int lastRowNum = sheet.getLastRowNum();
        int lastCellNum = sheet.getRow(0).getLastCellNum();
        Object[][] obj = new Object[lastRowNum][1];

        for (int i = 0; i < lastRowNum; i++) {
            Map<Object, Object> datamap = new HashMap<>();
            for (int j = 0; j < lastCellNum; j++) {
                datamap.put(sheet.getRow(0).getCell(j).getStringCellValue(), sheet.getRow(i + 1).getCell(j).getStringCellValue());
            }
            obj[i][0] = datamap;
        }
        return obj;
    }
}

第三部分是testng的数据提供者

public class TestCaseDataProvider extends BaseTestProvider {
    @DataProvider(name = "test1")
    public Object[][] dataSupplier1() throws IOException {
        String sheetname = "Dataset1";
        return dataSupplierBase(“path to excel file”, sheetname);
    }

接下来,使用Map从表和列中获取数据。

@Test(dataProvider = "test1", dataProviderClass = TestCaseDataProvider.class)
public void testMethod(Map<Object, Object> map) {
    System.out.println(String.valueOf(map.get("Column1")));

}

因此,通过手动或编程更改数据提供程序名称,您可以在数据集之间切换。
未解决:以一种速度获取所有列并处理行。

相关问题