Module: Capybara::Node::Actions

Defined in:
lib/dropybara.rb

Instance Method Summary collapse

Instance Method Details

#drop_file(locator, *args) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/dropybara.rb', line 10

def drop_file(locator, *args)
  element_id = "dropybara_input_#{rand(1000)}"

  driver.execute_script "    var input = document.createElement('input');\n    input.setAttribute('type', 'file');\n    input.setAttribute('id', '\#{element_id}')\n    document.body.appendChild(input);\n  JS\n\n  attach_file(element_id, *args).tap do\n    driver.execute_script <<-JS\n      var input = document.getElementById('\#{element_id}');\n      var target = document.querySelector('\#{locator}');\n      var data = new DataTransfer();\n      data.files = input.files;\n      data.items.add(input.files[0]);\n      data.types = ['Files'];\n\n      var event = new DragEvent('drop', {\n        target: target,\n        dataTransfer: data\n      });\n      target.dispatchEvent(event);\n\n      document.body.removeChild(input);\n    JS\n  end\nend\n"