代码之家  ›  专栏  ›  技术社区  ›  IntegrateThis

了解executeAsyncScript在Selenium中的用法

  •  0
  • IntegrateThis  · 技术社区  · 7 年前

    我正在努力理解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);
    

    现在据我所知,第一个参数应该是脚本,而最后一个参数是回调函数,但在本例中没有回调,所以这里发生了什么(参数[]是空的,对吗?)。

    如果我想有一个返回承诺的函数,然后打印承诺,比如 doSomething().then(function(result) { return result;)}); 这将如何与 executeAsyncScript 作用

    谢谢

    1 回复  |  直到 7 年前
        1
  •  3
  •   N-ate    7 年前

    您必须使用Selenium函数提供的回调。想象一下,当您使用 executeAsyncScript 脚本包装在Selenium函数中,如下所示:

    (function(args,,, callbackToServer){
        window.setTimeout(arguments[arguments.length - 1], 500);
    })(args,,, callbackToServer);
    

    如你所见 参数[arguments.length-1] 实际引用 callbackToServer 作用

    例如,您的承诺如下:

    doSomething().then(function(result) { 
        arguments[arguments.length - 1](result);
    )});