2014-12-18 2 views
4

Я пытаюсь автоматизировать процесс выбора локального файла с HTML-страницы с помощью Watir-WebDriverВыбор локальных файлов с помощью Watir-WebDriver

я следующий HTML

<body> 
<form method="post" action="upload" enctype="multipart/form-data"> 
test file to upload: <input type="file" name="file" size="60" id="test"/> 
<input type="submit" value="Upload" name="upload" id="upload" /> 
</form> 
</body> 

Я пытаясь щелкнуть ввод с помощью idtest и установить путь к локальному файлу, который я хочу загрузить с помощью watir-webdriver.

можно использовать следующие нажать на кнопку, чтобы открыть окно выбора с помощью

@browser.goto 'http://www.test.com' 
@browser.button(:id => 'test').click 

однако, я пытаюсь использовать следующее (из исследования, это, кажется, правильный путь. Не работает, хотя)

@browser.file_field(:name => 'file').set("C:\\path\\to\\test\\file\\validTest.xml") 

что приводит к следующей ошибке

Watir::Exception::UnknownObjectException: unable to locate element, using {:name=>"file", :tag_name=>"input", :type=>"file"} 

Tryin г

@browser.button(:id => 'test').set("C:\\path\\to\\test\\file\\validTest.xml") 

приводит к следующей ошибке

NoMethodError: undefined method `set' for #<Watir::Button:0x3859920> 

Может кто-нибудь помочь? Я пытаюсь понять, почему опция file_field не работает.

+1

Если вы получаете 'UnknownObjectException', то попробуйте' @ browser.file_field (: имя => 'файл') существует '.?. Если 'false', то возможно, что элемент не может быть локализуем (например, в фрейме, загружаем асинхронно и т. Д.). И класс '' Button' (http://www.rubydoc.info/gems/watir-webdriver/Watir/Button) не имеет метода '.set', так что ошибка является законной. – orde

ответ

4

Попробуйте использовать следующую функцию:

@browser.file_field(:id,"upload").set("filepath") 

Кроме того, если вы используете IE браузер, то убедитесь, что вы используете IEDriverServer_Win32_2.33.0, как это прекрасно работает на этом драйвер не на последнем.

1

Попробуйте это:

@browser.file_field(:id => 'test').set("C:\\path\\to\\test\\file\\validTest.xml") 
+0

возвращает 'Watir :: Exception :: UnknownObjectException: не удается найти элемент, используя {: id =>" test ",: tag_name =>" input ",: type =>" file "}' – user3927287

+0

@ user3927287, ok, try это также '@ browser.element (: xpath => '// input [@ type =" File "]')' –

+0

возвращает 'NoMethodError: undefined method" set "для # ' – user3927287

0

Попробуйте использовать это как в последнем случае IEDriver. правопреемником путь к файлу переменной, а затем установить его

filepath = "C:\\path\\to\\test\\file\\validTest.xml" 
@browser.file_field(:id,"upload").set(filepath) 
+1

хорошо отформатируйте свой ответ – Gahan