javascript - 了解 Selenium 中executeAsyncScript 的用法

标签 javascript selenium

我试图理解 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/

相关文章:

javascript - Angularjs 中两个按钮的不同验证?

XPath 元素编号返回所有元素而不是第一个

excel - 如何使用 selenium webdriver 设置自动完成下拉值

python - Selenium Web 在动态内容和隐藏数据表上使用 Beautiful Soup 进行抓取

javascript - 在 Google App Engine 中使用 Google Closure 的 "compiler.jar"

javascript - 如何理解对象中的第一个元素是否有效?

javascript - 定时自动更新 JSP 页面

javascript - jQuery 将事件的水平菜单项滚动到中心

java - Selenium moveToElement() 读取工具提示不起作用

密码为 "@"的 HTTP 基本认证 URL