0
Seleniumで非同期関数の完了を処理しようとしています。 非同期js関数は、ボタンをクリックした後に実行する必要があります。SeleniumのWebDriverに対する非同期コマンド
セイlistenFor(arguments[0])
は、クリックハンドラの実行の終了をリッスンし、click action
が送出される前にリッスンを開始します。次の関数では、私はClick action
の前にclickイベントをlistenしています。これはC#のasync/awaitを使用しています。ここで
1. Started async function
2. Before Click
3. Started to listen
我々はClick
アクションが派遣されていないことを確認できます
private async void ExecuteJsAsync(IActionElement button)
{
Console.WriteLine("Started async function");
var result = Task<bool>.Factory.StartNew(() =>
{
Console.WriteLine("Started to listen");
var script = "listenFor(arguments[0])";
var executor = (IJavaScriptExecutor)browser;
return executor.ExecuteAsyncScript(script);
});
Console.WriteLine("Before click");
new Actions(browser).Click(button).Perform();
Console.WriteLine("After click");
_result = await result;
}
は、しかし、私は、ログの次のシーケンスを取得しています。質問は次のとおりです。
- それは非同期に(ここでは
Click action
&listener
)セレンでいくつかのタスクを実行することは可能ですか? - なぜセレンは
Click action
をブラウザに送信できないのですか? Click
、SendKeys
などのSeleniumコマンドはメインのJavaScriptスクリプトで実行されますか?