我想使用异步函数调用来异步运行一些脚本,但我无法使用 javaScriprtExecutor 的executeAsyncScript() 函数来实现它。 这是一个小片段供您引用。
我相信函数“executeAsyncScript”应该异步运行,并且第 2 行的函数调用(本质上更快)应该在executeAsyncScript() 之前完成。但这并没有发生。仅当函数 1 的执行结束(包括 5 秒延迟)时才会调用第 2 行的函数调用!!
任何人都可以帮助我理解我在这里看不到的内容吗?
1. js.executeAsyncScript("window.setTimeout(arguments[arguments.length - 1], 5000);");
2. driver.findElement(By.xpath("//input")).sendKeys("Search term!!");
按照这个顺序,浏览器等待 5 秒,然后执行 sendkeys()。
最佳答案
两个函数executeAsyncScript 和execteScript 都会阻塞WebDriver 控制流,直到它们完成为止。这就是延迟 5 秒的原因。
请参阅此处以获取完整说明 WebDriver executeAsyncScript vs executeScript
关于javascript - 为什么 Java 中的 'executeAsyncScript (window.setTimeout (5000))' 函数会在 5 秒后等待下一个函数执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56720104/