Protractor上传Zip文件

Protractor Zip file uploading

本文关键字:文件 Zip 上传 Protractor      更新时间:2023-09-26

我一直在制作一个量角器脚本来上传文件。

function upload(params) {
   return _waitForElm(params.xpath)
      .then(() => {
          var absPath = path.resolve(__dirname, '../../../assets/' + params.filePath.match(/[^'''/]+$/)[0]);
          return $(params.xpath).sendKeys(absPath);
      }).catch(err => {
          console.error(jasmine.getEnv().currentSpec.description, 'Upload file', params.xpath);
          throw err;
      });
}

参数。xpath实际上是一个有效的CSS选择器(旧变量名)。

/**
* Wait for an element to be present and scroll to it if not displayed.
*
* @param xpath
* @returns {Promise<U>|IPromise<U>}
*/
function waitForElm(xpath) {
  return browser.wait(() => {
    return element.all(by.css(xpath)).then(items => {
        return items.length > 0;
    });
}, 10000)
    .then(() => {
        return $(xpath).isDisplayed().then(isDisplayed => {
            if (!isDisplayed) {
                return _scrollToElm(xpath);
            }
        });
    });
}
/**
* Scroll to the element in the page.
*
* @param xpath
* @returns {Promise<U>|IPromise<U>}
* @private
*/
function _scrollToElm(xpath) {
   let elm = $(xpath);
   return browser.executeScript('arguments[0].scrollIntoView();', elm.getWebElement());
}

上传功能完美地为我的其他文件(jpg, png和PDF),但不上传zip文件,失败时不会抛出任何异常。此外,输入文件接受zip文件,因为我可以手动执行。

如果你遇到类似的问题,我很乐意得到任何建议。

你的代码看起来是正确的,我刚刚检查了上传一个ZIP文件,部分重用你的代码,它看起来很好。

    var filePath = 'documents.zip';
    var absPath = path.resolve(__dirname, '../Resources/' + filePath.match(/[^'''/]+$/)[0]);
    console.log(absPath); // C:'Users'<<user>>'Project'abc'Resources'documents.zip
    filespage.upload(absPath);

很抱歉回复晚了,问题在量角器上。