Sha256: a80379331b5f124264fd40e951e447520302af0ddb66a7b54a4131ca222be411

Contents?: true

Size: 1.74 KB

Versions: 128

Compression:

Stored size: 1.74 KB

Contents

module TestCentricity
  class FileField < UIElement
    def initialize(name, parent, locator, context)
      super
      @type = :filefield
    end

    def file_attach(file_path)
      Capybara.ignore_hidden_elements = false
      page.attach_file(@locator, file_path)
      Capybara.ignore_hidden_elements = true
    end

    def file_upload(file_path)
      obj, = find_element(false)
      obj.send_keys(file_path)
    end

    def drop_files(files)
      js_script = 'fileList = Array();'
      files.count.times do |i|
        # generate a fake input selector
        page.execute_script("if ($('#seleniumUpload#{i}').length == 0) { seleniumUpload#{i} = window.$('<input/>').attr({id: 'seleniumUpload#{i}', type:'file'}).appendTo('body'); }")
        # attach file to the fake input selector through Capybara
        attach_file("seleniumUpload#{i}", files[i])
        # create the fake js event
        js_script = "#{js_script} fileList.push(seleniumUpload#{i}.get(0).files[0]);"
      end
      # trigger the fake drop event
      page.execute_script("#{js_script} e = $.Event('drop'); e.originalEvent = {dataTransfer : { files : fileList } }; $('#{@locator}').trigger(e);")
    end

    def ng_drop_file(file_path)
      # generate a fake input selector
      page.execute_script("fakeFileInput = window.$('<input/>').attr({ id: 'fileFileInput', type: 'file' }).appendTo('body');")
      # attach file to the fake input selector through Capybara
      page.attach_file('fakeFileInput', file_path)
      # create the fake js event
      js_script = "var scope = angular.element('#{@locator}').scope();"
      js_script = "#{js_script} scope.files = [fakeFileInput.get(0).files[0]];"
      # trigger the fake drop event
      page.execute_script(js_script)
    end
  end
end

Version data entries

128 entries across 128 versions & 2 rubygems

Version Path
testcentricity_web-3.3.0 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.25 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.24 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.23 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.22 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.21 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.20 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.19 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.18 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.17 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.16 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.15 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.14 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.13 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.12 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.11 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.10 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.9 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.8 lib/testcentricity_web/web_elements/file_field.rb
testcentricity_web-3.2.7 lib/testcentricity_web/web_elements/file_field.rb