繁体   English   中英

重构水豚javascript dropzone测试

[英]refactor capybara javascript dropzone test

我正在尝试多次调用dropzone水豚测试。 但是,当我第二次调用它时,该ID已被使用。 我正在尝试随机化ID,以便它可以运行多次。

def drop_in_dropzone(file_path)
  page.execute_script <<-JS
    fakeFileInput = window.$('<input/>').attr(
      {id: 'fakeFileInput', type:'file'}
    ).appendTo('body');
  JS
  attach_file("fakeFileInput", file_path)
  page.execute_script("var fileList = [fakeFileInput.get(0).files[0]]")
  page.execute_script <<-JS
    var e = jQuery.Event('drop', { dataTransfer : { files : [fakeFileInput.get(0).files[0]] } });
    $('.dropzone')[0].dropzone.listeners[0].events.drop(e);
  JS
end

第二次调用时出错。

Failure/Error: attach_file("fakeFileInput", file_path)

Capybara::Ambiguous:
Ambiguous match, found 2 elements matching file field "fakeFileInput"

您绝对可以为输入生成一个随机的ID号,但仅创建一个不存在的falseFileInput可能会更容易。 仅当您不将输入用于此方法以外的任何其他目的时,此方法才起作用,但是看来您正在这样做。

page.execute_script <<-JS
  fakeFileInput = fakeFileInput || window.$('<input/>').attr(
    {id: '#{fake_input_id}', type:'file'}
  ).appendTo('body');
JS

如果已经存在,将不会再次创建它,而只会被重用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM