我试图理解 Selenium 的 executeAsyncScript
文档( https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html ),例如在他们的第一个示例中:
long start = System.currentTimeMillis();
((JavascriptExecutor) driver).executeAsyncScript(
"window.setTimeout(arguments[arguments.length - 1], 500);");
System.out.println(
"Elapsed time: " + System.currentTimeMillis() - start);
现在据我了解,第一个参数应该是一个脚本,而最后一个参数是一个回调函数,但在这个例子中没有回调,所以这里发生了什么(arguments[] 为空对吗?)。
如果我想要一个返回 Promise 的函数,然后打印 Promise,请说 doSomething().then(function(result) { return result;)});
这会怎样使用 executeAsyncScript
函数?
谢谢
最佳答案
您必须使用 Selenium 函数为您提供的回调。想象一下,当您使用 executeAsyncScript 时,脚本被包装在 Selenium 函数中,如下所示:
(function(args,,, callbackToServer){
window.setTimeout(arguments[arguments.length - 1], 500);
})(args,,, callbackToServer);
正如你所看到的,arguments[arguments.length - 1]实际上引用了callbackToServer函数。
例如,您的 promise 将如下所示:
doSomething().then(function(result) {
arguments[arguments.length - 1](result);
)});
关于javascript - 了解 Selenium 中executeAsyncScript 的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47915629/