0
我想處理Selenium中異步函數的完成。 異步js函數必須在點擊按鈕後開始執行。Selenium中的WebDriver的異步命令
說listenFor(arguments[0])
偵聽點擊處理程序執行的結束,並在調度click action
之前開始偵聽它。在下一個函數中,我使用C#的async/await在Click action
之前偵聽單擊事件。
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;
}
但我正在逐漸日誌的下一個序列:
1. Started async function
2. Before Click
3. Started to listen
在這裏我們可以看到,Click
行動沒有分派。而問題是:
- 是否可以執行多個任務異步硒(這裏
Click action
&listener
)? - 爲什麼Selenium無法將
Click action
發送到瀏覽器? - Selenium命令如
Click
,SendKeys
在主javascripts線程中執行嗎?