JSON Wire Protocol 規範

此處為現已過時的開放原始碼協定的端點與有效負載,此協定為 W3C 規範 的前身。

此文件先前位於 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.alertwindow.confirm
databaseEnabled布林值會話是否可以與資料庫儲存互動。
locationContextEnabled布林值會話是否可以設定和查詢瀏覽器的位置上下文。
applicationCacheEnabled布林值會話是否可以與應用程式快取互動。
browserConnectionEnabled布林值會話是否可以查詢瀏覽器的連線能力,並在需要時停用它。
cssSelectorsEnabled布林值會話在搜尋元素時是否支援 CSS 選擇器。
webStorageEnabled布林值會話是否支援與 儲存物件 互動。
rotatable布林值會話是否可以在直向和橫向之間旋轉當前頁面的當前佈局(僅適用於行動平台)。
acceptSslCerts布林值會話是否應預設接受所有 SSL 憑證。
nativeEvents布林值會話在模擬使用者輸入時,是否能夠產生原生事件。
proxyproxy 物件要使用的任何 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 物件。

類型描述
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 使用的狀態代碼

代碼摘要詳細資訊
0Success指令已成功執行。
6NoSuchDriver會話已終止或未啟動
7NoSuchElement無法使用給定的搜尋參數在頁面上找到元素。
8NoSuchFrame切換到框架的請求無法滿足,因為找不到該框架。
9UnknownCommand找不到請求的資源,或收到使用映射資源不支援的 HTTP 方法的請求。
10StaleElementReference元素指令失敗,因為引用的元素不再附加到 DOM。
11ElementNotVisible無法完成元素指令,因為該元素在頁面上不可見。
12InvalidElementState無法完成元素指令,因為該元素處於無效狀態(例如,嘗試點擊已停用的元素)。
13UnknownError在處理指令時發生未知的伺服器端錯誤。
15ElementIsNotSelectable嘗試選擇無法選擇的元素。
17JavaScriptError執行使用者提供的 JavaScript 時發生錯誤。
19XPathLookupError使用 XPath 搜尋元素時發生錯誤。
21Timeout操作在其逾時到期之前未完成。
23NoSuchWindow切換到不同視窗的請求無法滿足,因為找不到該視窗。
24InvalidCookieDomain非法嘗試在與當前頁面不同的網域下設定 Cookie。
25UnableToSetCookie設定 Cookie 值的請求無法滿足。
26UnexpectedAlertOpen模式對話框已開啟,阻止此操作
27NoAlertOpenError嘗試在未開啟模式對話框時對其進行操作。
28ScriptTimeout腳本在其逾時到期之前未完成。
29InvalidElementCoordinates提供給互動操作的座標無效。
30IMENotAvailableIME 不可用。
31IMEEngineActivationFailedIME 引擎無法啟動。
32InvalidSelector參數為無效的選擇器(例如 XPath/CSS)。
33SessionNotCreatedException無法建立新會話。
34MoveTargetOutOfBounds為移動操作提供的目標超出範圍。

客戶端應將來自伺服器的 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 回應。例如,如果 ID my-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 模式。在這些情況下,伺服器應始終將請求路由到路徑與請求最佳匹配的資源。考慮以下兩個資源路徑

  1. /session/:sessionId/element/active
  2. /session/:sessionId/element/:id

給定這些映射,伺服器應始終將最後一個路徑段為 active 的請求路由到第一個資源。所有其他請求都應路由到第二個資源。

指令參考

指令摘要

