execute_async_script()メソッド(JavaではJavascriptExecutor.executeAsyncScript、.NETではIJavaScriptExecutor.ExecuteAsyncScript())を調べる必要があります。これにより、コールバック関数を待つことができます。arguments
コールバック関数は、JavaScript関数の配列に自動的に追加されます。したがって、必要な条件まで待機するJavaScript関数がページに既にあると仮定すると、次のようなことができます(以下のJavaコード、C#とPythonコードは類似している必要があります)。
String script = "var callback = arguments[arguments.length - 1];"
+ "callback(myJavaScriptFunctionThatWaitsUntilReady());";
driver.manage().timeouts().setScriptTimeout(15, TimeUnit.SECONDS);
((JavascriptExecutor)driver).executeAsyncScript(script);
さらに賢く、適切なデータを返すイベントにコールバック関数を直接渡すことができる場合があります。executeAsyncScript()関数の詳細については、プロジェクトJavaDocsを参照してください。また、このためのサンプルコードは、プロジェクトのソースツリーを参照してください。このファイルのテストでは、XHRが完了するのを待つ良い例があります。
SauceLabsで使用できるPythonバインディングのバージョンでこれがまだ利用できない場合は、まもなく利用できるようになると思います。確かに、ある意味で、これはテストケースからJavaScriptに「望ましい状態のポーリング」をプッシュしますが、テストをより読みやすくします。