JSON Wire Protocol 規範
此文件先前位於 wiki 上
所有與瀏覽器或 RemoteWebDriver 伺服器通訊的 WebDriver 實作,皆應使用通用的 wire protocol。此 wire protocol 定義了一個使用 JSON over HTTP 的 RESTful web service。
此協定會假設 WebDriver API 已「扁平化」,但預期客戶端實作會採取更物件導向的方法,如現有的 Java API 所展示。wire protocol 以「指令」和「回應」的請求/回應對實作。
術語與概念
客戶端
正在使用 WebDriver API 的機器。
會話
正在運行 RemoteWebDriver 的機器。此術語也可能指直接實作 wire protocol 的特定瀏覽器,例如 FirefoxDriver 或 IPhoneDriver。
伺服器應為每個會話維護一個瀏覽器。傳送至會話的指令將被導向至對應的瀏覽器。
WebElement
WebDriver API 中的一個物件,代表頁面上的 DOM 元素。
WebElement JSON 物件
WebElement 的 JSON 表示,用於在網路中傳輸。此物件將具有以下屬性
鍵 | 類型 | 描述 |
---|---|---|
ELEMENT | 字串 | 伺服器分配給元素的不透明 ID。此 ID 應在所有後續針對元素發出的指令中使用。 |
Capabilities JSON 物件
並非所有伺服器實作都將支援每個 WebDriver 功能。因此,客戶端和伺服器應在使用 JSON 物件時,包含以下列出的屬性,以描述會話支援的功能。
鍵 | 類型 | 描述 |
---|---|---|
browserName | 字串 | 正在使用的瀏覽器名稱;應為 {android, chrome, firefox, htmlunit, internet explorer, iPhone, iPad, opera, safari} 之一。 |
version | 字串 | 瀏覽器版本,或若未知則為空字串。 |
platform | 字串 | 指定瀏覽器正在運行的平台的鍵。此值應為 {WINDOWS|XP|VISTA|MAC|LINUX|UNIX} 之一。當請求新會話時,客戶端可以指定 ANY 以表示可以使用任何可用的平台。 |
javascriptEnabled | 布林值 | 會話是否支援在當前頁面的上下文中執行使用者提供的 JavaScript。 |
takesScreenshot | 布林值 | 會話是否支援擷取當前頁面的螢幕截圖。 |
handlesAlerts | 布林值 | 會話是否可以與模式彈出視窗互動,例如 window.alert 和 window.confirm 。 |
databaseEnabled | 布林值 | 會話是否可以與資料庫儲存互動。 |
locationContextEnabled | 布林值 | 會話是否可以設定和查詢瀏覽器的位置上下文。 |
applicationCacheEnabled | 布林值 | 會話是否可以與應用程式快取互動。 |
browserConnectionEnabled | 布林值 | 會話是否可以查詢瀏覽器的連線能力,並在需要時停用它。 |
cssSelectorsEnabled | 布林值 | 會話在搜尋元素時是否支援 CSS 選擇器。 |
webStorageEnabled | 布林值 | 會話是否支援與 儲存物件 互動。 |
rotatable | 布林值 | 會話是否可以在直向和橫向之間旋轉當前頁面的當前佈局(僅適用於行動平台)。 |
acceptSslCerts | 布林值 | 會話是否應預設接受所有 SSL 憑證。 |
nativeEvents | 布林值 | 會話在模擬使用者輸入時,是否能夠產生原生事件。 |
proxy | proxy 物件 | 要使用的任何 proxy 的詳細資訊。如果未指定 proxy,則使用系統目前的或預設狀態。格式在 Proxy JSON 物件下指定。 |
unexpectedAlertBehaviour | 字串 | 在拋出 UnhandledAlertException 之前,瀏覽器應如何處理未處理的警示。可能的值為 "accept"、"dismiss" 和 "ignore" |
elementScrollBehavior | 整數 | 允許使用者指定是否將元素滾動到視窗中以進行互動,使其與視窗的頂部 (0) 或底部 (1) 對齊。預設值是與視窗的頂部對齊。在 IE 和 Firefox 中支援(自 2.36 版起) |
Desired Capabilities
客戶端發送的 Capabilities JSON 物件,描述伺服器建立的新會話應具備的功能。任何省略的鍵都隱含地表示對應的功能是不相關的。更多資訊請參閱 DesiredCapabilities。
實際功能
伺服器返回的 Capabilities JSON 物件,描述會話實際支援的功能。任何省略的鍵都隱含地表示對應的功能不受支援。
Cookie JSON 物件
描述 Cookie 的 JSON 物件。
鍵 | 類型 | 描述 |
---|---|---|
name | 字串 | Cookie 的名稱。 |
value | 字串 | Cookie 值。 |
path | 字串 | (可選)Cookie 路徑。1 |
domain | 字串 | (可選)Cookie 可見的網域。1 |
secure | 布林值 | (可選)Cookie 是否為安全 Cookie。1 |
httpOnly | 布林值 | (可選)Cookie 是否為 httpOnly Cookie。1 |
expiry | 數字 | (可選)Cookie 過期時間,以自 1970 年 1 月 1 日午夜 UTC 以來的秒數指定。1 |
1 當返回 Cookie 物件時,伺服器僅應在無法提供資訊的情況下省略可選欄位。
Log Entry JSON 物件
描述日誌條目的 JSON 物件。
鍵 | 類型 | 描述 |
---|---|---|
timestamp | 數字 | 條目的時間戳記。 |
level | 字串 | 條目的日誌級別,例如 "INFO"(參見 日誌級別)。 |
message | 字串 | 日誌訊息。 |
日誌級別
依序排列的日誌級別,最精細的級別在頂部,最粗略的級別在底部。
級別 | 描述 |
---|---|
ALL | 所有日誌訊息。用於提取日誌和配置記錄。 |
DEBUG | 用於除錯的訊息。 |
INFO | 包含使用者資訊的訊息。 |
WARNING | 對應於非嚴重問題的訊息。 |
SEVERE | 對應於嚴重錯誤的訊息。 |
OFF | 無日誌訊息。用於配置記錄。 |
日誌類型
下表列出了常見的日誌類型。其他日誌類型,例如,用於效能記錄的日誌類型也可能可用。
日誌類型 | 描述 |
---|---|
client | 來自客戶端的日誌。 |
driver | 來自 webdriver 的日誌。 |
browser | 來自瀏覽器的日誌。 |
server | 來自伺服器的日誌。 |
Proxy JSON 物件
描述 Proxy 配置的 JSON 物件。
鍵 | 類型 | 描述 |
---|---|---|
proxyType | 字串 | (必填)正在使用的 proxy 類型。可能的值為:direct - 直接連線 - 未使用 proxy,manual - 手動配置 proxy 設定,例如設定 HTTP 的 proxy、FTP 的 proxy 等,pac - 從 URL 自動配置 Proxy,autodetect - Proxy 自動偵測,可能使用 WPAD,system - 使用系統設定 |
proxyAutoconfigUrl | 字串 | (如果 proxyType == pac 則為必填,否則忽略)指定用於 proxy 自動配置的 URL。預期格式範例:http://hostname.com:1234/pacfile |
ftpProxy, httpProxy, sslProxy, socksProxy | 字串 | (可選,如果 proxyType != manual 則忽略)分別指定用於 FTP、HTTP、HTTPS 和 SOCKS 請求的 proxy。如果發出請求,但特定協定的 proxy 未定義,且 proxyType 為 manual,則行為未定義。預期格式範例:hostname.com:1234 |
socksUsername | 字串 | (可選,如果 proxyType != manual 且未設定 socksProxy 則忽略)指定 SOCKS proxy 使用者名稱。 |
socksPassword | 字串 | (可選,如果 proxyType != manual 且未設定 socksProxy 則忽略)指定 SOCKS proxy 密碼。 |
noProxy | 字串 | (可選,如果 proxyType != manual 則忽略)指定 proxy 繞過位址。格式為驅動程式特定。 |
訊息
指令
WebDriver 指令訊息應符合 HTTP/1.1 請求規範。雖然伺服器可以擴展以回應其他內容類型,但 wire protocol 規定所有指令都接受 application/json;charset=UTF-8
的內容類型。同樣地,POST 和 PUT 請求的訊息主體必須使用 application/json;charset=UTF-8
內容類型。
WebDriver 服務中的每個指令都將映射到特定路徑的 HTTP 方法。以冒號 (:) 為前綴的路徑段表示該段是變數,用於進一步識別底層資源。例如,考慮任意資源映射為
GET /favorite/color/:name
給定此映射,伺服器應回應傳送至 “/favorite/color/Jack” 和 “/favorite/color/Jill” 的 GET 請求,變數 :name
分別設定為 “Jack” 和 “Jill”。
回應
指令回應應以 HTTP/1.1 回應訊息 的形式傳送。如果遠端伺服器必須返回 4xx 回應,則回應主體應具有 text/plain 的 Content-Type,且訊息主體應為錯誤請求的描述性訊息。對於所有其他情況,如果回應包含訊息主體,則它必須具有 application/json;charset=UTF-8 的 Content-Type,並且將是一個具有以下屬性的 JSON 物件
鍵 | 類型 | 描述 |
---|---|---|
sessionId | 字串 | null |
status | 數字 | 摘要指令結果的狀態代碼。非零值表示指令失敗。 |
value | * | 回應 JSON 值。 |
回應狀態代碼
wire protocol 將繼承 InternetExplorerDriver 使用的狀態代碼
代碼 | 摘要 | 詳細資訊 |
---|---|---|
0 | Success | 指令已成功執行。 |
6 | NoSuchDriver | 會話已終止或未啟動 |
7 | NoSuchElement | 無法使用給定的搜尋參數在頁面上找到元素。 |
8 | NoSuchFrame | 切換到框架的請求無法滿足,因為找不到該框架。 |
9 | UnknownCommand | 找不到請求的資源,或收到使用映射資源不支援的 HTTP 方法的請求。 |
10 | StaleElementReference | 元素指令失敗,因為引用的元素不再附加到 DOM。 |
11 | ElementNotVisible | 無法完成元素指令,因為該元素在頁面上不可見。 |
12 | InvalidElementState | 無法完成元素指令,因為該元素處於無效狀態(例如,嘗試點擊已停用的元素)。 |
13 | UnknownError | 在處理指令時發生未知的伺服器端錯誤。 |
15 | ElementIsNotSelectable | 嘗試選擇無法選擇的元素。 |
17 | JavaScriptError | 執行使用者提供的 JavaScript 時發生錯誤。 |
19 | XPathLookupError | 使用 XPath 搜尋元素時發生錯誤。 |
21 | Timeout | 操作在其逾時到期之前未完成。 |
23 | NoSuchWindow | 切換到不同視窗的請求無法滿足,因為找不到該視窗。 |
24 | InvalidCookieDomain | 非法嘗試在與當前頁面不同的網域下設定 Cookie。 |
25 | UnableToSetCookie | 設定 Cookie 值的請求無法滿足。 |
26 | UnexpectedAlertOpen | 模式對話框已開啟,阻止此操作 |
27 | NoAlertOpenError | 嘗試在未開啟模式對話框時對其進行操作。 |
28 | ScriptTimeout | 腳本在其逾時到期之前未完成。 |
29 | InvalidElementCoordinates | 提供給互動操作的座標無效。 |
30 | IMENotAvailable | IME 不可用。 |
31 | IMEEngineActivationFailed | IME 引擎無法啟動。 |
32 | InvalidSelector | 參數為無效的選擇器(例如 XPath/CSS)。 |
33 | SessionNotCreatedException | 無法建立新會話。 |
34 | MoveTargetOutOfBounds | 為移動操作提供的目標超出範圍。 |
客戶端應將來自伺服器的 404 Not Found 回應解釋為「Unknown command」回應。來自伺服器的所有其他未定義狀態欄位的 4xx 和 5xx 回應都應解釋為「Unknown error」回應。
錯誤處理
wire protocol 指定了兩個層次的錯誤處理:無效請求和失敗的指令。
無效請求
所有無效請求都應導致伺服器返回 4xx HTTP 回應。回應 Content-Type 應設定為 text/plain,且訊息主體應為描述性錯誤訊息。無效請求的類別如下
- 未知指令
- 如果伺服器收到指令請求,其路徑未映射到 REST 服務中的資源,則應以
404 Not Found
訊息回應。 - 未實作的指令
- 每個實作 WebDriver wire protocol 的伺服器都必須回應每個已定義的指令。如果伺服器上尚未實作個別指令,則伺服器應以
501 Not Implemented
錯誤訊息回應。請注意,這是無效請求類別中唯一不返回4xx
狀態代碼的錯誤。 - 變數資源未找到
- 如果請求路徑映射到變數資源,但該資源不存在,則伺服器應以
404 Not Found
回應。例如,如果 IDmy-session
在伺服器上不是有效的會話 ID,並且指令傳送到GET /session/my-session HTTP/1.1
,則伺服器應優雅地返回404
。 - 無效的指令方法
- 如果請求路徑映射到有效資源,但該資源不回應請求方法,則伺服器應以
405 Method Not Allowed
回應。回應必須包含 Allows 標頭,其中包含請求資源允許的方法列表。 - 遺失的指令參數
- 如果 POST/PUT 指令映射到預期一組 JSON 參數的資源,且回應主體不包含其中一個參數,則伺服器應以
400 Bad Request
回應。回應主體應列出遺失的參數。
失敗的指令
如果請求映射到有效指令,且請求主體中包含所有預期的參數,但執行失敗,則伺服器應傳送 500 Internal Server Error。此回應應具有 application/json;charset=UTF-8
的 Content-Type,且回應主體應為格式良好的 JSON 回應物件。
回應狀態應為已定義的狀態代碼之一,且回應值應為另一個包含失敗指令詳細資訊的 JSON 物件
鍵 | 類型 | 描述 |
---|---|---|
message | 字串 | 指令失敗的描述性訊息。 |
screen | 字串 | (可選)如果包含,則為當前頁面的螢幕截圖,以 base64 編碼字串表示。 |
class | 字串 | (可選)如果包含,則指定指令失敗時拋出的異常的完整類別名稱。 |
stackTrace | 陣列 | (可選)如果包含,則指定描述指令失敗時拋出的異常堆疊追蹤的 JSON 物件陣列。陣列的第零個元素代表堆疊的頂部。 |
stackTrace 陣列中的每個 JSON 物件都必須包含以下屬性
鍵 | 類型 | 描述 |
---|---|---|
fileName | 字串 | 包含此框架所代表的行的原始程式檔名稱。 |
className | 字串 | 此框架中活動的類別的完整類別名稱。如果無法確定類別名稱,或不適用於伺服器實作的語言,則此屬性應設定為空字串。 |
methodName | 字串 | 此框架中活動的方法名稱,如果未知/不適用,則為空字串。 |
lineNumber | 數字 | 框架的原始程式檔中的行號,如果未知則為 0。 |
資源映射
WebDriver REST 服務中的資源映射到個別的 URL 模式。每個資源可以回應一個或多個 HTTP 請求方法。如果資源回應 GET 請求,則它也應回應 HEAD 請求。所有資源都應使用 Allow
標頭欄位回應 OPTIONS 請求,其值為資源回應的所有方法的列表。
如果資源映射到包含變數路徑段名稱的 URL,則應使用該路徑段進一步路由請求。變數路徑段在資源映射中以冒號前綴表示。例如,考慮以下
/favorite/color/:person
映射到此 URL 的資源應解析 :person
路徑段的值,以進一步確定如何回應請求。如果此資源收到對 /favorite/color/Jack
的請求,則應返回 Jack 最喜歡的顏色。同樣地,伺服器應針對任何對 /favorite/color/Jill
的請求返回 Jill 最喜歡的顏色。
只有當其中一個資源的模式包含變數路徑段,而另一個資源的模式不包含變數路徑段時,兩個資源才可以映射到相同的 URL 模式。在這些情況下,伺服器應始終將請求路由到路徑與請求最佳匹配的資源。考慮以下兩個資源路徑
/session/:sessionId/element/active
/session/:sessionId/element/:id
給定這些映射,伺服器應始終將最後一個路徑段為 active 的請求路由到第一個資源。所有其他請求都應路由到第二個資源。
指令參考
指令摘要
指令詳細資訊
/status
GET /status
- 查詢伺服器的當前狀態。如果伺服器正常運作且接受指令,則應以一般的 "HTTP 200 OK" 回應。回應主體應為描述伺服器狀態的 JSON 物件。所有伺服器實作都應返回兩個基本物件,描述伺服器的當前平台以及伺服器的建置時間。所有欄位都是可選的;如果省略,客戶端應假設值為未知。此外,伺服器實作可能包含此處未列出的其他欄位。
鍵 類型 描述 build 物件 build.version 字串 通用發布標籤(即 "2.0rc3") build.revision 字串 伺服器建置所依據的本地原始碼控制客戶端的修訂版本 build.time 字串 伺服器建置時的時間戳記。 os 物件 os.arch 字串 當前系統架構。 os.name 字串 伺服器目前運行的作業系統名稱:"windows"、"linux" 等。 os.version 字串 作業系統版本。 - 返回
{object}
描述伺服器一般狀態的物件。
- 查詢伺服器的當前狀態。如果伺服器正常運作且接受指令,則應以一般的 "HTTP 200 OK" 回應。回應主體應為描述伺服器狀態的 JSON 物件。所有伺服器實作都應返回兩個基本物件,描述伺服器的當前平台以及伺服器的建置時間。所有欄位都是可選的;如果省略,客戶端應假設值為未知。此外,伺服器實作可能包含此處未列出的其他欄位。
/session
POST /session
/sessions
GET /sessions
- 傳回目前作用中會話的清單。每個會話將以 JSON 物件清單形式傳回,並包含以下鍵
鍵 類型 描述 id 字串 會話 ID。 capabilities 物件 描述會話 能力 的物件。 - 返回
{Array.<Object>}
目前作用中會話的清單。
- 傳回目前作用中會話的清單。每個會話將以 JSON 物件清單形式傳回,並包含以下鍵
/session/:sessionId
GET /session/:sessionId
- 檢索指定會話的功能。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{object}
描述會話 能力 的物件。
DELETE /session/:sessionId
- 刪除會話。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
/session/:sessionId/timeouts
POST /session/:sessionId/timeouts
- 設定特定類型操作可執行的時間長度,超過此時間長度操作將中止,並向用戶端傳回 |Timeout| 錯誤。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
type
-{string}
要設定逾時的操作類型。有效值為:「script」(指令碼逾時)、「implicit」(修改隱含等待逾時)和「page load」(設定頁面載入逾時)。ms
-{number}
以毫秒為單位,允許限時命令執行的時間量。
/session/:sessionId/timeouts/async_script
POST /session/:sessionId/timeouts/async_script
- 設定非同步指令碼可執行的時間量(以毫秒為單位),非同步指令碼由
/session/:sessionId/execute_async
執行,超過此時間長度指令碼將中止,並向用戶端傳回 |Timeout| 錯誤。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
ms
-{number}
以毫秒為單位,允許限時命令執行的時間量。
- 設定非同步指令碼可執行的時間量(以毫秒為單位),非同步指令碼由
/session/:sessionId/timeouts/implicit_wait
POST /session/:sessionId/timeouts/implicit_wait
- 設定驅動程式在搜尋元素時應等待的時間量。當
搜尋單一元素時,驅動程式應輪詢頁面,直到找到元素或
逾時到期(以先發生者為準)。當搜尋多個元素時,驅動程式
應輪詢頁面,直到找到至少一個元素或逾時到期,屆時
應傳回空清單。
如果從未傳送此命令,驅動程式應預設為 0 毫秒的隱含等待。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
ms
-{number}
要等待的時間量,以毫秒為單位。此值下限為 0。
- 設定驅動程式在搜尋元素時應等待的時間量。當
/session/:sessionId/window_handle
GET /session/:sessionId/window_handle
- 檢索當前視窗句柄。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{string}
目前的視窗控制代碼。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/window_handles
GET /session/:sessionId/window_handles
- 檢索會話可用的所有視窗句柄的列表。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{Array.<string>}
視窗控制代碼的清單。
/session/:sessionId/url
GET /session/:sessionId/url
- 檢索當前頁面的 URL。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{string}
目前的 URL。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
POST /session/:sessionId/url
- 導航到新的 URL。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
url
-{string}
要導航至的 URL。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/forward
POST /session/:sessionId/forward
- 如果可能,在瀏覽器歷史記錄中向前導航。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/back
POST /session/:sessionId/back
- 如果可能,在瀏覽器歷史記錄中向後導航。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/refresh
POST /session/:sessionId/refresh
- 刷新當前頁面。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/execute
POST /session/:sessionId/execute
- 將 JavaScript 指令碼片段注入頁面,以便在目前選取框架的上下文中執行。執行的指令碼應為同步,且評估指令碼的結果將傳回給用戶端。
script
引數定義要執行的指令碼,形式為函式主體。該函式傳回的值將傳回給用戶端。將使用提供的args
陣列調用該函式,並且可以透過指定的順序透過arguments
物件存取這些值。
引數可以是任何 JSON 基本類型、陣列或 JSON 物件。定義 WebElement 參考 的 JSON 物件將轉換為對應的 DOM 元素。同樣地,指令碼結果中的任何 WebElement 都將以 WebElement JSON 物件 的形式傳回給用戶端。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
script
-{string}
要執行的指令碼。args
-{Array.<*>}
指令碼引數。
- 返回
{*}
指令碼結果。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。StaleElementReference
- 如果其中一個指令碼引數是未附加到頁面 DOM 的 WebElement。JavaScriptError
- 如果指令碼擲回錯誤。
- 將 JavaScript 指令碼片段注入頁面,以便在目前選取框架的上下文中執行。執行的指令碼應為同步,且評估指令碼的結果將傳回給用戶端。
/session/:sessionId/execute_async
POST /session/:sessionId/execute_async
- 將 JavaScript 指令碼片段注入頁面,以便在目前選取框架的上下文中執行。執行的指令碼應為非同步,且必須透過調用提供的回呼函式來發出完成訊號,回呼函式始終作為函式的最後一個引數提供。此回呼函式的值將傳回給用戶端。
非同步指令碼命令可能不會跨越頁面載入。如果在等待指令碼結果時觸發unload
事件,則應向用戶端傳回錯誤。script
引數定義要執行的指令碼,形式為函式主體。將使用提供的args
陣列調用該函式,並且可以透過指定的順序透過arguments
物件存取這些值。最後一個引數將始終是一個回呼函式,必須調用該函式以發出指令碼已完成的訊號。
引數可以是任何 JSON 基本類型、陣列或 JSON 物件。定義 WebElement 參考 的 JSON 物件將轉換為對應的 DOM 元素。同樣地,指令碼結果中的任何 WebElement 都將以 WebElement JSON 物件 的形式傳回給用戶端。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
script
-{string}
要執行的指令碼。args
-{Array.<*>}
指令碼引數。
- 返回
{*}
指令碼結果。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。StaleElementReference
- 如果其中一個指令碼引數是未附加到頁面 DOM 的 WebElement。Timeout
- 如果在逾時到期之前未調用指令碼回呼函式。逾時由/session/:sessionId/timeout/async_script
命令控制。JavaScriptError
- 如果指令碼擲回錯誤,或者如果在等待指令碼完成時觸發unload
事件。
- 將 JavaScript 指令碼片段注入頁面,以便在目前選取框架的上下文中執行。執行的指令碼應為非同步,且必須透過調用提供的回呼函式來發出完成訊號,回呼函式始終作為函式的最後一個引數提供。此回呼函式的值將傳回給用戶端。
/session/:sessionId/screenshot
GET /session/:sessionId/screenshot
- 擷取當前頁面的螢幕截圖。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{string}
以 base64 編碼 PNG 格式的螢幕截圖。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/ime/available_engines
GET /session/:sessionId/ime/available_engines
- 列出機器上所有可用的引擎。若要使用引擎,它必須存在於此清單中。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{Array.<string>}
可用引擎的清單
- 潛在錯誤
ImeNotAvailableException
- 如果主機不支援 IME
/session/:sessionId/ime/active_engine
GET /session/:sessionId/ime/active_engine
- 取得作用中 IME 引擎的名稱。名稱字串與平台相關。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{string}
作用中 IME 引擎的名稱。
- 潛在錯誤
ImeNotAvailableException
- 如果主機不支援 IME
/session/:sessionId/ime/activated
GET /session/:sessionId/ime/activated
- 指示目前 IME 輸入是否為作用中狀態(而非是否可用)。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{boolean}
如果 IME 輸入可用且目前為作用中狀態,則為 true,否則為 false
- 潛在錯誤
ImeNotAvailableException
- 如果主機不支援 IME
/session/:sessionId/ime/deactivate
POST /session/:sessionId/ime/deactivate
- 停用目前活動的 IME 引擎。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
ImeNotAvailableException
- 如果主機不支援 IME
/session/:sessionId/ime/activate
POST /session/:sessionId/ime/activate
- 使可用的引擎(出現在清單中
由 getAvailableEngines 傳回)成為作用中狀態。在此呼叫之後,引擎將
新增至 IME daemon 中載入的引擎清單,並且輸入會透過
sendKeys 傳送,並由作用中引擎轉換。
請注意,這是啟動 IME 的平台獨立方法
(平台特定的方法是使用鍵盤快速鍵 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
engine
-{string}
要啟動的引擎名稱。
- 潛在錯誤
ImeActivationFailedException
- 如果引擎不可用,或由於其他原因啟動失敗。ImeNotAvailableException
- 如果主機不支援 IME
- 使可用的引擎(出現在清單中
/session/:sessionId/frame
POST /session/:sessionId/frame
- 將焦點變更為頁面上的另一個框架。如果框架
id
為null
,伺服器
應切換至頁面的預設內容。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
id
-{string|number|null|WebElement JSON Object}
要變更焦點的框架識別碼。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。NoSuchFrame
- 如果找不到id
指定的框架。
- 將焦點變更為頁面上的另一個框架。如果框架
/session/:sessionId/frame/parent
POST /session/:sessionId/frame/parent
- 將焦點變更為父內容。如果目前內容是最上層瀏覽內容,則內容保持不變。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
/session/:sessionId/window
POST /session/:sessionId/window
- 將焦點變更為另一個視窗。要變更焦點的視窗可以透過其
伺服器指派的視窗控制代碼或其name
屬性值來指定。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
name
-{string}
要變更焦點的視窗。
- 潛在錯誤
NoSuchWindow
- 如果找不到name
指定的視窗。
- 將焦點變更為另一個視窗。要變更焦點的視窗可以透過其
DELETE /session/:sessionId/window
- 關閉當前視窗。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉
/session/:sessionId/window/:windowHandle/size
POST /session/:sessionId/window/:windowHandle/size
- 變更指定視窗的大小。如果 :windowHandle URL 參數為 "current",則將調整目前作用中視窗的大小。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
width
-{number}
新的視窗寬度。height
-{number}
新的視窗高度。
GET /session/:sessionId/window/:windowHandle/size
- 取得指定視窗的大小。如果 :windowHandle URL 參數為 "current",則將傳回目前作用中視窗的大小。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{width: number, height: number}
視窗的大小。
- 潛在錯誤
NoSuchWindow
- 如果找不到指定的視窗。
/session/:sessionId/window/:windowHandle/position
POST /session/:sessionId/window/:windowHandle/position
- 變更指定視窗的位置。如果 :windowHandle URL 參數為 "current",則將移動目前作用中視窗。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
x
-{number}
相對於螢幕左上角的 X 座標,以定位視窗。y
-{number}
相對於螢幕左上角的 Y 座標,以定位視窗。
- 潛在錯誤
NoSuchWindow
- 如果找不到指定的視窗。
GET /session/:sessionId/window/:windowHandle/position
- 取得指定視窗的位置。如果 :windowHandle URL 參數為 "current",則將傳回目前作用中視窗的位置。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{x: number, y: number}
視窗的 X 和 Y 座標,相對於螢幕左上角。
- 潛在錯誤
NoSuchWindow
- 如果找不到指定的視窗。
/session/:sessionId/window/:windowHandle/maximize
POST /session/:sessionId/window/:windowHandle/maximize
- 最大化指定的視窗(如果尚未最大化)。如果 :windowHandle URL 參數為 "current",則將最大化目前作用中視窗。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
NoSuchWindow
- 如果找不到指定的視窗。
/session/:sessionId/cookie
GET /session/:sessionId/cookie
- 檢索當前頁面可見的所有 Cookie。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{Array.<object>}
Cookie 的清單。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
POST /session/:sessionId/cookie
DELETE /session/:sessionId/cookie
- 刪除當前頁面可見的所有 Cookie。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
InvalidCookieDomain
- 如果 Cookie 的domain
從目前頁面不可見。NoSuchWindow
- 如果目前選取的視窗已關閉。UnableToSetCookie
- 如果嘗試在不支援 Cookie 的頁面上設定 Cookie(例如,mime-type 為text/plain
的頁面)。
/session/:sessionId/cookie/:name
DELETE /session/:sessionId/cookie/:name
- 刪除具有給定名稱的 Cookie。如果目前頁面看不到
此 Cookie,則此命令應為空操作。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。:name
- 要刪除的 Cookie 名稱。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
- 刪除具有給定名稱的 Cookie。如果目前頁面看不到
/session/:sessionId/source
GET /session/:sessionId/source
- 取得當前頁面原始碼。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{string}
目前的頁面原始碼。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/title
GET /session/:sessionId/title
- 取得當前頁面標題。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{string}
目前的頁面標題。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/element
POST /session/:sessionId/element
- 從文件根目錄開始,在頁面上搜尋元素。找到的元素將以 WebElement JSON 物件形式傳回。下表列出每個伺服器應支援的定位器策略。每個定位器必須傳回 DOM 中找到的第一個相符元素。
策略 描述 class name 傳回 class name 包含搜尋值的元素;不允許複合類別名稱。 css selector 傳回符合 CSS 選擇器的元素。 id ID name 傳回 ID 屬性符合搜尋值的元素。 NAME 傳回 NAME 屬性符合搜尋值的元素。 link text 傳回可見文字符合搜尋值的錨點元素。 partial link text 傳回可見文字部分符合搜尋值的錨點元素。 tag name 傳回 tag name 符合搜尋值的元素。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- xpath
- 傳回符合 XPath 表達式的元素。
- 返回
using
-{string}
要使用的定位器策略。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。value
-{string}
搜尋目標。{ELEMENT:string}
已定位元素的 WebElement JSON 物件。
- 從文件根目錄開始,在頁面上搜尋元素。找到的元素將以 WebElement JSON 物件形式傳回。下表列出每個伺服器應支援的定位器策略。每個定位器必須傳回 DOM 中找到的第一個相符元素。
/session/:sessionId/elements
NoSuchElement
- 如果找不到元素。XPathLookupError
- 如果使用 XPath 且輸入的表達式無效。策略 描述 class name POST /session/:sessionId/elements css selector 從文件根目錄開始,在頁面上搜尋多個元素。找到的元素將以 WebElement JSON 物件形式傳回。下表列出每個伺服器應支援的定位器策略。元素應以在 DOM 中找到的順序傳回。 id class name name 傳回 class name 包含搜尋值的所有元素;不允許複合類別名稱。 NAME css selector link text 傳回符合 CSS 選擇器的所有元素。 partial link text ID tag name 傳回 ID 屬性符合搜尋值的所有元素。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- xpath
- 傳回符合 XPath 表達式的元素。
- 返回
- NAME
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。{ELEMENT:string}
已定位元素的 WebElement JSON 物件。
/session/:sessionId/element/active
傳回 NAME 屬性符合搜尋值的所有元素。
- link text
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
- 傳回可見文字符合搜尋值的所有錨點元素。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/element/:id
partial link text
- 描述已識別的元素。
傳回可見文字部分符合搜尋值的所有錨點元素。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
- 描述已識別的元素。
/session/:sessionId/element/:id/element
xpath
- 傳回符合 XPath 表達式的所有元素。
策略 描述 class name 傳回 class name 包含搜尋值的元素;不允許複合類別名稱。 css selector 傳回符合 CSS 選擇器的元素。 id ID name 傳回 ID 屬性符合搜尋值的元素。 NAME 傳回 NAME 屬性符合搜尋值的元素。 link text 傳回可見文字符合搜尋值的錨點元素。 partial link text 傳回可見文字部分符合搜尋值的錨點元素。 tag name {Array.<{ELEMENT:string}>}
已定位元素的 WebElement JSON 物件清單。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- JSON 參數
- xpath
- 傳回符合 XPath 表達式的元素。
- 返回
using
-{string}
要使用的定位器策略。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
value
-{string}
搜尋目標。{ELEMENT:string}
已定位元素的 WebElement JSON 物件。
- 傳回符合 XPath 表達式的所有元素。
/session/:sessionId/element/:id/elements
POST /session/:sessionId/element/active
- 取得頁面上目前具有焦點的元素。該元素將以 WebElement JSON 物件形式傳回。
策略 描述 class name POST /session/:sessionId/elements css selector 從文件根目錄開始,在頁面上搜尋多個元素。找到的元素將以 WebElement JSON 物件形式傳回。下表列出每個伺服器應支援的定位器策略。元素應以在 DOM 中找到的順序傳回。 id class name name 傳回 class name 包含搜尋值的所有元素;不允許複合類別名稱。 NAME css selector link text 傳回符合 CSS 選擇器的所有元素。 partial link text ID tag name {ELEMENT:string}
作用中元素的 WebElement JSON 物件。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- JSON 參數
- xpath
- 傳回符合 XPath 表達式的元素。
- 返回
- NAME
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
{ELEMENT:string}
已定位元素的 WebElement JSON 物件。
- 取得頁面上目前具有焦點的元素。該元素將以 WebElement JSON 物件形式傳回。
/session/:sessionId/element/:id/click
GET /session/:sessionId/element/:id
- 點擊元素。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
- 注意:此命令保留供未來使用;其傳回類型目前未定義。
/session/:sessionId/element/:id/submit
:id
- 要將命令路由至的元素 ID。StaleElementReference
- 如果:id
參照的元素不再附加到頁面的 DOM。- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
/session/:sessionId/element/:id/text
POST /session/:sessionId/element/:id/element
- 返回元素的可见文本。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
/session/:sessionId/element/:id/value
從已識別的元素開始,在頁面上搜尋元素。找到的元素將以 WebElement JSON 物件形式傳回。下表列出每個伺服器應支援的定位器策略。每個定位器必須傳回 DOM 中找到的第一個相符元素。
- 向元素發送一系列按鍵。
xpath鍵 代碼 傳回符合 XPath 表達式的元素。提供的 XPath 表達式必須「按原樣」應用於伺服器;如果表達式不是相對於元素根目錄,則伺服器不應修改它。因此,XPath 查詢可能會傳回未包含在根元素子樹中的元素。 POST /session/:sessionId/element/:id/elements 從已識別的元素開始,在頁面上搜尋多個元素。找到的元素將以 WebElement JSON 物件形式傳回。下表列出每個伺服器應支援的定位器策略。元素應以在 DOM 中找到的順序傳回。 xpath 幫助 傳回符合 XPath 表達式的所有元素。提供的 XPath 表達式必須「按原樣」應用於伺服器;如果表達式不是相對於元素根目錄,則伺服器不應修改它。因此,XPath 查詢可能會傳回未包含在根元素子樹中的元素。 POST /session/:sessionId/element/:id/click ElementNotVisible
- 如果參照的元素在頁面上不可見(被 CSS 隱藏、寬度為 0 或高度為 0)POST /session/:sessionId/element/:id/submit 提交 FORM
元素。submit 命令也可以應用於任何為FORM
元素後代的元素。GET /session/:sessionId/element/:id/text POST /session/:sessionId/element/:id/value 可以指定任何 UTF-8 字元,但是,如果伺服器不支援原生按鍵事件,則應模擬標準美式鍵盤配置的按鍵。Unicode 私用區 代碼點 0xE000-0xF8FF 用於表示可按下的非文字按鍵(請參閱下表)。 NULL U+E000 Cancel U+E001 清除 U+E002 Back space U+E003 Tab U+E004 Clear U+E005 Return1 鍵 代碼 U+E006 Enter1 U+E007 Shift U+E008 Control U+E009 Alt U+E00A Pause U+E00B Escape U+E00C Space U+E00D Pageup U+E00E Pagedown U+E00F End U+E010 Home U+E011 Left arrow U+E012 Up arrow 鍵 代碼 U+E013 Right arrow U+E014 Down arrow U+E015 Insert U+E016 Delete U+E017 Semicolon U+E018 Equals U+E019 Numpad 0 U+E01A Numpad 1 U+E01B Numpad 2 U+E01C Numpad 3 鍵 代碼 U+E01D Numpad 4 U+E01E Numpad 5 U+E01F Numpad 6 U+E020 Numpad 7 U+E021 Numpad 8 U+E022 Numpad 9 鍵 代碼 U+E023 Multiply U+E024 Add U+E025 Separator U+E026 Subtract U+E027 Decimal U+E028 Divide U+E029 F1 U+E031 F2 U+E032 F3 U+E033 F4 U+E034 F5 U+E035 F6 U+E036 F7 U+E037 F8
- U+E038
- F9
- U+E039
- F10
- U+E03A
- U+E038
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- JSON 參數
- F11
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
- 注意:此命令保留供未來使用;其傳回類型目前未定義。
- 向元素發送一系列按鍵。
/session/:sessionId/keys
U+E03B
- F12
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- U+E03C
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/element/:id/name
Command/Meta
- U+E03D
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 返回
- 1 Return 鍵與 Enter 鍵不同。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
/session/:sessionId/element/:id/clear
伺服器必須按如下方式處理按鍵序列
- 每個出現在鍵盤上且不需要修飾鍵的按鍵,都會以按下 (keydown) 然後放開 (keyup) 的順序傳送。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
- 注意:此命令保留供未來使用;其傳回類型目前未定義。
- 如果伺服器不支援原生事件,且必須使用 JavaScript 模擬按鍵筆劃,則必須依序產生 keydown、keypress 和 keyup 事件。keypress 事件應僅在對應按鍵為可列印字元時觸發。
/session/:sessionId/element/:id/selected
如果按鍵需要修飾鍵(例如,標準美式鍵盤上的「!」),則序列為:修飾鍵 按下、按鍵 按下、按鍵 放開、修飾鍵 放開,其中 按鍵 是理想的未修改按鍵值(使用先前的範例,「1」)。
- 確定
OPTION
元素,或類型為checkbox
或radiobutton
的INPUT
元素目前是否已選取。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 返回
- 修飾鍵(Ctrl、Shift、Alt 和 Command/Meta)假定為「黏著性」;每個修飾鍵應保持按下狀態(例如,僅 keydown 事件),直到序列中再次遇到該修飾鍵,或遇到
NULL
(U+E000) 鍵。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
- 確定
/session/:sessionId/element/:id/enabled
每個按鍵序列都以隱含的
NULL
鍵終止。隨後,所有按下的修飾鍵都必須在序列結束時釋放(使用對應的 keyup 事件)。- 確定元素目前是否已啟用。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 返回
value
-{Array.<string>}
要輸入的按鍵序列。必須提供陣列。伺服器應將陣列項目展平為要輸入的單一字串。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
/session/:sessionId/element/:id/attribute/:name
POST /session/:sessionId/keys
/session/:sessionId/element/:id/equals/:other
GET /session/:sessionId/element/:id/name
- 測試兩個元素 ID 是否指向相同的 DOM 元素。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 查詢元素的標籤名稱。
- 返回
{string}
元素的標籤名稱,為小寫字串。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- POST /session/:sessionId/element/:id/clear
/session/:sessionId/element/:id/displayed
清除
TEXTAREA
或text INPUT
元素的值。- 確定元素目前是否顯示。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 返回
InvalidElementState
- 如果參照的元素已停用。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
/session/:sessionId/element/:id/location
GET /session/:sessionId/element/:id/selected
{boolean}
元素是否被選取。- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 返回
- GET /session/:sessionId/element/:id/enabled
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
/session/:sessionId/element/:id/location_in_view
{boolean}
元素是否已啟用。- GET /session/:sessionId/element/:id/attribute/:name
取得元素屬性的值。{string|null}
屬性的值,如果元素上未設定則為 null。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 返回
- GET /session/:sessionId/element/:id/equals/:other
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
- GET /session/:sessionId/element/:id/attribute/:name
/session/:sessionId/element/:id/size
:other
- 要與之比較的元素 ID。{boolean}
兩個 ID 是否參照相同的元素。- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 返回
StaleElementReference
- 如果:id
或:other
參照的元素不再附加到頁面的 DOM。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
/session/:sessionId/element/:id/css/:propertyName
GET /session/:sessionId/element/:id/displayed
{boolean}
元素是否顯示。- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- tag name
- 返回
- GET /session/:sessionId/element/:id/location
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。- 傳回 tag name 符合搜尋值的所有元素。
/session/:sessionId/orientation
判斷元素在頁面上的位置。點
(0, 0)
參照頁面的左上角。元素的座標以 JSON 物件形式傳回,並帶有x
和y
屬性。{x:number, y:number}
元素在頁面上的 X 和 Y 座標。- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
- GET /session/:sessionId/element/:id/location_in_view
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
判斷元素在螢幕上的位置(一旦滾動到檢視畫面中)。
- 注意:這被視為內部命令,僅應用於判斷元素的位置,
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- 以正確產生原生事件。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/alert_text
{x:number, y:number}
元素的 X 和 Y 座標。- 取得目前顯示的 JavaScript
alert()
、confirm()
或prompt()
對話框的文字。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
- GET /session/:sessionId/element/:id/size
- 潛在錯誤
- 判斷元素的尺寸(以像素為單位)。尺寸將以 JSON 物件形式傳回,並帶有
width
和height
屬性。
- 取得目前顯示的 JavaScript
{width:number, height:number}
元素的寬度和高度,以像素為單位。- 向 JavaScript
prompt()
對話框發送按鍵。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- GET /session/:sessionId/element/:id/css/:propertyName
- 潛在錯誤
- 判斷元素的尺寸(以像素為單位)。尺寸將以 JSON 物件形式傳回,並帶有
width
和height
屬性。
- 向 JavaScript
/session/:sessionId/accept_alert
查詢元素計算後的 CSS 屬性值。要查詢的 CSS 屬性應使用 CSS 屬性名稱指定,而非 JavaScript 屬性名稱(例如,
background-color
而不是backgroundColor
)。{string}
指定 CSS 屬性的值。- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
- 判斷元素的尺寸(以像素為單位)。尺寸將以 JSON 物件形式傳回,並帶有
width
和height
屬性。
/session/:sessionId/dismiss_alert
GET /session/:sessionId/orientation
- 取得目前的瀏覽器方向。伺服器應傳回 ScreenOrientation 中定義的有效方向值:
{LANDSCAPE|PORTRAIT}
。 - URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
- 判斷元素的尺寸(以像素為單位)。尺寸將以 JSON 物件形式傳回,並帶有
width
和height
屬性。
- 取得目前的瀏覽器方向。伺服器應傳回 ScreenOrientation 中定義的有效方向值:
/session/:sessionId/moveto
{string}
目前的瀏覽器方向,對應於 ScreenOrientation 中定義的值:{LANDSCAPE|PORTRAIT}
。- POST /session/:sessionId/orientation
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- 設定瀏覽器方向。方向應按照 ScreenOrientation 中的定義指定:
{LANDSCAPE|PORTRAIT}
。 orientation
-{string}
新的瀏覽器方向,如 ScreenOrientation 中定義:{LANDSCAPE|PORTRAIT}
。- GET /session/:sessionId/alert_text
/session/:sessionId/click
{string}
目前顯示的警示文字。NoAlertPresent
- 如果沒有顯示警示。- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- POST /session/:sessionId/alert_text
/session/:sessionId/buttondown
text
-{string}
要傳送到prompt()
對話方塊的按鍵筆劃。- POST /session/:sessionId/accept_alert
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- POST /session/:sessionId/alert_text
/session/:sessionId/buttonup
接受目前顯示的警示對話方塊。通常,這相當於點擊對話方塊中的「確定」按鈕。
- POST /session/:sessionId/dismiss_alert
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- POST /session/:sessionId/alert_text
/session/:sessionId/doubleclick
關閉目前顯示的警示對話方塊。對於
confirm()
和prompt()
對話方塊,這相當於點擊「取消」按鈕。對於alert()
對話方塊,這相當於點擊「確定」按鈕。- 在目前的滑鼠座標(由 moveto 設定)處雙擊。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
/session/:sessionId/touch/click
POST /session/:sessionId/moveto
- 在觸控裝置上單擊一下。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- 依指定元素的偏移量移動滑鼠。如果未指定元素,則移動是相對於目前滑鼠游標。如果提供了元素但沒有偏移量,滑鼠將移動到元素的中心。如果元素不可見,則會將其滾動到檢視畫面中。
/session/:sessionId/touch/down
element
-{string}
指派給要移動到的元素的不透明 ID,如 WebElement JSON 物件中所述。如果未指定或為 null,則偏移量相對於滑鼠的目前位置。- 手指在螢幕上按下。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
xoffset
-{number}
相對於元素左上角的 X 偏移量。如果未指定,滑鼠將移動到元素的中心。yoffset
-{number}
相對於元素左上角的 Y 偏移量。如果未指定,滑鼠將移動到元素的中心。
/session/:sessionId/touch/up
POST /session/:sessionId/click
- 手指在螢幕上抬起。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
xoffset
-{number}
相對於元素左上角的 X 偏移量。如果未指定,滑鼠將移動到元素的中心。yoffset
-{number}
相對於元素左上角的 Y 偏移量。如果未指定,滑鼠將移動到元素的中心。
session/:sessionId/touch/move
點擊任何滑鼠按鈕(在上次 moveto 命令設定的座標處)。請注意,在呼叫 buttondown 之後和呼叫 button up 之前(或任何順序錯亂的互動序列)呼叫此命令將產生未定義的行為)。
- 手指在螢幕上移動。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
xoffset
-{number}
相對於元素左上角的 X 偏移量。如果未指定,滑鼠將移動到元素的中心。yoffset
-{number}
相對於元素左上角的 Y 偏移量。如果未指定,滑鼠將移動到元素的中心。
session/:sessionId/touch/scroll
button
-{number}
要點擊的按鈕,列舉:{LEFT = 0, MIDDLE = 1 , RIGHT = 2}
。如果未指定,則預設為滑鼠左鍵。- POST /session/:sessionId/buttondown
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- 按下並按住滑鼠左鍵(在上次 moveto 命令設定的座標處)。請注意,接下來應執行的滑鼠相關命令是 buttonup。任何其他滑鼠命令(例如 click 或另一次呼叫 buttondown)都將產生未定義的行為。
- POST /session/:sessionId/buttonup
- 釋放先前按住的滑鼠按鈕(滑鼠目前所在位置)。對於每個發出的 buttondown 命令,都必須呼叫一次。請參閱 click 和 buttondown 中的注意事項,了解順序錯亂命令的影響。
session/:sessionId/touch/scroll
button
-{number}
要點擊的按鈕,列舉:{LEFT = 0, MIDDLE = 1 , RIGHT = 2}
。如果未指定,則預設為滑鼠左鍵。- POST /session/:sessionId/doubleclick
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- POST /session/:sessionId/touch/click
element
-{string}
要單擊的元素 ID。
session/:sessionId/touch/doubleclick
POST /session/:sessionId/touch/down
- 使用手指運動事件在觸控螢幕上雙擊。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
x
-{number}
螢幕上的 X 座標。
session/:sessionId/touch/longclick
y
-{number}
螢幕上的 Y 座標。- 使用手指運動事件在觸控螢幕上長按。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- POST /session/:sessionId/touch/up
session/:sessionId/touch/flick
POST session/:sessionId/touch/move
- POST session/:sessionId/touch/scroll
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
- 使用手指運動事件在觸控螢幕上滾動。使用此命令在特定螢幕位置開始滾動。
element
-{string}
滾動開始位置的元素 ID。xoffset
-{number}
要滾動的 x 軸像素偏移量。yoffset
-{number}
要滾動的 y 軸像素偏移量。
session/:sessionId/touch/flick
POST session/:sessionId/touch/move
- 使用手指運動事件在觸控螢幕上滾動。如果您不關心滾動在螢幕上的開始位置,請使用此命令。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
xoffset
-{number}
要滾動的 x 軸像素偏移量。yoffset
-{number}
要滾動的 y 軸像素偏移量。
/session/:sessionId/location
POST session/:sessionId/touch/doubleclick
- 取得當前地理位置。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
element
-{string}
要雙擊的元素 ID。
POST session/:sessionId/touch/longclick
- 設定當前地理位置。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
element
-{string}
要長按的元素 ID。
/session/:sessionId/local_storage
POST session/:sessionId/touch/flick
- 取得儲存空間的所有鍵。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
- 使用手指運動事件在觸控螢幕上輕拂。此 flick 命令在特定的螢幕位置開始。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
element
-{string}
輕拂開始位置的元素 ID。- 為給定的鍵設定儲存空間項目。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
xoffset
-{number}
要輕拂的 x 軸像素偏移量。yoffset
-{number}
要輕拂的 y 軸像素偏移量。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
speed
-{number}
速度,以像素/秒為單位。- 清除儲存空間。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/local_storage/key/:key
使用手指運動事件在觸控螢幕上輕拂。如果您不關心輕拂在螢幕上的開始位置,請使用此 flick 命令。
- 取得給定鍵的儲存空間項目。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。xspeed
-{number}
x 軸速度,以像素/秒為單位。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
yspeed
-{number}
y 軸速度,以像素/秒為單位。- 移除給定鍵的儲存空間項目。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- GET /session/:sessionId/location
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/local_storage/size
{latitude: number, longitude: number, altitude: number}
目前的地理位置。- 取得儲存空間中項目的數量。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
- POST /session/:sessionId/location
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/session_storage
location
-{latitude: number, longitude: number, altitude: number}
新位置。- 取得儲存空間的所有鍵。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
- 使用手指運動事件在觸控螢幕上輕拂。此 flick 命令在特定的螢幕位置開始。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
GET /session/:sessionId/local_storage
- 為給定的鍵設定儲存空間項目。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- JSON 參數
xoffset
-{number}
要輕拂的 x 軸像素偏移量。yoffset
-{number}
要輕拂的 y 軸像素偏移量。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
{Array.<string>}
鍵的清單。- 清除儲存空間。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/session_storage/key/:key
POST /session/:sessionId/local_storage
- 取得給定鍵的儲存空間項目。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。xspeed
-{number}
x 軸速度,以像素/秒為單位。
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
key
-{string}
要設定的鍵。- 移除給定鍵的儲存空間項目。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。- GET /session/:sessionId/location
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/session_storage/size
value
-{string}
要設定的值。- 取得儲存空間中項目的數量。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
- POST /session/:sessionId/location
- 潛在錯誤
NoSuchWindow
- 如果目前選取的視窗已關閉。
/session/:sessionId/log
DELETE /session/:sessionId/local_storage
/session/:sessionId/log/types
GET /session/:sessionId/log/types
- 取得可用的日誌類型。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{Array.<string>}
可用的日誌類型列表。
/session/:sessionId/application_cache/status
GET /session/:sessionId/application_cache/status
- 取得 html5 應用程式快取的狀態。
- URL 參數
:sessionId
- 要將命令路由至的會話 ID。
- 返回
{number}
應用程式快取狀態碼:{UNCACHED = 0, IDLE = 1, CHECKING = 2, DOWNLOADING = 3, UPDATE_READY = 4, OBSOLETE = 5}