HTTP 方法路徑摘要
GET/status查詢伺服器的當前狀態。
POST/session建立新會話。
GET/sessions返回目前活動會話的列表。
GET/session/:sessionId檢索指定會話的功能。
DELETE/session/:sessionId刪除會話。
POST/session/:sessionId/timeouts配置特定類型的操作在中止前可以執行的時間長度,以及
POST/session/:sessionId/timeouts/async_script設定由 /session/:sessionId/execute_async 執行的非同步腳本在中止前允許運行的時間長度,以毫秒為單位,以及
POST/session/:sessionId/timeouts/implicit_wait設定驅動程式在搜尋元素時應等待的時間長度。
GET/session/:sessionId/window_handle檢索當前視窗句柄。
GET/session/:sessionId/window_handles檢索會話可用的所有視窗句柄的列表。
GET/session/:sessionId/url檢索當前頁面的 URL。
POST/session/:sessionId/url導航到新的 URL。
POST/session/:sessionId/forward如果可能,在瀏覽器歷史記錄中向前導航。
POST/session/:sessionId/back如果可能,在瀏覽器歷史記錄中向後導航。
POST/session/:sessionId/refresh刷新當前頁面。
POST/session/:sessionId/execute將 JavaScript 代码片段注入到頁面中,以便在當前選定框架的上下文中執行。
POST/session/:sessionId/execute_async將 JavaScript 代码片段注入到頁面中,以便在當前選定框架的上下文中執行。
GET/session/:sessionId/screenshot擷取當前頁面的螢幕截圖。
GET/session/:sessionId/ime/available_engines列出機器上所有可用的引擎。
GET/session/:sessionId/ime/active_engine取得活動 IME 引擎的名稱。
GET/session/:sessionId/ime/activated指示 IME 輸入目前是否處於活動狀態(而非是否可用)。
POST/session/:sessionId/ime/deactivate停用目前活動的 IME 引擎。
POST/session/:sessionId/ime/activate使可用的引擎(出現在 getAvailableEngines 返回的列表中)處於活動狀態。
POST/session/:sessionId/frame將焦點變更為頁面上的另一個框架。
POST/session/:sessionId/frame/parent將焦點變更為父上下文。
POST/session/:sessionId/window將焦點變更為另一個視窗。
DELETE/session/:sessionId/window關閉當前視窗。
POST/session/:sessionId/window/:windowHandle/size變更指定視窗的大小。
GET/session/:sessionId/window/:windowHandle/size取得指定視窗的大小。
POST/session/:sessionId/window/:windowHandle/position變更指定視窗的位置。
GET/session/:sessionId/window/:windowHandle/position取得指定視窗的位置。
POST/session/:sessionId/window/:windowHandle/maximize如果尚未最大化,則最大化指定視窗。
GET/session/:sessionId/cookie檢索當前頁面可見的所有 Cookie。
POST/session/:sessionId/cookie設定 Cookie。
DELETE/session/:sessionId/cookie刪除當前頁面可見的所有 Cookie。
DELETE/session/:sessionId/cookie/:name刪除具有給定名稱的 Cookie。
GET/session/:sessionId/source取得當前頁面原始碼。
GET/session/:sessionId/title取得當前頁面標題。
POST/session/:sessionId/element從文件根目錄開始,在頁面上搜尋元素。
POST/session/:sessionId/elements從文件根目錄開始,在頁面上搜尋多個元素。
POST/session/:sessionId/element/active取得頁面上目前具有焦點的元素。
GET/session/:sessionId/element/:id描述已識別的元素。
POST/session/:sessionId/element/:id/element從已識別的元素開始,在頁面上搜尋元素。
POST/session/:sessionId/element/:id/elements從已識別的元素開始,在頁面上搜尋多個元素。
POST/session/:sessionId/element/:id/click點擊元素。
POST/session/:sessionId/element/:id/submit提交 FORM 元素。
GET/session/:sessionId/element/:id/text返回元素的可见文本。
POST/session/:sessionId/element/:id/value向元素發送一系列按鍵。
POST/session/:sessionId/keys向活動元素發送一系列按鍵。
GET/session/:sessionId/element/:id/name查詢元素的標籤名稱。
POST/session/:sessionId/element/:id/clear清除 TEXTAREAtext INPUT 元素的值。
GET/session/:sessionId/element/:id/selected確定 OPTION 元素,或類型為 checkboxradiobuttonINPUT 元素目前是否已選取。
GET/session/:sessionId/element/:id/enabled確定元素目前是否已啟用。
GET/session/:sessionId/element/:id/attribute/:name取得元素的屬性值。
GET/session/:sessionId/element/:id/equals/:other測試兩個元素 ID 是否指向相同的 DOM 元素。
GET/session/:sessionId/element/:id/displayed確定元素目前是否顯示。
GET/session/:sessionId/element/:id/location確定元素在頁面上的位置。
GET/session/:sessionId/element/:id/location_in_view確定元素滾動到檢視畫面後在螢幕上的位置。
GET/session/:sessionId/element/:id/size確定元素的尺寸(以像素為單位)。
GET/session/:sessionId/element/:id/css/:propertyName查詢元素計算出的 CSS 屬性的值。
GET/session/:sessionId/orientation取得當前瀏覽器方向。
POST/session/:sessionId/orientation設定瀏覽器方向。
GET/session/:sessionId/alert_text取得目前顯示的 JavaScript alert()confirm()prompt() 對話框的文字。
POST/session/:sessionId/alert_text向 JavaScript prompt() 對話框發送按鍵。
POST/session/:sessionId/accept_alert接受目前顯示的警示對話框。
POST/session/:sessionId/dismiss_alert關閉目前顯示的警示對話框。
POST/session/:sessionId/moveto將滑鼠移動到指定元素的偏移位置。
POST/session/:sessionId/click點擊任何滑鼠按鈕(在上次 moveto 指令設定的座標處)。
POST/session/:sessionId/buttondown點擊並按住滑鼠左鍵(在上次 moveto 指令設定的座標處)。
POST/session/:sessionId/buttonup釋放先前按住的滑鼠按鈕(滑鼠目前所在位置)。
POST/session/:sessionId/doubleclick在目前的滑鼠座標(由 moveto 設定)處雙擊。
POST/session/:sessionId/touch/click在觸控裝置上單擊一下。
POST/session/:sessionId/touch/down手指在螢幕上按下。
POST/session/:sessionId/touch/up手指在螢幕上抬起。
POSTsession/:sessionId/touch/move手指在螢幕上移動。
POSTsession/:sessionId/touch/scroll使用手指運動事件在觸控螢幕上滾動。
POSTsession/:sessionId/touch/scroll使用手指運動事件在觸控螢幕上滾動。
POSTsession/:sessionId/touch/doubleclick使用手指運動事件在觸控螢幕上雙擊。
POSTsession/:sessionId/touch/longclick使用手指運動事件在觸控螢幕上長按。
POSTsession/:sessionId/touch/flick使用手指運動事件在觸控螢幕上滑動。
POSTsession/:sessionId/touch/flick使用手指運動事件在觸控螢幕上滑動。
GET/session/:sessionId/location取得當前地理位置。
POST/session/:sessionId/location設定當前地理位置。
GET/session/:sessionId/local_storage取得儲存空間的所有鍵。
POST/session/:sessionId/local_storage為給定的鍵設定儲存空間項目。
DELETE/session/:sessionId/local_storage清除儲存空間。
GET/session/:sessionId/local_storage/key/:key取得給定鍵的儲存空間項目。
DELETE/session/:sessionId/local_storage/key/:key移除給定鍵的儲存空間項目。
GET/session/:sessionId/local_storage/size取得儲存空間中項目的數量。
GET/session/:sessionId/session_storage取得儲存空間的所有鍵。
POST/session/:sessionId/session_storage為給定的鍵設定儲存空間項目。
DELETE/session/:sessionId/session_storage清除儲存空間。
GET/session/:sessionId/session_storage/key/:key取得給定鍵的儲存空間項目。
DELETE/session/:sessionId/session_storage/key/:key移除給定鍵的儲存空間項目。
GET/session/:sessionId/session_storage/size取得儲存空間中項目的數量。
POST/session/:sessionId/log取得給定日誌類型的日誌。
GET/session/:sessionId/log/types取得可用的日誌類型。
GET/session/:sessionId/application_cache/status取得 html5 應用程式快取的狀態。

