2016-07-26 9 views
3

Моя система:Проблемы с загрузкой файла с помощью file_field в Watir

для Windows 10 Pro 64-битный

рубин 2.1.9p490 (2016-03-30 редакция 54437) [64-mingw32]

FireFox 47.0.1

Для начала, вот код, который я имею дело с:

<div class="dz-style col-sm-7" is="null"> 
    <div is="null">You can drag and drop your supporting document files here, or click to select files to upload.</div> 
    <input style="display: none;" multiple="" is="null" type="file"></div> 

Вот мой код тестирования Watir: Определить и подтвердить файл является действительным

local_file = '/Users/tom.feodoroff/Desktop/Charlie_Snoopy.jpg' 

File.exists? local_file 

raise "error" unless File.exists? local_file 

Измените стиль отображения, так что я могу взаимодействовать с управлением

element = BROWSER.input(:type => 'file') 

puts element.attribute_value('style') #display: none; 

script = "return arguments[0].style = 'display: inline'" 

BROWSER.execute_script(script, element) 

puts element.attribute_value('style') #display: inline; 

Используйте предложенный синтаксис, чтобы добавить файл приложения

BROWSER.file_field(:type => 'file').set(local_file) 

Это не вызывает ошибок, также не прикрепляет файл, чтобы моя кнопка «Отправить» активировалась. Нужна ли мне другая версия Ruby (Watir), чтобы сделать эту работу, или есть что-то, что мне не хватает?

+0

Попробуйте указать букву диска в 'local_file' (например, C :) – orde

+1

Код, который активирует кнопку« Отправить », может не прослушивать изменения в поле файла. Кнопка, вероятно, активируется в коде, который обрабатывает упавший файл, и в этом случае вам придется искать и вручную запускать это. –

+0

Спасибо @orde, я добавил диск к имени файла: irb (main): 001: 0> local_file = 'C: /Users/tom.feodoroff/Desktop/Charlie_Snoopy.jpg' => "C:/Users /tom.feodoroff/Desktop/Charlie_Snoopy.jpg " irb (main): 002: 0> File.exists? local_file => true , но это не помогло решить мою проблему :( –

ответ

1

Я не понимаю, почему, но я добавил сон (5) непосредственно перед нажатием кнопки отправки, и теперь он работает. Значок «Мой файл» теперь отображается на странице, и кнопка «Отправить» активна и успешно отправляет форму. Вещи, которые заставляют вас идти «хмммм» :) Спасибо за ответы. Надеюсь, это поможет кому-то еще с этой проблемой?

+3

Вероятно, вы должны использовать ожидание вместо 'sleep'. Предполагая, что вы находитесь на Watir-Webdriver 0.9.1 или новее, вы можете использовать' when_enabled' - например 'submit_button.when_enabled.click'. –