doClick(locator) への呼び出しをインターセプトすることにより、(user-extentions.js を介して) Selenium のクリック コマンドの動作をカスタマイズしようとしています。基本的に、アプリケーションの「ビジー インジケーター」が表示されているときはいつでも、クリック アクションを遅らせる必要があります。
(現在、この種のことに対する標準的な答えは、そのような状況のスクリプトにwaitForを挿入することです。実際、現在、スクリプト全体で無数のそれらがあります。私はそれらを排除しようとしています。)
ページ要素の検出は些細な部分です。注意が必要なのは、スクリプトを実際に待機させることです。私の有望な見た目ですが、失敗した試みは次のようになります。
var nativeClick = Selenium.prototype.doClick;
Selenium.prototype.doClick = function(locator) {
this.doWaitForCondition("!selenium.browserbot.findElementOrNull('busy-indicator')", 5000);
return nativeClick.call(this, locator);
}
doWaitForCondition はすべてのクリックの前に呼び出されますが、条件が false と評価されても待機しません。nativeClick は常にすぐに呼び出されるため、遅延は発生しません。doWaitForCondition 関数は実際には待機自体を行わず、コマンド実行ループ内でその条件を確立しているのではないかと思います。この場合、クリック コマンドは既に実行されており、コマンド内でコマンドを実行しようとしています。
Seleniumコマンドの実行とwaitForがどのように機能するか、またはこれがどのように行われるかについて提案を提供する方法について誰かが光を当てることができますか?