[2] ChromeDriver も GeckoDriver
も、旧エンドポイントの
execute
や execute_async
に対応しています。
[3] GeckoDriver は
execute
でも execute/sync
でも、
約束が返されたら約束が解決されてから結果を返します。
ChromeDriver は約束オブジェクト自体を返します (が JSON で表せないので、
空のオブジェクトになります)。
[1] GeckoDriver は execute
や execute/sync
で返した約束が拒絶されたとき、
エラーでなく成功として返してきます。
そのため約束が成功裏に解決された場合と区別できません。
[4] ChromeDriver の execute_async
は、
タイムアウトの既定値が0秒になっています。
すぐに実行できる約束のコールバックなどがなくなれば、
すぐにタイムアウトエラーを返します。
GeckoDriver の execute_async
は、
タイムアウトの既定値が数分に設定されているようです。
[5]
ChromeDriver では、
navigate を発生させるメソッドを実行してから、
Promise
のコールバックを経て非同期的に execute_async
のコールバックを呼び出すことにしていると、
navigate による unload が先に発生して、 WebDriver
がエラー応答を返すことがあるようです。(微妙なタイミングの問題なので、
先にコールバックが呼び出されて成功の応答が返ることもあります。)
GeckoDriver はそのようなことはなさそうですが、必ずかはわかりません。