理解 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.tw/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