angularjs - 使用 Protractor 测试上传文件失败

标签 angularjs testing file-upload protractor angularjs-e2e

我正在寻找使用 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();
    });

创建作业页面.js

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

创建作业.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"])

非常感谢任何帮助!

最佳答案

一种方法是发送 key 。

        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

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

关于angularjs - 使用 Protractor 测试上传文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477317/

相关文章:

javascript - 如何在主干中实现 Angular 样式指令?

unit-testing - 测试在主模块 .run 方法中运行的 AngularJS 代码

Windows 语言包与本地化版本

javascript - angularjs - 如何在不使用 getElementById 的情况下获取输入标签中的文件属性

java - Spring MVC 文件上传 - 仅在 IE 中 - 异步 IO 操作失败(1),原因 : RC: 10053

html - 在 angularjs 中路由时,CSS 未加载到其他 View 中

javascript - ng 点击 Bootstrap Modal 组件

c# - 在 .NET 2.0 中实现 BDD/TDD 的最佳方式是什么?

javascript - 我想将 cmd 输出写入文件而不是 stdout

javascript - 浏览器上传文件的问题