理解 Selenium 中的 executeAsyncScript
我们可以在 Selenium webdriver 中使用 **executeAsyncScript** 方法。对于 executeAsyncScript 方法,JavaScript 执行器会运行 JavaScript 的异步部分,并引用当前选择的窗口或框架。与 executeScript 相反,使用 executeAsyncScript 方法运行的脚本应通过调用给定的回调函数来完成。
回调函数始终作为最后一个参数添加到执行的函数中。传递的第一个参数用于获取脚本结果。如果脚本包含 return 语句,则遵循以下规则:
对于 HTML 元素,返回一个 webelement。
对于十进制数,返回一个 double。
对于非十进制数,返回一个 long。
对于布尔数,返回一个 Boolean。
对于所有其他情况,返回一个字符串。
对于数组,返回一个对象列表,遵循上述规则。
如果值为 null 或没有要返回的值,则返回 null。
我们可以使用 executeAsyncScript 方法执行以下任务:
设置浏览器超时。
将测试与 AJAX 应用程序同步。
注入 XMLHttpRequest 并等待结果。
executeAsyncScript 方法的参数可以是布尔值、字符串、webelement、列表或数字。如果参数不是这些类型,则会引发异常。可以使用 arguments 关键字访问参数。
语法
JavascriptExecutor j = (JavascriptExecutor) driver;
j.executeAsyncScript
("window.setTimeout(arguments[arguments.length - 1], 800);");示例
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.JavascriptExecutor;
public class ExecuteAsyncScriptMethod{
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://tutorialspoint.com/index.htm");
//get current system time
long s = System.currentTimeMillis();
// Javascript executor
JavascriptExecutor j = (JavascriptExecutor) driver;
//executeAsyncScript method to set timeout
j.executeAsyncScript
("window.setTimeout(arguments[arguments.length - 1], 800);");
System.out.println(
"Time Elapsed is: " + (System.currentTimeMillis() - s));
driver.quit();
}
}输出

广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP