【问题标题】:How to upload csv file through Protractor如何通过量角器上传 csv 文件
【发布时间】:2019-10-07 11:06:13
【问题描述】:

我正在自动化一个场景,需要上传一个 CSV 文件并在上传文件后验证结果。

应用代码如下:

var assetBulkInUploadJson = "./src/resources/scm-test-data/evin/asserts/create-assets-bulk-upload.csv";

var path = require('path');
var assetsTestData = require(path.resolve(assetBulkInUploadJson));
var chooseFileButton= element(by.css("input[file-model='fileData']"));

//send the file address to choose file
chooseFileButton.sendKeys(assetsTestData);

我一直在上传 CSV 文件,出现以下错误

  E/launcher - Error: /Users/Sarada/IdeaProjects/scm-ui-automation/src/resources/scm-test-data/evin/asserts/create-assets-bulk-upload.csv:1 (function (exports, require, module, __filename, __dirname) { //data in csv file displayed

SyntaxError: Unexpected identifier
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:657:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)

如果我将绝对路径直接传递给 sendKeys() 它工作正常。

chooseFileButton.sendKeys("/Users/Sarada/IdeaProjects/scm-ui-automation/src/resources/scm-test-data/evin/asserts/create-assets-bulk-upload.csv");

如何解决这个问题,如何将相对路径转换为绝对路径并作为变量参数发送?请帮帮我。

【问题讨论】:

    标签: protractor


    【解决方案1】:

    试试这个

    var assetsTestData = (file) => (path.resolve(__dirname, `${file}`));
    

    然后

    chooseFileButton.sendKeys(assetsTestData(assetBulkInUploadJson);

    【讨论】:

    • 嗨华金,感谢您的回复。 assetsTestData = (file) => (path.resolve(__dirname, ${file})); 这行代码给出了当前目录名,但是在我的代码中我需要项目主目录名,有什么办法可以得到它吗?那么上面的代码就可以工作了
    • 谢谢,我得到了解决方案,如果我删除 '__dirname' 参数就可以了。
    【解决方案2】:

    您不需要require您的文件,只需指定路径并将其发送到输入

    var assetBulkInUploadJson = "./src/resources/scm-test-data/evin/asserts/create-assets-bulk-upload.csv";
    
    var path = require('path');
    var assetsTestData = path.resolve(__dirname, assetBulkInUploadJson);
    var chooseFileButton= element(by.css("input[file-model='fileData']"));
    
    //send the file address to choose file
    chooseFileButton.sendKeys(assetsTestData);
    

    【讨论】:

    • 谢谢,如果我直接使用 '__dirname' 将调用的函数路径添加到实际的 json 路径中,如果我删除 '__dirname' 就可以了。
    【解决方案3】:

    解决问题的两种方法

    解决方案 1:

    var assetBulkInUploadJson = "./src/resources/scm-test-data/evin/asserts/create-assets-bulk-upload.csv";
    
    var path = require('path');
    var assetsTestData = path.resolve(assetBulkInUploadJson);
    var chooseFileButton= element(by.css("input[file-model='fileData']"));
    
    //send the file address to choose file
    chooseFileButton.sendKeys(assetsTestData);
    

    解决方案 2:

    var assetBulkInUploadJson = "./src/resources/scm-test-data/evin/asserts/create-assets-bulk-upload.csv";
    
    var path = require('path');
    var assetsTestData = (file) => (path.resolve(`${file}`));
    var chooseFileButton= element(by.css("input[file-model='fileData']"));
    
    //send the file address to choose file
    chooseFileButton.sendKeys(assetsTestData(assetBulkInUploadJson));
    

    感谢@Sergey 和@Joaquin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-17
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 2017-10-25
      相关资源
      最近更新 更多