2016-07-26 46 views
3

我的系統中的文件:問題上傳使用的是,file_field中的Watir

的Windows 10專業版64位

紅寶石2.1.9p490(2016年3月30日修訂54437)[64-的mingw32]

火狐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

激活Submit按鈕的代碼可能不會偵聽對文件字段的更改。該按鈕可能在處理掉落文件的代碼中激活,在這種情況下,您必須找到並手動觸發該按鈕。 –

+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

您應該使用wait而不是假設你使用Watir-Webdriver 0.9.1或更高版本,你可以使用'when_enabled' - 例如'submit_button.when_enabled.click'。 –