2

「緩く結合」されないように、フォーカスイベントの直後でもブラーを発生させる方法についてのアイデア(アクションはセレンサーバーに1つずつ送信されます)。説明させてください:

Selenium RCでは、fireEvent(locator、 "blur")とfireEvent(locator、 "focus")を使用して、ぼかしとフォーカスを実行します。ただし、blurイベントがブラウザーに送信された後、focusイベントはjavascriptコマンドスタックのblurイベントに直接続きません。これは、次の場合に問題になります。テキストボックスのグループのようなウィジェットのグループのぼやけを検出します。

私が行うこと:すべてのテキストボックスは同じリスナーを共有し、ぼかしが発生したときに、フォーカスイベントがテキストボックスの1つによってキャプチャされたかどうかを確認する追加のコマンドを実行します。キャプチャされた場合は、ぼかしを無視します。javascriptで実行するこの追加コマンドは、すべての待機中のコマンドが実行された後に自動的に実行されます。この場合、focusコマンドはこれらの待機中のコマンドの1つです。

Selenium RCに戻る:Seleniumサーバーによってblurイベントが発生した後、次のコマンド(この場合はfocusイベント)を待機して発生します。ただし、ご存知のとおり、その間、追加コマンドはすでに実行されており、新しいフォーカスイベントは検出されていません。そのため、グループブラーが検出されて処理されますが、この場合、ブラウザのようにブラーの直後にフォーカスが発生しないため、ブラーは正しく処理されません。

説明が少し難しいので、私の問題を理解していただければ幸いです。これを解決する方法について何かアイデアはありますか?だから私は正しい振る舞いをテストすることができますか?(グループブラーが正しくキャプチャされていないため、検証が早すぎることはありません)

これを解決する方法は、JavaScriptをSeleniumサーバーに送信して評価し、両方のイベントを次々に発生させる方法だと思います。またはそうではありませんか?...そして、あなたは私がこれをどのように行うでしょうか?

4

1 に答える 1

2

私はあなたが探していると信じています:

selenium.getEval("[私の JavaScript はこちら]");

選択した JavaScript スニペットを送信して、ブラウザーによって評価されるようにすることができます。これにより、フォーカスとぼかしを 1 つのコマンドに連鎖させることができます。

于 2011-04-08T10:44:23.667 に答える