指令詳細資訊

/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} 描述伺服器一般狀態的物件。

/session

POST /session

建立新會話。伺服器應嘗試建立最符合所需和必要功能的會話。必要功能比所需功能具有更高的優先順序,並且必須設定才能建立會話。
JSON 參數
desiredCapabilities - {object} 描述會話 期望的能力 的物件。
requiredCapabilities - {object} 描述會話 必要的能力 的物件 (選用)。
返回
{object} 描述會話 能力 的物件。
潛在錯誤
SessionNotCreatedException - 如果無法設定必要的能力。

/sessions

GET /sessions

傳回目前作用中會話的清單。每個會話將以 JSON 物件清單形式傳回,並包含以下鍵

類型描述
id字串會話 ID。
capabilities物件描述會話 能力 的物件。
返回
{Array.<Object>} 目前作用中會話的清單。

/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 - 如果指令碼擲回錯誤。

/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 事件。

/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

將焦點變更為頁面上的另一個框架。如果框架 idnull,伺服器
應切換至頁面的預設內容。
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

設定 Cookie。如果未指定 cookie 路徑,則應設定為 "/"。同樣地,如果省略網域,則應預設為目前頁面的網域。
URL 參數
:sessionId - 要將命令路由至的會話 ID。
JSON 參數
cookie - {object} 定義要新增 Cookie 的 JSON 物件

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 - 如果目前選取的視窗已關閉。

