弹出filesearch时,量角器上传卡住了

问题描述 投票:1回答:3

我想弄清楚下面的代码有什么问题:

it('should upload a photo', function(){

        var photo = './photos/et-test.jpeg',
            exactPhoto = path.resolve(__dirname, photo);
        var form = element(by.id('fileupload'));
        var upload = element(by.css('input[type = "file"]'));
        var addFiles = element(by.cssContainingText('.btn.btn-success.fileinput-button.mb-10','Add files...'));
        var uploadBtn = element(by.css('.btn.btn-primary.start.mt-20'));

        element(by.cssContainingText('.inline_link','Upload more album photos now')).click();
        element(by.id('secondary_upload_link')).click();


        browser.wait(EC.visibilityOf(addFiles), 5000);
        addFiles.click();

        upload.sendKeys(exactPhoto);

        browser.wait(EC.visibilityOf(uploadBtn), 5000);
        uploadBtn.click();

        expect(element(by.css('.table')).getText()).toBe('Upload Finised');

    });

我一直卡在filesearch弹出窗口上并收到此错误:

消息:失败:等待5006ms后超时

是否有任何缺乏或应该根据我的代码流程完成的事情?

protractor image-uploading
3个回答
0
投票

如果我正确理解您的问题,您在上传文件时会看到一个弹出窗口。您可以在conf中尝试以下功能(假设您使用的是Chrome)

  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      prefs: {
        download: {
          'prompt_for_download': false,
          'directory_upgrade': true,
          'default_directory': 'src/test/javascript/e2e/downloads'(or where ever you prefer)
        }
      }
    }
  }

0
投票
  1. 是的,你不需要点击它,只需sendKeys()这个input元素
  2. 有时它需要使这个input可见。试试这样(它在我的情况下适用于await / async量角器):

private addAttachment = element(by.css('input[type="file"]'))

await browser.executeScript("arguments[0].style.visibility = 'visible'; arguments[0].style.height = '1px'; arguments[0].style.width = '1px'; arguments[0].style.opacity = 1; arguments[0].style.display = 'inline'; arguments[0].style.overflow = 'visible'", this.addAttachment)

await browser.executeScript("arguments[0].focus();", await this.addAttachment.getWebElement())

await this.addAttachment.sendKeys(path)


0
投票

试试这个:

var photo = './photos/et-test.jpg',
exactPhoto = path.resolve(__dirname, photo);
var form = element(by.id('fileupload')); ///Users/leochardc/ET/photos/et-test.jpg
var upload = element(by.css('.fileupload_section input[type = "file"]'));
var addFiles = element(by.cssContainingText('.btn.btn-success.fileinput-button.mb-10','Add files...'));
var uploadBtn = element(by.css('.btn.btn-primary.start.mt-20'));
var uploadFinished = element(by.css('.fileupload_section .text-center p'));

browser.get(url);
element(by.cssContainingText('.inline_link','Upload more album photos now')).click();
element(by.id('secondary_upload_link')).click();


browser.wait(EC.visibilityOf(addFiles), 5000);
// addFiles.click();

upload.sendKeys(exactPhoto);

var previewPic = element(by.css('.fileupload_section.fileupload_files'));

browser.wait(EC.visibilityOf(previewPic), 5000);

browser.wait(EC.visibilityOf(uploadBtn), 5000);
uploadBtn.click();

browser.wait(EC.visibilityOf(uploadFinished), 30000);

expect(uploadFinished.getText()).toBe('Upload Finished');
© www.soinside.com 2019 - 2024. All rights reserved.