アクセスするとデジタル証明書を選択しろと促すポップアップが出るページに
WebDriverで普通にget()とかnavigate().to()すると。
AWT-EventQueue-0というところでModal Dialogエラーが出る。
デジタル証明書のポップアップがキャンセルされて落ちる。
という現象についてクリアするためにやったことまとめ
Alertクラスを使う
デジタル証明書のポップアップをAlertと捉え、
get(URL)した直後に Alert alert = driver.switchTo().alert()
しようとした。
→エラーがAWT-EventQueue-0で起きてるということは
つまりget()のなかで起きているということで。
それはつまりget()の後に何書いてもそこまでいかないということで。
(取れませんでした)
クッションを入れる
一度ポップアップがキャンセルされたあと
「ページを表示できません」画面になったブラウザを更新すると
ポップアップが復活することを確認したので、
まず driver.get("about:blank");
して、
そのあと driver.navigate().to(目的のURL);
とごまかしてみた。
→ごまかせませんでした(理由は同上)
WebDriverを使わずに遷移(1) javascript
WebDriverを使うとポップアップをkillしてしまうのではないかと。
先程クッションとしてabout:blankを使ったが、
その代わりに空のHTMLを書いてその中でjavascriptでページ遷移させた。
いわゆるlocation.hrefというやつ。
→落ちない!うええいよっしゃあああ!!
とおもったけどブラウザのバーのところに警告が表示されて、
そこで毎回手でacceptしないとポップアップを表示してくれないので、
ちょっとめんどくさい。黙ってポップアップを出してほしい。
WebDriverを使わずに遷移(2) HTML
ならばmetaタグ書き換えはどうだ!
よくある、このページは移転しました。10秒後に自動的に移動します。
をやっているやつをクッションページに埋め込んでみた。
<meta http-equiv="REFRESH" content="遷移までの秒数;URL=目的のURL">
→大成功。
get(クッションHTML)するとmetaタグで目的のURLに遷移、
そのとき先にデジタル証明書ポップアップを表示、
選択するとちゃんとページを表示してくれました。めでたしめでたし
まとめ
Selenium+WebDriverあんまり関係なかった