首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在selenium中设计逻辑,根据问题在两个不同的路径之间切换

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

Stack Overflow用户
提问于 2020-09-04 13:21:54
回答 1查看 68关注 0票数 0

我正在尝试用selenium编写一个逻辑,在那里我正在自动化一个测试接受流。在进行此测试时,考生可能在每个节点中得到设置-1/set-2,这将由系统随机分配。

  1. 每组中的问题数可能不同
  2. 答案数据将从excel(Excel附件)

中传递

有谁能让我知道根据情况在set-1/SE-2之间切换的最佳方法吗?对不起,我还没有编码任何东西要分享。我从来没有处理过这种情况。任何建议都会有帮助。

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2020-09-04 16:19:03

从excel获取数据并将其传输到方法

首先,每个数据集应该放在单独的excel表上。

工作表名称: Dataset1

列名: Column1

它接受列中的所有值(列名除外),然后可以以任何方式使用它们。在这种情况下,TestNG将在测试方法中循环数据。

解决方案的第二部分是从excel中获取数据。

代码语言:javascript
复制
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的数据提供者。

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

接下来,使用映射从工作表和列获取数据。

代码语言:javascript
复制
@Test(dataProvider = "test1", dataProviderClass = TestCaseDataProvider.class)
public void testMethod(Map<Object, Object> map) {
    System.out.println(String.valueOf(map.get("Column1")));
    
}

因此,通过手动或编程方式更改数据提供程序名称,您可以在数据集之间切换。

未解决:以一种速度获取所有列并对行进行操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63742054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档