/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 選擇器的元素。
idID
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 物件。

/session/:sessionId/elements

NoSuchElement - 如果找不到元素。

XPathLookupError - 如果使用 XPath 且輸入的表達式無效。

策略描述
class namePOST /session/:sessionId/elements
css selector從文件根目錄開始,在頁面上搜尋多個元素。找到的元素將以 WebElement JSON 物件形式傳回。下表列出每個伺服器應支援的定位器策略。元素應以在 DOM 中找到的順序傳回。
idclass name
name傳回 class name 包含搜尋值的所有元素;不允許複合類別名稱。
NAMEcss selector
link text傳回符合 CSS 選擇器的所有元素。
partial link textID
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 選擇器的元素。
idID
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 物件。

/session/:sessionId/element/:id/elements

POST /session/:sessionId/element/active

取得頁面上目前具有焦點的元素。該元素將以 WebElement JSON 物件形式傳回。

策略描述
class namePOST /session/:sessionId/elements
css selector從文件根目錄開始,在頁面上搜尋多個元素。找到的元素將以 WebElement JSON 物件形式傳回。下表列出每個伺服器應支援的定位器策略。元素應以在 DOM 中找到的順序傳回。
idclass name
name傳回 class name 包含搜尋值的所有元素;不允許複合類別名稱。
NAMEcss selector
link text傳回符合 CSS 選擇器的所有元素。
partial link textID
tag name{ELEMENT:string} 作用中元素的 WebElement JSON 物件。
URL 參數
:sessionId - 要將命令路由至的會話 ID。
tag name
JSON 參數
xpath
傳回符合 XPath 表達式的元素。
返回
NAME
潛在錯誤
NoSuchWindow - 如果目前選取的視窗已關閉。
傳回 tag name 符合搜尋值的所有元素。
{ELEMENT:string} 已定位元素的 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/clickElementNotVisible - 如果參照的元素在頁面上不可見(被 CSS 隱藏、寬度為 0 或高度為 0)
POST /session/:sessionId/element/:id/submit提交 FORM 元素。submit 命令也可以應用於任何為 FORM 元素後代的元素。
GET /session/:sessionId/element/:id/textPOST /session/:sessionId/element/:id/value
可以指定任何 UTF-8 字元,但是,如果伺服器不支援原生按鍵事件,則應模擬標準美式鍵盤配置的按鍵。Unicode 私用區 代碼點 0xE000-0xF8FF 用於表示可按下的非文字按鍵(請參閱下表)。NULL
U+E000Cancel
U+E001清除
U+E002Back space
U+E003Tab
U+E004Clear
U+E005Return1
代碼
U+E006Enter1
U+E007Shift
U+E008Control
U+E009Alt
U+E00APause
U+E00BEscape
U+E00CSpace
U+E00DPageup
U+E00EPagedown
U+E00FEnd
U+E010Home
U+E011Left arrow
U+E012Up arrow
代碼
U+E013Right arrow
U+E014Down arrow
U+E015Insert
U+E016Delete
U+E017Semicolon
U+E018Equals
U+E019Numpad 0
U+E01ANumpad 1
U+E01BNumpad 2
U+E01CNumpad 3
代碼
U+E01DNumpad 4
U+E01ENumpad 5
U+E01FNumpad 6
U+E020Numpad 7
U+E021Numpad 8
U+E022Numpad 9
代碼
U+E023Multiply
U+E024Add
U+E025Separator
U+E026Subtract
U+E027Decimal
U+E028Divide
U+E029F1
U+E031F2
U+E032F3
U+E033F4
U+E034F5
U+E035F6
U+E036F7
U+E037

