問題
Capybara(selenium)などでテストをしている時に、ファイルアップロードなどでブラウザネイティブのダイアログが開く時がある。
seleniumでは調べてみた限りJavascriptで表示されるようなalert
confirm
ダイアログの操作はできるが、ブラウザネイティブで表示されるダイアログはどうにも出来ない様子
解決方法
ダイアログが開いた状態でブラウザ自体にescape
キーが送れれば良いのでOSXの場合はAppleScriptを使う。
dialog_escape.script
# activate application "Google Chrome" chromeの場合はこっち
activate application "Firefox"
tell application "System Events"
key code 53
end tell
特定のアプリケーションをフォーカスして、escape
キーを送っているだけ
上記のファイルを保存してruby
などから以下のように実行
system("osascript /path/to/dialog_escape.script")