【问题标题】:Uploading a file using Protractor testing Failed使用量角器测试上传文件失败
【发布时间】:2016-07-28 09:38:45
【问题描述】:

我正在寻找使用 Protractor 测试上传文件。

理想场景:

  1. 在表单上,​​用户首先应该点击“上传文件”按钮
  2. 接下来会出现一个窗口,他们可以在其中搜索文件
  3. 最后,文件被选中。

createJobTest.js

    it('should click upload file button', function() {
        createJobPage.step5UploadFile.click().then(function(){
            browser.waitForAngular();
            });
        });
    })


    var path = require('path');

    it('should upload a file', function() {
      var fileToUpload = '../desktop/test.txt',
          absolutePath = path.resolve(__dirname, fileToUpload);

      $('input[type="file"]').sendKeys(absolutePath);    
      $('#uploadButton').click();
    });

createJobPage.js

this.step5UploadFile = element(by.id('step5--upload-file'));

createJob.html

<span class="btn btn-blue-one btn-upload" id="step5--upload-file" flow-btn translate="uploadfile"></span>

上传文件窗口打开,但出现此错误:

Failed: No element found using locator: By(css selector, input[type="file"])

非常感谢任何帮助!

【问题讨论】:

  • @KCaradonna 感谢您的评论,尝试过但仍然遇到相同的错误:(
  • 当您使用量角器上传文件时,您无需点击上传文件按钮。您正在将要上传的文件的 absolutePath 直接发送到文件上传元素,并且您已经在代码中正确完成了该操作。我的猜测是您尝试将文件发送到的元素不再可见,因为它隐藏在上传文件对话框下方。您可以通过删除第一个“it”块和 $('#uploadButton').click(); 来解决这个问题。在你上面的代码中。让我知道这是否有帮助,我可以将其作为答案提交。

标签: angularjs testing file-upload protractor angularjs-e2e


【解决方案1】:

一种方法是发送密钥。

        var fileToUpload =filepath;
        var absolutePath = path.resolve(__dirname, fileToUpload); // absolute path
        var fileElement = element(by.css('input[type="file"]'));
        browser.executeScript("arguments[0].style.visibility = 'visible'; ", fileElement.getWebElement());
        fileElement.sendKeys(absolutePath);

另一种方法是在桌面窗口上操作。这是主要功能。您可以参考我已经回答的以下链接中的答案。

File upload using autoit

这是我在我的应用程序中使用的。

【讨论】:

    【解决方案2】:
    var path = require('path');
            var fileToUpload = '../desktop/test.txt';
            var absolutePath = path.resolve('__dirname', fileToUpload);
            $('input[type="file"]').sendKeys(absolutePath);
            browser.driver.sleep(100);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 2018-07-27
      • 2017-01-02
      相关资源
      最近更新 更多