2009-04-01 2 views
1

Ruby Seleniumの自動スクリプトで、ファイル参照ダイアログからファイルを選択する(つまり、自分のPCからファイルをアップロードする)方法を教えてください。欄を参照

+0

具体的にしてください – belgariontheking

+0

ええ、私はあなたが何を求めているのか分かりません。 HTMLフォームのファイル入力フィールドのファイルを選択するためにクライアント側のスクリプトを実行しますか?ユーザー入力なしでHTTP経由で何かをアップロードしようとしていますか? – Welbog

+0

エイプリルフール! *コーニッシュボタンを複数回押す* – TheTXI

答えて

2

私は以前この問題に遭遇したと思います。

Rubyでセレンスクリプトを書くと、ブラウザのすべてのウィンドウを制御できます。しかし、ファイル選択ダイアログとファイルダウンロードダイアログは実際にはシステムウィンドウなので、セレンを使ってそれらを制御することはできません。

ただし、Windowsで実行されているテストでは、Win32OLE gem経由で制御できます。もちろん、MacやLinuxでこれらのテストを実行することはできません。

一般的にセレンのように、それは一種のハッキーです。あなたは限り、あなたは1とSelenium RCのを実行しているとして、これを行うことができます

require 'selenium' 
require 'test/unit' 
require 'win32ole' 

class DownloadFileTest < Test::Unit::TestCase 
    def setup() 
    @wsh = WIN32OLE.new('Wscript.Shell') 
    end 
    def teardown 
    WIN32OLE.ole_free(@wsh) # yes, this is required *rolls eyes* 
    end 
    def test_download_file 
    # ...stuff that causes a download window to pop up... 
    @wsh.AppActivate("Opening") 
    sleep(2) 
    @wsh.SendKeys("{RIGHT}{ENTER}") # Hits ok button - file downloads 
    sleep(3) 
    # Use regular Ruby File methods to assert stuff on the file content 
    end 
0

私はすべてのOLEのものをスキップし、単にフィールドへのパスを入力します:)

:しかし、ここでどのように動作するのです特権モードのあなたが最新の1.0ベータ2を使用している場合、これらはデフォルトで使用されます。