Techioz Blog

Ruby / Seleniumを使用したファイルのアップロード

概要

私はボタン (写真の選択) をクリックしてファイルアップロード (エクスプローラー) ボックスを開くスクリプトを作成しています。ファイル名を設定するにはどうすればよいですか?

これは、「写真を選択」ボタンをクリックするために使用しているコードです(ルビー)

driver.find_element(:id, "fileUploadButton").click

ボタンをクリックする必要はなく、アップロードしたいファイル/画像へのパスを送信する必要があるという投稿をいくつか見たことがあります。では、c: emp.jpg にファイルをアップロードするにはどうすればよいでしょうか?

これが私の完全かつ単純なコードです。

driver.navigate.to "http://blah blah"  #the real site is an internal site
driver.find_element(:id, "claimGiftButtonDesktop").click
sleep 5
driver.find_element(:id, "fileUploadButton").click

fileUploadButton をクリックすると、エクスプローラー ウィンドウが表示されます。 [開く] を手動でクリックするかダブルクリックすると、読み込みモーダルが表示され、Web サイトに画像が表示されます。

これは動作するIDEの記録です。これをルビに変換するのに問題があります。

open /PromoSite
click id=claimGiftButtonDesktop
click id=fileUploadButton
type  id=fileInputElem     #Value C:\\temp\\file.jpg
click id=viewProductPreviewButton

スクリーンショットも追加しました。ボタンをクリックすると、ファイルのアップロードが表示されます。これは簡単なことなので、正しい ID に注目してはいけません。

解決策

コードがないので、https://encodable.com/uploaddemo/ をテストしていると仮定します。

@driver.navigate.to "https://encodable.com/uploaddemo/"
element = @driver.find_element(:css, 'input[type=file]')
element.send_keys   "/full/path/to/file.jpg"
@driver.find_element(:css, 'input[type=button]').click

したがって、入力フィールドにフルパスを送信して「送信」ボタンを押す必要があります。