如何从Excel文件传递数据并将其用作参数

时间:2019-05-23 14:14:14

标签: javascript protractor

我正在尝试从excel文件中的单元格获取值,并将其作为参数传递给我的方法之一

如果我只是硬编码参数并将其移到site_num的{​​{1}}之外,我就可以输入.then(function) 例如readFile

export_page.enterSiteId('20003');

它说找不到找到 base_page.clickExportLink(); //Clicking the export link var workbook = new Excel.Workbook(); workbook.xlsx.readFile('D:\\Project1\\testdata\\Book1.xlsx').then(function () { var worksheet1 = workbook.getWorksheet('Sheet2'); var Row = worksheet1.getRow(1); site_num = Row.getCell(2).value; export_page.enterSiteId(site_num); //here is the problem where, it wont enter the value console.log(site_num); //i am able to print the value var worksheet2 = workbook.getWorksheet('Sheet1'); for (var i = 2; i < worksheet2.rowCount; i++) { var Row = worksheet2.getRow(i); site_field = Row.getCell(1).value; cust_field = Row.getCell(2).value; status = Row.getCell(3).value; template.customField(cust_field); } }); export_page.clickSearchBtn(); //Click the search button after the site_num is entered 的定位器。

1 个答案:

答案 0 :(得分:0)

我的猜测是您的“工作簿”库正在执行的操作是异步的,因此请尝试

workbook.xlsx.readFile('D:\\Project1\\testdata\\Book1.xlsx').then(async function () {

    var worksheet1 = await workbook.getWorksheet('Sheet2');
    var Row = await worksheet1.getRow(1);
    site_num = await Row.getCell(2).value;
    await export_page.enterSiteId(site_num);
    console.log(site_num);

    var worksheet2 = await workbook.getWorksheet('Sheet1');
    for (var i = 2; i < worksheet2.rowCount; i++) {

        var Row = await worksheet2.getRow(i);
        site_field = await Row.getCell(1).value;
        cust_field = await Row.getCell(2).value;
        status = await Row.getCell(3).value;

        await template.customField(cust_field);
    }
});

export_page.clickSearchBtn();  //Click the search button after the site_num is entered