2016-03-16 33 views
0

我必須使用Windows上傳對話框上傳文件。我如何使用ruby-rspec來實現它。我是否應該將第三方工具用作AutoIT,或者Ruby是否提供了處理基於Window的對話框的方法。如何處理Windows上傳/下載對話框與Ruby-Rspec

我已經使用這個:

Class Upload 
def upload_File() 
     filename= 'NewFile.xlsx' 
     file = File.join(Dir.pwd, filename) 
    @driver.find_element(:xpath,Upload::LINK_UPLOAD_FILE_XPATH).send_keys(file) 
end 

但它不直接對話工作。它可以工作,如果有一個領域,我可以提供文件的位置直接在網頁本身,但不是在Windows對話框文件選擇。

+0

Ruby沒有。 AutoIT可能是處理文件上傳彈出窗口最穩定的方式,所以沒有理由不使用它。 – Sam

+0

是的,但如何從ruby腳本調用AutoIt腳本。 DEF upload_File_To_Pulse 查找(:CSS,類名:: LINK_UPLOAD_FILE_CSS)。單擊 睡眠5 調用Runtime.getRuntime()EXEC( 「d:/ AutoIt的腳本/ FileUpload.exe」)。 睡眠5 查找(:XPath中,類名:: BTN_PULSE_POST_XPATH)。點擊 } end這是我用過的。但我得到錯誤,如「NoMethodError: 未定義的方法'運行時'爲零:NilClass –

+0

我已經使用它幾年前與此提供AutoIT綁定的gem:https://rubygems.org/gems/au3。看看是否簡化它。 – Sam

回答

0

我找到了解決方案。 IO是處理輸入/輸出文件操作的類。在我的Ruby-Rspec腳本中添加了這段代碼,它工作。

f = IO.popen("D:/AutoIt_Scripts/FileUpload.exe") 
     puts f.readlines 

在AutoIt的文件我寫

ControlFocus("Open","","Edit1") 
ControlSetText("Open","","Edit1","D:\Upl\DemoUpload.xlsx") 
ControlClick("Open","","Button1") 

與.au3延長保存它。