seleniumでファイルの添付をしたい場合は、seleniumのメソッドを使うしかない

フォームに値をセットしたり、クリックイベントを発火させるだけなら、前回の記事で紹介したRPAクローラー構築時にSeleniumでよく使うJavaScriptチートシート処理で問題ないが、ファイルの添付だけは、selenium側のメソッドを使わなければならないので紹介する。

  • seleniumのメソッドを利用する<-今回はこっち
  • JavaScriptを実行させる

基本事項

クリックする

では早速クリックを行ってみましょう。(seleniumの起動方法に関しては割愛します)

#サンプルのサイトに移動
driver.navigate.to 'https://rootersample.web.fc2.com/'
#クリックイベントの実行部分
driver.find_elements(:css, '.container li a')[0].click

テキストボックスに値を入力する

次にyahooの検索エンジンのテキストボックスに値を入れてみましょう。

#yahooのサイトに移動
driver.navigate.to 'https://www.yahoo.co.jp/'
#検索ボックスに値を入力
driver.find_elements(:css, '#srchtxt')[0].send_keys 'スクレイピング'

このように入力されると思います。

チェックボックス/ラジオボックス/セレクトボックスを入力する

次にアンケートフォームに値を入れてみましょう。

#サンプルアンケートサイトに移動
driver.navigate.to 'https://craf-arc.co.jp/service/management/form/sample2'
#チェックボックスをチェック
driver.find_elements(:css, '.mwform-checkbox-field input')[0].click
#ラジオボタンを入力
driver.find_elements(:css, '.mwform-radio-field input')[0].click
#セレクトボックスを入力
select = Selenium::WebDriver::Support::Select.new(driver.find_elements(:css, '.budget')[0])
select.select_by(:value, '学生')

このように入力されると思います。

【重要】ファイルを添付する

最後にファイルの添付を行ってみましょう。

#サンプルアンケートサイトに移動
driver.navigate.to 'https://questant.jp/q/Add_Images#page1'
sleep 1
#画像ファイルを添付
driver.find_elements(:css, '.photoupload')[0].send_keys "画像ファイルの絶対パス"

以下のようにファイルの添付が行われます。

JSを使ったり、seleniumのメソッドを使ったりするのが気持ち悪いという方は、seleniumで統一するのも良いでしょう。

さいごに

また弊社では上記の技術を駆使した、ホワイトカラーの業務自動化に貢献するRPA用のスマートボット開発サービスがございます。何かロボットの自動操縦などでお困りの際にはぜひお問い合わせください!