Splinter と PhantomJS を使って confirm() をフックする方法

Splinter — Splinter 0.10.0 documentation
Splinter と PhantomJS を使うと E2E なテストを実現できる。
概ねこれで問題ないけど、サイトで JavaScript が window.confirm() を使って確認ダイアログを出している。
Splinter には get_alert() というインターフェイスがあるので、これを使えば良いかと思ったが、PhantomJS がドライバーの場合使えない。
https://github.com/cobrateam/splinter/blob/master/splinter/driver/webdriver/phantomjs.py#L39


クリックした結果を取れればいいので、window.confirm を書き換えたら良い。

browser.execute_script('window.confirm = function () {return true;}')

これをページがロードされた直後にしてやると、window.confirm が上書きされ、無事に常に true を受け取るようになる。