Firefox で input type="file" に対して Selenium の type コマンドが効かない件
Selenium でファイルアップロード用の入力フィールドに値を入れようと以下のコマンドを発行したのだが、
<tr> <td>type</td> <td>//input[@type='file' and @name='upFile']</td> <td>C:\hoge</td> </tr>
FireFox ではストップしてしまう。
Selenium Recorder からは実行できたのだが、
サーバーにスクリプトを上げて、TestRunner から実行しようとすると止まってしまう。
これは、Selenium の問題ではなくて、FireFox がセキュリティ上の問題から、
JavaScript から
<input type="file" />
の value にアクセスできないようにしているからであった。
なんとか回避しようと FireFox の設定ファイルである user.js (FIREFOX_HOME/defaults/profile/user.js)に
user_pref("capability.policy.default.HTMLInputElement.value", "allAccess"); user_pref("capability.policy.default.checkloaduri", "allAccess");
とかして、無理やりセキュリティレベル下げようと思ったのだが、ダメだった。
100パーセント無理なのかな。
今回は他の操作で代替できたので、
そちらに変更して諦めた。
(SeleniumRecorder ハックして、自前のローカルに置いた TestRunner 実行できるように〜。
とか考えたけど、時間かかりそうだったのでパス)
ちなみに、Selenium の実行を IE で行えばこの問題は回避できる。
ただし、IE と FireFox の Selenium の挙動が微妙に違うので、
(type コマンドへの1番目の引数の改行の扱いが違う点)
IE で実行できなかった。
その問題についてはまた別の機会に。