使用量角器测试上传文件失败

时间:2016-04-07 13:13:35

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

我正在寻找使用量角器测试上传文件。

理想情景:

  1. 在表单上,​​首先用户应点击“上传文件”按钮
  2. 接下来会出现一个窗口,搜索文件
  3. 最后,选择了该文件。
  4. 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"])
    

    非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

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

这就是我在申请中使用的内容。

答案 1 :(得分:0)

var path = require('path');
        var fileToUpload = '../desktop/test.txt';
        var absolutePath = path.resolve('__dirname', fileToUpload);
        $('input[type="file"]').sendKeys(absolutePath);
        browser.driver.sleep(100);