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线程中执行吗?