F8

  • U+E038
  • F9
  • U+E039
  • F10
  • U+E03A
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 元素,或類型為 checkboxradiobuttonINPUT 元素目前是否已選取。
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

將按鍵筆劃序列傳送到作用中元素。此命令在各方面都與 send keys 命令相似,除了隱含終止:修飾鍵不會在呼叫結束時釋放。相反地,修飾鍵的狀態在呼叫之間保持不變,因此可以在按下修飾鍵時執行滑鼠互動。
URL 參數
:sessionId - 要將命令路由至的會話 ID。
tag name
返回
value - {Array.<string>} 要傳送的按鍵序列。該序列在 send keys 命令中定義。
潛在錯誤
NoSuchWindow - 如果目前選取的視窗已關閉。
傳回 tag name 符合搜尋值的所有元素。

/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

清除 TEXTAREAtext 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 符合搜尋值的所有元素。

/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 物件形式傳回,並帶有 xy 屬性。

{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 物件形式傳回,並帶有 widthheight 屬性。

{width:number, height:number} 元素的寬度和高度,以像素為單位。

向 JavaScript prompt() 對話框發送按鍵。
URL 參數
:sessionId - 要將命令路由至的會話 ID。
JSON 參數
GET /session/:sessionId/element/:id/css/:propertyName
潛在錯誤
判斷元素的尺寸(以像素為單位)。尺寸將以 JSON 物件形式傳回,並帶有 widthheight 屬性。

/session/:sessionId/accept_alert

查詢元素計算後的 CSS 屬性值。要查詢的 CSS 屬性應使用 CSS 屬性名稱指定,而非 JavaScript 屬性名稱(例如,background-color 而不是 backgroundColor)。

{string} 指定 CSS 屬性的值。
URL 參數
:sessionId - 要將命令路由至的會話 ID。
潛在錯誤
判斷元素的尺寸(以像素為單位)。尺寸將以 JSON 物件形式傳回,並帶有 widthheight 屬性。

/session/:sessionId/dismiss_alert

GET /session/:sessionId/orientation

取得目前的瀏覽器方向。伺服器應傳回 ScreenOrientation 中定義的有效方向值:{LANDSCAPE|PORTRAIT}
URL 參數
:sessionId - 要將命令路由至的會話 ID。
潛在錯誤
判斷元素的尺寸(以像素為單位)。尺寸將以 JSON 物件形式傳回,並帶有 widthheight 屬性。

/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

取得指定日誌類型的日誌。日誌緩衝區會在每次請求後重置。
URL 參數
:sessionId - 要將命令路由至的會話 ID。
JSON 參數
type - {string} 日誌類型。此為必填項目。
返回
{Array.<object>} 日誌條目的列表。

/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}
上次修改日期:2022 年 1 月 10 日:更多維基 (#907) [部署網站] (adcf706a1ad)