Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
WebDriver は、ユーザーエージェントの 内省および制御を可能にするリモート制御インターフェイスである。 これは、アウトオブプロセスのプログラムが Web ブラウザーの振る舞いを遠隔から指示する方法として、 プラットフォームおよび言語に中立なワイヤープロトコルを提供する。
Web 文書内の DOM 要素を発見および操作し、 ユーザーエージェントの振る舞いを制御するための 一連のインターフェイスが提供される。 これは主に、Web 作者が、別個の制御プロセスから ユーザーエージェントを自動化するテストを書くことを 可能にすることを意図しているが、ブラウザー内スクリプトが — 場合によっては別個の — ブラウザーを制御できるようにする方法で 用いることもできる。
この節は、この文書の公開時点における ステータスを説明する。現在の W3C 出版物の一覧およびこの技術報告の最新改訂版は、 W3C 標準およびドラフト 索引にある。
この文書は、Browser Testing and Tools Working Group により、 勧告 トラックを用いた 作業草案として公開された。
作業草案としての公開は、 W3C およびその会員による 承認を意味しない。
これはドラフト文書であり、いつでも他の文書によって 更新、置換、または廃止される可能性がある。この文書を 作業中のもの以外として引用することは不適切である。
この文書は、 W3C Patent Policy の下で運営される グループによって作成された。 W3C は、 そのグループの成果物に関連して行われた 特許開示の公開一覧 を維持している。そのページには 特許を開示するための手順も含まれる。ある特許が 必須請求項 を含むと実際に知っている個人は、 W3C Patent Policy の 6 節 に従ってその情報を開示しなければならない。
この文書は、 2025 年 8 月 18 日版 W3C Process Document によって管理される。
この節は非規範的である。
WebDriver 標準は、いくつかの設計目標に従おうとする:
この仕様は、広く使われている Selenium WebDriver ブラウザー自動化フレームワークに由来する。 Selenium は長く存続しているプロジェクトであり、 その歴史と利用範囲の広さにより、 期待される機能が広範囲に及ぶ。 この仕様は、これらの期待をその設計に反映している。 改善または明確化が行われた箇所では、 Selenium WebDriver の既存ユーザーが 予期しない破壊的変更を避けられるよう、慎重に行われている。
この仕様の最大の想定利用者層は、 ブラウザーの自動化に依存する自動テストや 監視、負荷テストなどのその他ツールを書く ソフトウェア開発者およびテスターである。 そのため、要素への入力 や要素のクリックなどの一般的なタスクを 単純化するコマンドを提供するよう配慮されている。
WebDriver は、完全には ECMAScript で実装できない機能を 自動化する目的で、他者がプロトコルへの拡張を定義するための仕組みを提供する。 これにより、他の Web 標準が新しいプラットフォーム機能の自動化を サポートできる。また、ベンダーが自らのブラウザーに固有の機能を 公開することも可能になる。
非規範的と明示された節に加え、この仕様におけるすべての作成ガイドライン、図、例、および注記は 非規範的である。この仕様のそれ以外のすべては規範的である。
アルゴリズムまたは具体的な手順として表現された 適合要件は、最終結果が等価である限り、 任意の方法で実装してよい。 この文書のアルゴリズムは通常、性能ではなく 読みやすさを念頭に置いて書かれている。
式において、すべての数は整数であり、 加算は “+” で、 減算は “−” で、 除算は “÷” で、 ビット単位 OR は “|” で表される。 文字 “(” および “)” は、これらの文脈における論理的なグループ化を示すために用いられる。
数学関数 min(value, value[, value]) は、2 つ以上の値のうち最小の項目を返す。 逆に、関数 max(value, value[, value]) は、2 つ以上の値のうち最大の項目を返す。
数学関数 floor(value) は、正の無限大に最も近い整数のうち、 value より大きくない最大の整数を生成する。
Universally Unique Identifier (UUID) は、中央登録プロセスを必要としない 128 ビット長の URN である。 UUID の 生成とは、 真にランダムまたは擬似ランダムな数から UUID を作成すること、 およびそれを文字列表現へ変換することを意味する。 [RFC4122]
Unix Epoch は、The Open Group Base Specifications Issue 7 4.15 節 (IEEE Std 1003.1) で説明されているように、 エポックから経過した秒数を近似する値である。
integer は、Number のうち、 ToInteger 操作の下で 変化しないものである。
ECMAScript プロパティの 初期値 は、そのプロパティに対してプラットフォームが定義する値、 すなわちコンテンツスクリプトによるシャドーイングが存在しない場合に そのプロパティが持つ値である。
ブラウザー chrome は、アクセスされる Web コンテンツとは区別される、 ユーザーがユーザーエージェント自体と 相互作用するための表現を指す 非規範的な用語である。 ブラウザー chrome 要素 の例には、これらに限定されないが、 ツールバー(ブックマークツールバーなど)、 メニュー(ファイルメニューやコンテキストメニューなど)、 ボタン(戻るボタンや進むボタンなど)、 ドアハンガー(セキュリティや証明書インジケーターなど)、 および装飾(オペレーティングシステムのウィジェット境界など)が含まれる。
webdriver-active flag は、ユーザーエージェントがリモート制御下にあるとき true に設定される。 初期値は false である。
WebIDL
Navigator includes NavigatorAutomationInformation;
NavigatorAutomationInformation
インターフェイスは、
WorkerNavigator で
公開されるべきではない。
webdriver-active flag が設定されている場合は true を返し、 そうでなければ false を返す。
WebDriver プロトコルは、次の間の通信から成る:
ローカルエンドはプロトコルのクライアント側を表し、 通常は WebDriver プロトコル の上に API を提供する 言語固有のライブラリの形をとる。 この仕様は、ワイヤープロトコルのレベルを超える それらのライブラリの詳細について、いかなる制限も課さない。
リモート エンドについて、標準は ノード種別として知られる、2 つの広い適合 クラスを定義する:
すべてのリモートエンドのノード種別は、 ローカルエンド の観点から、リモートエンドとブラックボックス的に区別不能でなければならず、 したがってワイヤープロトコルの観点で リモートエンドに対する要件に 拘束される。
リモートエンドの 準備完了 状態は、 それが新しい接続を受け入れられるかどうかを示す。それは、 実装がエンドポイントノードであり、 アクティブな HTTP セッションのリストが空でない場合、またはそれ以外で リモートエンドが、 新規セッションを作成しようとしても 失敗する状態にあることが分かっている場合、false でなければならない。 それ以外のすべての場合、それは true でなければならない。
中間ノードが、複数のエンドポイントノードを 管理するマルチプレクサーである場合、これは、例えば最大容量に達した場合などに、より多くの セッションを 提供できる能力を示す可能性がある。
WebDriver のリモートエンドは、 エンドポイントが異なるコマンドに対応付けられる、 HTTP 準拠のワイヤープロトコルを 提供しなければならない。
この標準はリモートエンドのプロトコルのみを定義するため、 ローカルエンドをどのように実装すべきかについて いかなる要求も課さない。 ローカル エンドは、リモートエンドのプロトコルを話せる範囲でのみ 互換であることが期待される。 それらが公開するユーザー向け API については、いかなる要件も課されない。
この仕様のさまざまな部分は、段階的なアルゴリズムとして書かれている。 これらのアルゴリズムの詳細には規範的な意味はない。 実装は、この仕様と等価な出力を生成する任意の実装戦略を 自由に採用してよい。 特に、この文書のアルゴリズムは性能ではなく 読みやすさに最適化されている。
値を返すアルゴリズムが失敗可能である場合、 それらは success または error のいずれかを 返すものとして書かれる。 success 値は、返される値を包含する関連付けられた data フィールドを持つ。 一方、error 値は、関連付けられたエラーコードを持つ。
失敗可能なアルゴリズムを呼び出すとき、 構文 “Let result be the result of trying to call algorithm” は、 次と等価である。
temp を、algorithm を呼び出した結果とする。
temp が error である場合は temp を返す。 そうでなければ、result を temp の data フィールドとする。
object から name を持つ プロパティを 取得することの結果は、 object 上で Object.[[GetOwnProperty]](name) を 呼び出した結果と同じであると定義される。
object から引数 name および default を用いて
デフォルト付きでプロパティを取得することの結果は、
object 上で
Object.[[GetOwnProperty]](name)
を呼び出した結果が undefined 以外の値であればその結果と同じであり、
そうでなければ default であると定義される。
object 上で引数 name および value を用いて プロパティを設定することは、 object 上で Object.[[Put]](name, value) を呼び出すことと 同じであると定義される。
JSON Object 型の object による JSON 直列化の結果は、 stringify(object) を呼び出した結果として定義される。
text による JSON 逆直列化の結果は、 parse(text) を呼び出した結果として 定義される。
WebDriver プロトコルはコマンドに編成される。 この仕様で定義されたメソッドおよびテンプレートを持つ各 HTTP リクエストは、 単一のコマンドを表す。 したがって各コマンドは単一のHTTP レスポンスを生成する。
コマンドに応答して、 リモートエンドは、 リモートエンド手順として知られる 一連の動作を実行する。 これらは、リモートエンドが特定の コマンドを受信したときに行う動作の列を提供する。
リモートエンドは、 クライアントからリクエストを読み取りレスポンスを書き込む HTTP サーバーであり、 通常は TCP ソケット越しに行われる。 この仕様の目的上、特定のローカルエンドとリモートエンドの間のデータ伝送は、 接続によってモデル化される。 リモートエンドは、その接続に対して バイトを書き込むこと、および バイトを読み取ることができる。 ただし、この接続がどのように機能し、 どのように確立されるかについての正確な詳細は範囲外である。
接続が確立された後、 リモートエンドは 次の手順を実行しなければならない:
データから完全なHTTP リクエストを構築できるまで、 接続から バイトを読み取る。 request を、[RFC7230] の要件に従って、受信したデータから構築された リクエストとする。 完全なHTTP リクエストを 構築できない場合、 リモートエンドは、 接続を閉じるか、 ステータスコード 500 の HTTP レスポンスを返すか、または error を エラー コード unknown error で返さなければならない。
request match を、request の メソッドおよび URL を引数として リクエストを照合するアルゴリズムの結果とする。
request match が error 型である場合、 request match のエラーコードで エラーを送信し、 continue する。
そうでなければ、command および URL variables を request match のデータとする。
session を null とする。
URL variables が "session id" を
含む場合:
この条件は、New Session および Status コマンドと、特定のセッション上で 動作しない任意の拡張コマンドを除外することを 意図している。
session id を URL variables["session id"] とする。
アクティブセッションのリスト内の 各 active session について:
active session のセッション IDが session id と等しい場合、session を active session とし、break する。
session が null である場合、
エラーコード
invalid session id で
エラーを送信し、
その後 continue する。
リモートエンドの リクエスト キューに、次の手順を実行するタスクを キューに入れる:
parameters を null とする。
request のメソッドが POST である場合:
parse result を、request の 本文を引数として JSON として解析することの 結果とする。この処理が例外を投げた場合、 エラーコード invalid argument を持つ error を返し、 この全体アルゴリズムのステップ 1 に戻る。
parse result が Object でない場合、 エラーコード invalid argument で エラーを送信し、 この全体アルゴリズムのステップ 1 に戻る。
そうでなければ、parameters を parse result とする。
navigate result を、session を用いて ナビゲーションの完了を 待つことの結果とする。
navigate result が error である場合、 navigate result のエラー コードに等しいエラーコードで エラーを送信し、 return する。
response result を、command について session、URL variables、および parameters を用いて リモートエンド 手順を実行することにより得られる戻り値とする。
response result が error である場合、 response result のエラーコードに等しい エラーコードで エラーを送信し、 return する。
Assert: response result は success である。
response data を response result の data とする。
ステータス 200 および response data で レスポンスを送信する。
error code および任意の error data 辞書を用いて エラーを 送信することが要求された場合、 リモートエンドは次の手順を実行しなければならない:
status および name を、 error code に対する エラーレスポンスデータとする。
message を、エラーの理由についての人間可読な説明を含む 実装定義の文字列とする。
stacktrace を、エラーが発生した時点でのアクティブなスタックフレームの スタックトレース報告を含む実装定義の文字列とする。
body を、次のプロパティで初期化された新しい JSON Object とする:
error"
message"
stacktrace"
error data 辞書が何らかのエントリを含む場合、
body 上の "data" フィールドを、
その辞書で埋められた新しい JSON
Object に設定する。
status および body を引数として レスポンスを送信する。
引数 status および data を用いて レスポンスを送信する ことが要求された場合、 リモートエンドは次の手順を実行しなければならない:
response を新しいレスポンスとする。
response の HTTP ステータスを status に設定し、 ステータスメッセージを ステータスコード レジストリにおける status の説明に対応する文字列に設定する。
次の値を用いて、response のヘッダーを 名前および 値で 設定する:
Content-Type
application/json; charset=utf-8"
Cache-Control
no-cache"
response の本文を、
キー "value" が data に設定された JSON
Object の
JSON
直列化を
UTF-8 エンコードしたものとする。
response bytes を、[RFC7230] の規則に従って response を直列化した結果のバイト列とする。
リクエストルーティングとは、 HTTP リクエストから、 そのリクエストが表すコマンドを実装するために必要な 一連の手順へ至る過程である。
リモートエンドは、関連付けられた URL 接頭辞を持つ。 これは、そのリモートエンド上の すべての WebDriver 定義 URL に対する接頭辞として用いられる。 これは undefined または path-absolute URL の いずれかでなければならない。
method および URL が与えられたときに リクエストを 照合するためには、 次の手順を実行しなければならない:
endpoints を、 エンドポイント表内の各行を含むリストとする。
URL 接頭辞とエントリの URI テンプレートを連結したものが、 URL のパスと等しい有効な展開を持たない endpoints 内の各エントリを削除する。
endpoints にエントリが存在しない場合、 エラーコード unknown command を持つ error を返す。
method 列が method と等しくない endpoints 内の各エントリを削除する。
endpoints にエントリが存在しない場合、 エラーコード unknown method を持つ error を返す。
この時点で endpoints 内にはちょうど 1 つのエントリが存在する。 entry をこのエントリとする。
URI template を、URL 接頭辞と entry の URI template の連結とする。
command を entry の コマンドとする。
URL variables を、URI template 内に定義された各変数について 1 つの エントリを持つ マップとする。 そのエントリ名はテンプレート変数名に等しく、 エントリ値は、URI template を展開して URL のパスに一致させるために必要な 変数値である。
command および URL variables をデータとして持つ success を返す。
次のエンドポイント表は、 各エンドポイント ノードコマンドに対する メソッド および URI テンプレートを列挙する。 拡張コマンドは、この表に暗黙的に 追加される。
| メソッド | URI テンプレート | コマンド |
|---|---|---|
| POST | /session | 新規セッション |
| DELETE | /session/{session id} | セッションを削除 |
| GET | /status | ステータス |
| GET | /session/{session id}/timeouts | タイムアウトを取得 |
| POST | /session/{session id}/timeouts | タイムアウトを設定 |
| POST | /session/{session id}/url | 移動先へナビゲート |
| GET | /session/{session id}/url | 現在の URL を取得 |
| POST | /session/{session id}/back | 戻る |
| POST | /session/{session id}/forward | 進む |
| POST | /session/{session id}/refresh | 更新 |
| GET | /session/{session id}/title | タイトルを取得 |
| GET | /session/{session id}/window | ウィンドウハンドルを取得 |
| DELETE | /session/{session id}/window | ウィンドウを閉じる |
| POST | /session/{session id}/window | ウィンドウへ切り替え |
| GET | /session/{session id}/window/handles | ウィンドウハンドル群を取得 |
| POST | /session/{session id}/window/new | 新規ウィンドウ |
| POST | /session/{session id}/frame | フレームへ切り替え |
| POST | /session/{session id}/frame/parent | 親フレームへ切り替え |
| GET | /session/{session id}/window/rect | ウィンドウ矩形を取得 |
| POST | /session/{session id}/window/rect | ウィンドウ矩形を設定 |
| POST | /session/{session id}/window/maximize | ウィンドウを最大化 |
| POST | /session/{session id}/window/minimize | ウィンドウを最小化 |
| POST | /session/{session id}/window/fullscreen | ウィンドウを全画面化 |
| GET | /session/{session id}/element/active | アクティブ要素を取得 |
| GET | /session/{session id}/element/{element id}/shadow | 要素のシャドウルートを取得 |
| POST | /session/{session id}/element | 要素を検索 |
| POST | /session/{session id}/elements | 要素群を検索 |
| POST | /session/{session id}/element/{element id}/element | 要素から要素を検索 |
| POST | /session/{session id}/element/{element id}/elements | 要素から要素群を検索 |
| POST | /session/{session id}/shadow/{shadow id}/element | シャドウルートから要素を検索 |
| POST | /session/{session id}/shadow/{shadow id}/elements | シャドウルートから要素群を検索 |
| GET | /session/{session id}/element/{element id}/selected | 要素が選択されているか |
| GET | /session/{session id}/element/{element id}/attribute/{name} | 要素属性を取得 |
| GET | /session/{session id}/element/{element id}/property/{name} | 要素プロパティを取得 |
| GET | /session/{session id}/element/{element id}/css/{property name} | 要素の CSS 値を取得 |
| GET | /session/{session id}/element/{element id}/text | 要素テキストを取得 |
| GET | /session/{session id}/element/{element id}/name | 要素タグ名を取得 |
| GET | /session/{session id}/element/{element id}/rect | 要素矩形を取得 |
| GET | /session/{session id}/element/{element id}/enabled | 要素が有効か |
| GET | /session/{session id}/element/{element id}/computedrole | 算出ロールを取得 |
| GET | /session/{session id}/element/{element id}/computedlabel | 算出ラベルを取得 |
| POST | /session/{session id}/element/{element id}/click | 要素クリック |
| POST | /session/{session id}/element/{element id}/clear | 要素クリア |
| POST | /session/{session id}/element/{element id}/value | 要素にキー送信 |
| GET | /session/{session id}/source | ページソースを取得 |
| POST | /session/{session id}/execute/sync | スクリプトを実行 |
| POST | /session/{session id}/execute/async | 非同期スクリプトを実行 |
| GET | /session/{session id}/cookie | すべての Cookie を取得 |
| GET | /session/{session id}/cookie/{name} | 名前付き Cookie を取得 |
| POST | /session/{session id}/cookie | Cookie を追加 |
| DELETE | /session/{session id}/cookie/{name} | Cookie を削除 |
| DELETE | /session/{session id}/cookie | すべての Cookie を削除 |
| POST | /session/{session id}/actions | アクションを実行 |
| DELETE | /session/{session id}/actions | アクションを解放 |
| POST | /session/{session id}/alert/dismiss | アラートを破棄 |
| POST | /session/{session id}/alert/accept | アラートを受け入れ |
| GET | /session/{session id}/alert/text | アラートテキストを取得 |
| POST | /session/{session id}/alert/text | アラートテキストを送信 |
| GET | /session/{session id}/screenshot | スクリーンショットを撮影 |
| GET | /session/{session id}/element/{element id}/screenshot | 要素スクリーンショットを撮影 |
| POST | /session/{session id}/print | ページを印刷 |
エラーは、
WebDriver プロトコルにおいて、
4xx または 5xx 範囲のHTTP ステータスを持つ
HTTP レスポンスと、
エラーの詳細を含む
JSON 本文によって表される。
本文は JSON Object であり、
"value" という名前のフィールドを持つ。
その値は、3 つ、場合によっては 4 つのフィールドを持つオブジェクトである:
error"。エラーコードを
示す文字列を含む。
message"。発生したエラーの種類についての人間可読な説明を持つ、
実装定義の文字列を含む。
stacktrace"。エラーが発生した時点でのアクティブなスタックフレームの
スタックトレース報告を持つ実装定義の文字列を含む。
data"。これは、エラーの診断に役立つ追加の
エラーデータを持つ JSON
Object
である。
次の表は、各エラーコード、
それに関連付けられたHTTP ステータス、
JSON error コード、
およびエラーの非規範的な説明を列挙する。
特定のエラーコードに対する
エラー
レスポンスデータは、
そのエラーコードに
対応する行の HTTP Status 列および
JSON Error Code 列の値である。
| エラーコード | HTTP ステータス | JSON エラーコード | 説明 |
|---|---|---|---|
| element click intercepted | 400 | element click intercepted
|
Element Click コマンドは 完了できなかった。 イベントを受け取る要素が、クリックを要求された要素を 覆っているためである。 |
| element not interactable | 400 | element not interactable
|
要素がポインターまたは キーボードで 相互作用可能でないため、 コマンドを完了できなかった。 |
| insecure certificate | 400 | insecure certificate
|
ナビゲーションにより ユーザーエージェントが証明書警告に遭遇した。 これは通常、期限切れまたは無効な TLS 証明書の結果である。 |
| invalid argument | 400 | invalid argument
|
コマンドに渡された引数が 無効または不正な形式である。 |
| invalid cookie domain | 400 | invalid cookie domain
|
現在のページとは異なるドメインの下に Cookie を設定しようとする 不正な試みが行われた。 |
| invalid element state | 400 | invalid element state
|
要素が無効な状態にあるため、コマンドを完了できなかった。 例えば、クリアしようとした要素が 編集可能かつリセット可能の両方でない場合などである。 |
| invalid selector | 400 | invalid selector
|
引数が無効なセレクターであった。 |
| invalid session id | 404 | invalid session id
|
指定された session id が アクティブセッションのリストにない場合に発生する。 これは、セッションが存在しないか、またはアクティブでないことを 意味する。 |
| javascript error | 500 | javascript error
|
ユーザーによって提供された JavaScript の実行中にエラーが発生した。 |
| move target out of bounds | 500 | move target out of bounds
|
マウス相互作用の対象がブラウザーのビューポート内になく、 そのビューポート内に持ち込むこともできない。 |
| no such alert | 404 | no such alert
|
モーダルダイアログが開いていないときに、 それに対して操作を行おうとした。 |
| no such cookie | 404 | no such cookie
|
session の現在の閲覧 コンテキストのアクティブ文書の 関連 Cookieの中に、 与えられたパス名に一致する Cookie が見つからなかった。 |
| no such element | 404 | no such element
|
与えられた検索パラメーターを用いて、 ページ上の要素を見つけることができなかった。 |
| no such frame | 404 | no such frame
|
フレームが見つからないため、 フレームへ切り替えるコマンドを満たすことができなかった。 |
| no such window | 404 | no such window
|
ウィンドウが見つからないため、 ウィンドウへ切り替えるコマンドを満たすことができなかった。 |
| no such shadow root | 404 | no such shadow root
|
その要素はシャドウルートを持たない。 |
| script timeout error | 500 | script timeout
|
スクリプトがタイムアウトの期限切れ前に完了しなかった。 |
| session not created | 500 | session not created
|
新しいセッションを作成できなかった。 |
| stale element reference | 404 | stale element reference
|
参照された要素がもはや DOM に接続されていないため、 コマンドが失敗した。 |
| detached shadow root | 404 | detached shadow root
|
参照されたシャドウルートがもはや DOM に接続されていないため、 コマンドが失敗した。 |
| timeout | 500 | timeout
|
操作がタイムアウトの期限切れ前に完了しなかった。 |
| unable to set cookie | 500 | unable to set cookie
|
Cookie の値を設定するコマンドを満たすことができなかった。 |
| unable to capture screen | 500 | unable to capture screen
|
画面キャプチャが不可能になった。 |
| unexpected alert open | 500 | unexpected alert open
|
モーダルダイアログが開いており、この操作をブロックしていた。 |
| unknown command | 404 | unknown command
|
リモートエンドがそれを認識していないため、 コマンドを実行できなかった。 |
| unknown error | 500 | unknown error
|
コマンドの処理中に、 リモートエンド内で 不明なエラーが発生した。 |
| unknown method | 405 | unknown method
|
要求されたコマンドは既知の URL に一致したが、 その URL に対するいずれのメソッドにも一致しなかった。 |
| unsupported operation | 500 | unsupported operation
|
適切に実行されるべきコマンドが、 何らかの理由でサポートできないことを示す。 |
エラーデータ 辞書は、error オブジェクトに任意で含めることができる、 文字列キーから JSON 直列化可能な値への対応付けである。
この節で定義される用語を用いて、他者は標準プロトコルと シームレスに統合される追加コマンドを定義してよい。 これにより、ベンダーは自らのユーザーエージェントに固有の機能を 公開でき、また他の Web 標準は新しいプラットフォーム機能を自動化するための コマンドを定義できる。
この方法で定義されるコマンドは 拡張 コマンドと呼ばれ、 他のコマンドと異なる振る舞いはしない。 それぞれが専用の HTTP エンドポイントと一組の リモートエンド手順を持つ。
各拡張コマンドは、 関連付けられた 拡張コマンド URI テンプレートを持つ。 これは URI Template 文字列であり、 そのコマンドが行うことにある程度似ているべきである。 この値は、HTTP メソッドおよび拡張コマンドとともに、 エンドポイント表に追加され、 したがって他の組み込みコマンドと同じ リクエストルーティングの 規則に従う。
他の実装との潜在的なリソース競合を避けるため、 ベンダー固有の拡張 コマンド URI テンプレートは、ベンダーおよび UA を一意に識別する 1 つ以上のパスセグメントで始まらなければならない。 ベンダーは、[CSS21] で概説されているように、特に ベンダーキーワードに関する 4.1.2.2 節において、 追加文字なしのベンダー接頭辞をこのパス要素の名前として用い、 ベンダーが選択した UA 識別子を含めることが推奨される。
他の仕様は、追加 WebDriver ケイパビリティを定義してよい。
定義される各ケイパビリティは、
":"(コロン)文字を含まない文字列である
ケイパビリティ名と、
JSON 型を持つ単一の引数 value を取り、
逆直列化されたケイパビリティ値を包む
success
または
error の
いずれかを返す一連の手順である
追加ケイパビリティ逆直列化
アルゴリズムを持たなければならない。
追加 WebDriver ケイパビリティは、
一致ケイパビリティ直列化アルゴリズムを
定義してもよい。
これは、ケイパビリティが現在の実装によって一致するかどうかを判定し、
ユーザーに返す任意の算出値を提供するために用いられる一連の手順である。
この一連の手順は、対応する
追加
ケイパビリティ逆直列化アルゴリズムの出力である
単一の引数 value を取り、
ケイパビリティが一致しないことを示す
null、または
ケイパビリティが一致する場合は非 null の JSON 直列化可能な値を返す。
他の仕様は、WebDriver 新規セッションアルゴリズムを定義してもよい。 これは新しいセッションが作成された直後、かつ 新規セッションレスポンスが リモートエンドに送信される前に呼び出される。 これらのアルゴリズムは、確立される WebDriver セッションを表す session と、 リモートエンドに返される ケイパビリティオブジェクトである capabilities を用いて呼び出される。 そのようなアルゴリズムが、同じ仕様によって定義された 追加 WebDriver ケイパビリティである名前を持つ ケイパビリティオブジェクト内の任意のエントリを変更することは許可される。
リモートエンドは、
構成を提供するため、またはその他のベンダー固有の必要を満たすために用いられる
追加のケイパビリティである
拡張ケイパビリティを
導入してもよい。
拡張ケイパビリティのキーは、
実装固有の名前空間を示す ":"(コロン)文字を
含まなければならない。
値は任意の JSON 型でよい。
拡張コマンドと同様に、
拡張ケイパビリティ名前空間を示すために用いられるキーは、
[CSS21]
に列挙されている
ベンダーキーワードに
基づき、文字列内の最初の ":" 文字に先行することが推奨される。
WebDriver の capabilities は、特定の実装がサポートする機能を伝達するために使用される。 ローカル エンドは、新しいセッションを作成するときに、 リモートエンドに 満たすことを要求する機能を定義するために capabilities を使用できる。 同様に、リモートエンドは、セッションの完全な機能セットを 記述するために capabilities を使用する。
次の標準ケイパビリティ表は、 各実装がサポートしなければならないケイパビリティを列挙する。 実装は、追加の拡張ケイパビリティを 定義してよい。
| ケイパビリティ | キー | 値型 | 説明 |
|---|---|---|---|
| ブラウザー名 | "browserName"
|
string | ユーザーエージェントを識別する。 |
| ブラウザーバージョン | "browserVersion"
|
string | ユーザーエージェントのバージョンを識別する。 |
| プラットフォーム名 | "platformName"
|
string | エンドポイントノードの オペレーティングシステムを識別する。 |
| 安全でない TLS 証明書を受け入れる | "acceptInsecureCerts"
|
boolean | ナビゲーション時に、信頼されていない TLS 証明書および自己署名 TLS 証明書が、 セッションの期間中、 暗黙的に信頼されるかどうかを示す。 |
| ページ 読み込み戦略 | "pageLoadStrategy"
|
string | セッションのページ読み込み 戦略を定義する。 |
| プロキシ設定 | "proxy"
|
JSON Object | セッションのプロキシ 設定を定義する。 |
| ウィンドウの寸法指定/位置指定 | "setWindowRect"
|
boolean | リモートエンドが、すべてのサイズ変更および再配置コマンドをサポートするかどうかを示す。 |
| セッションタイムアウト | "timeouts"
|
JSON Object | 特定のセッション操作に課されるタイムアウトを記述する。 |
| 厳密なファイル操作可能性 | "strictFileInteractability"
|
boolean | セッションの厳密なファイル操作可能性を定義する。 |
| 未処理プロンプト動作 | "unhandledPromptBehavior"
|
string | セッションのユーザープロンプト
ハンドラーを記述する。
既定値は "dismiss and notify" である。
|
| ユーザーエージェント | "userAgent"
|
string | エンドポイントノードの既定の User-Agent 値を識別する。 |
プロキシ 構成ケイパビリティは、 主たるケイパビリティ内にネストされた JSON Objectである。 実装は追加のプロキシ構成オプションを定義してよいが、 以下に列挙されるものの意味論を変更してはならない。
| キー | 値型 | 説明 | 妥当な値 |
|---|---|---|---|
proxyType
|
string | プロキシ構成の種類を示す。 | "pac",
"direct",
"autodetect",
"system",
または "manual"。
|
proxyAutoconfigUrl
|
string | が
"pac" と等しい場合に、
プロキシ
自動構成ファイルの URL を定義する。
|
任意のURL。 |
httpProxy
|
string | が
"manual" である場合に、HTTP トラフィック用のプロキシ
ホストを定義する。
|
スキーム "http" 用の
ホストおよび任意のポート。
|
noProxy
|
array | が
"manual" である場合に、プロキシを迂回すべきアドレスを列挙する。
|
任意個数のStringを含む List。 |
sslProxy
|
string | が
"manual" である場合に、暗号化された TLS トラフィック用のプロキシ
ホストを定義する。
|
スキーム "https" 用の
ホストおよび任意のポート。
|
socksProxy
|
string | が
"manual" である場合に、
SOCKS プロキシ用の
プロキシホストを定義する。
|
undefined スキームを持つ ホストおよび任意のポート。 |
socksVersion
|
number | が
"manual" である場合に、
SOCKS プロキシのバージョンを定義する。
|
0 以上 255 以下の任意のinteger。 |
scheme に対する ホストおよび 任意のポートは、 妥当なホスト、任意でそれに続くコロンおよび妥当な ポートであると定義される。 ホストは 資格情報を含むことができる。 ポートが省略され、かつ scheme が既定ポートを持つ場合、 これは暗黙のポートである。そうでなければ、ポートは未定義のままとなる。
"direct" のは、
ブラウザーがプロキシを一切使用すべきでないことを示す。
proxyType
"system" のは、
ブラウザーが基盤となるオペレーティングシステムに構成された
各種プロキシを使用すべきであることを示す。
proxyType
"autodetect" のは、
使用するプロキシが実装固有の方法で検出されるべきであることを示す。
proxyType
引数 parameter を プロキシとして逆直列化するための リモートエンド手順は次の通りである:
parameter が JSON Object でない場合、 エラーコード invalid argument を持つ error を返す。
proxy を、新しい空の プロキシ構成オブジェクトとする。
parameter 内の列挙可能な各自前プロパティについて、 次の副手順を実行する:
key をプロパティの名前とする。
value を、parameter から name という名前の プロパティを 取得することの結果とする。
プロキシ構成表内に
key に一致する key が存在しない場合、
エラーコード
invalid
argument を持つerrorを返す。
value がその key に対する
valid values のいずれでもない場合、
エラー
コード invalid argument を持つ
errorを返す。
proxy 上で プロパティを設定し、 key を value にする。
proxy が "proxyType" に対する
自前プロパティを持たない場合、
エラー
コード invalid argument を持つ
errorを返す。
proxy から "proxyType" という名前の
プロパティを取得することの結果が
"pac" と等しく、かつ proxy が
"proxyAutoconfigUrl" に対する
自前プロパティを持たない場合、
エラーコード
invalid argument を持つ
errorを返す。
proxy が "socksProxy" に対する
自前プロパティを持ち、かつ
"socksVersion" に対する自前プロパティを
持たない場合、
エラー
コード invalid argument を持つ
errorを返す。
proxy をデータとして持つ success を返す。
プロキシ 構成オブジェクトは、 その自前プロパティのうち プロキシ構成内のキーに一致する各ものが、 そのキーに対する妥当性基準を満たす JSON Objectである。
parameters およびセッション 構成フラグ flags が与えられたときに ケイパビリティを 処理するには、エンドポイントノードは 次の手順を実行しなければならない:
capabilities request を、parameters から
"capabilities" という
プロパティを
取得することの結果とする。
capabilities request が JSON Objectでない場合、 エラー コード invalid argument を持つ errorを返す。
required capabilities を、capabilities request から
"alwaysMatch" という
プロパティを
取得することの結果とする。
required capabilities が undefined である場合、 その値を空の JSON Objectに設定する。
required capabilities を、 required capabilities および flag を引数として ケイパビリティを検証することを tryingした結果とする。
all first match capabilities を、capabilities request から
"firstMatch" という
プロパティを
取得することの結果とする。
validated first match capabilities を空の Listとする。
all first match capabilities 内のインデックス付きプロパティに対応する 各 first match capabilities について:
validated capabilities を、 first match capabilities および flags を引数として ケイパビリティを検証することを tryingした結果とする。
validated capabilities を validated first match capabilities に付加する。
merged capabilities を空の Listとする。
validated first match capabilities 内のインデックス付きプロパティに対応する 各 first match capabilities について:
merged を、 required capabilities および first match capabilities を引数として ケイパビリティを マージすることを tryingした結果とする。
merged を merged capabilities に付加する。
merged capabilities 内のインデックス付きプロパティに対応する 各 capabilities について:
matched capabilities を、 capabilities を引数として ケイパビリティを 照合することを tryingした結果とする。
matched capabilities が null でない場合、
matched capabilities をデータとして持つ
success を返す。
引数 capabilities を用いて ケイパビリティを検証することが要求された場合:
capabilities が JSON Object でない場合、 エラーコード invalid argument を持つ errorを返す。
result を空の JSON Objectとする。
capabilities 内の列挙可能な各自前プロパティについて、 次の副手順を実行する:
name をプロパティの名前とする。
value を、capabilities から name という名前の プロパティを 取得することの結果とする。
最初に一致する条件の副手順を実行する:
null
deserialized を null に
設定する。
acceptInsecureCerts"
value が boolean でない場合、 エラーコード invalid argument を持つerrorを返す。そうでなければ、 deserialized を value に設定する。
browserName"
browserVersion"
platformName"
value が string でない場合、 エラーコード invalid argument を持つerrorを返す。そうでなければ、 deserialized を value に設定する。
pageLoadStrategy"
deserialized を、引数 value を用いて ページ 読み込み戦略として逆直列化することを tryingした 結果とする。
proxy"
deserialized を、引数 value を用いて プロキシとして 逆直列化することを tryingした結果とする。
strictFileInteractability"
value が boolean でない場合、 エラーコード invalid argument を持つerrorを返す。そうでなければ、 deserialized を value に設定する
timeouts"
deserialized を、value を用いて タイムアウト構成として 逆直列化することを tryingした結果とする。
unhandledPromptBehavior"
deserialized を、引数 value を用いて 未処理プロンプトの 振る舞いとして逆直列化することを tryingした結果とする。
deserialized を、 name に対応する拡張ケイパビリティについて、 引数 value を用いて 追加 ケイパビリティ逆直列化 アルゴリズムを実行することを tryingした結果とする。
name が実装に知られている場合、 deserialized を、value を実装固有の方法で 逆直列化することをtryingした 結果とする。 そうでなければ、deserialized を value に設定する。
エラーコード invalid argument を持つ errorを返す。
deserialized が null でない場合、
result 上で、名前 name および値
deserialized を持つ
プロパティを設定する。
JSON Object 引数 primary および secondary を用いて ケイパビリティを マージする場合、 エンドポイントノードは次の手順を実行しなければならない:
result を新しい JSON Objectとする。
primary 内の列挙可能な各自前プロパティについて、 次の副手順を実行する:
name をプロパティの名前とする。
value を、primary から name という名前の プロパティを 取得することの結果とする。
secondary が undefined である場合、 result を返す。
secondary 内の列挙可能な各自前プロパティについて、 次の副手順を実行する:
name をプロパティの名前とする。
value を、secondary から name という名前の プロパティを 取得することの結果とする。
primary value を、 primary から name という プロパティを取得することの結果とする。
primary value が undefined でない場合、 エラー コード invalid argument を持つ errorを返す。
result を返す。
JSON Object capabilities および セッション 構成フラグ flags が与えられたときに ケイパビリティを照合する場合、 エンドポイントノードは 次の手順を実行しなければならない:
matched capabilities を、次のエントリを持つ JSON Objectとする:
browserName"
browserVersion"
platformName"
acceptInsecureCerts"
strictFileInteractability"
setWindowRect"
userAgent"
flags が "http" を含む場合、
次のエントリを matched capabilities に追加する:
strictFileInteractability"
任意で、拡張ケイパビリティを matched capabilities にエントリとして追加する。 これらの値は省略されてもよく、すべての 拡張ケイパビリティを追加する要件はない。
capabilities の自前プロパティに対応する 各 name および value について:
match value を value と等しくする。
最初に一致する name の副手順を実行する:
browserName"
value が matched capabilities 内の
"browserName" エントリと等しい文字列でない場合、
nullをデータとして持つ
successを返す。
リモートエンドは、
browserName を正しく決定するために
ブラウザープロセスを開始する必要がある可能性がある。
これを行う前に、軽量なチェックを行うことが望ましい。
browserVersion"
value を、
実装定義の比較アルゴリズムを用いて
matched capabilities 内の "browserVersion" エントリと
比較する。
この比較は、"<", "<=", ">",
および ">=" 演算子を用いてバージョンに制約を置く
value を受け入れるためのものである。
2 つの値が一致しない場合、
nullをデータとして持つ
successを返す。
バージョン比較は実装詳細として残されている。 各ユーザーエージェントは、ユーザーエージェントバージョンを符号化する 方法が衝突する可能性が高く、これらの方式を標準化することは この標準の範囲外だからである。
リモートエンドは、
browserVersion を正しく決定するために
ブラウザープロセスを開始する必要がある可能性がある。
これを行う前に、軽量なチェックを行うことが望ましい。
platformName"
value が matched capabilities 内の
"platformName" エントリと等しい文字列でない場合、
nullをデータとして持つ
successを返す。
次のプラットフォーム名は、よく理解された意味論とともに 一般的に使用されているものであり、 プラットフォーム名について ケイパビリティを 照合する際には、よく知られたオペレーティング システムの妥当な同義語として尊重することで、 最大の相互運用性を達成できる:
| キー | システム |
|---|---|
"linux" |
Linux カーネルに基づく任意のサーバーまたはデスクトップシステム。 |
"mac" |
Apple の macOS の任意のバージョン。 |
"windows" |
デスクトップ版およびモバイル版を含む、Microsoft Windows の任意のバージョン。 |
この一覧は網羅的ではない。
New Session から
ケイパビリティを返すとき、
より具体的な platformName を返すことは妥当であり、
これによりユーザーは、WebDriver 実装が実行されている
オペレーティングシステムを正しく識別できる。
acceptInsecureCerts"
安全でない TLS を受け入れるフラグが
設定されており、かつ value と等しくない場合、
nullをデータとして持つ
successを返す。
エンドポイントノードが 安全でない TLS 証明書をサポートしておらず、 これが最終的に一致が行われない理由である場合、 この情報をローカルエンドに 提供することは有用である。
proxy"
プロキシ構成を持つ
フラグが設定されている場合、または value 内に定義された
プロキシ構成がエンドポイントノードの
実装固有の妥当性チェックを通過しないものである場合、
nullをデータとして持つ
successを返す。
ローカルエンドは、 このケイパビリティが尊重され、構成されたプロキシが用いられることを 期待する場合にのみ、このケイパビリティを送信するであろう。 意図としては、これが不可能である場合、新しいセッションは 確立されない。
unhandledPromptBehavior"
value を用いて
ユーザープロンプトハンドラーが
一致するかをチェックすることが false である場合、
nullをデータとして持つ
successを返す。
name が、一致 ケイパビリティ直列化アルゴリズムを定義する 追加 WebDriver ケイパビリティの名前である場合、 match value を、 引数 value および flags を用いて ケイパビリティ name について 一致 ケイパビリティ直列化アルゴリズムを実行した結果とする。
そうでなければ、name が
拡張ケイパビリティのキーである場合、
match value を、name と value について
照合する実装固有の手順を
tryingした結果とする。一致が成功しない場合、
nullをデータとして持つ
successを返す。
match value が null でない場合、 matched capabilities 上で、名前 name および 値 match value を持つ プロパティを設定する。
matched capabilities をデータとして持つ success を返す。
WebDriver セッション は、ローカルエンドと 特定のリモートエンドとの間の 論理的な接続を表す。セッションオブジェクトは、その接続に 固有の状態を保持する。
中間ノードは、各アクティブなセッションについて、関連付けられた セッションを維持する。これは、 中間ノードが New Session コマンドを実行するときに作成される、 上流隣接ノード上の セッションである。 中間ノード上のセッションを閉じると、 関連付けられたセッションのセッションも 閉じられる。
セッションは session ID を持つ。これは、セッションを一意に識別するために 使用される UUID の文字列表現である。 これはセッション作成時に設定される。
セッションは、セッション作成時に設定される真偽値の HTTP フラグを持つ。 このフラグが設定されたセッションは HTTP セッションである。
リモート エンドは、関連付けられた アクティブセッションのリストを持つ。 これは、現在開始されているすべてのセッションの リストである。
リモート エンドは、関連付けられた アクティブ HTTP セッションのリストを持つ。これは、現在開始されているすべてのHTTP セッションのリストである。
エンドポイント ノードについて単一の HTTP セッションに制限されることは、アクティブ HTTP セッションのリスト内の最初のエントリが唯一のエントリになることを意味する。
HTTP セッションは、関連付けられた 現在の閲覧 コンテキストを持つ。これは、コマンドが実行される対象の 閲覧コンテキストである。また、関連付けられた 現在の親 閲覧コンテキストを持つ。これは閲覧コンテキストを変更するときに 現在の 閲覧コンテキストの親に設定される。また、 関連付けられた 現在のトップレベル閲覧コンテキストを持つ。これは、 閲覧コンテキストを変更するときに、現在の閲覧 コンテキストのトップ閲覧コンテキスト祖先に設定される。
HTTP セッションは、関連付けられた セッション タイムアウトを持ち、これは タイムアウト設定である。これは 初期状態では新しいタイムアウト設定に設定される。
HTTP セッションは、関連付けられた ページ読み込み 戦略を持つ。これは、ページ読み込み 戦略の表のキーワードのいずれかである。これは初期状態では normal に設定される。
HTTP セッションは、関連付けられた 厳密なファイル 操作可能性状態を持ち、これは真偽値である。これは初期状態では false に設定される。
セッションは、関連付けられた 閲覧コンテキスト入力 状態マップを持つ。これは、トップレベル閲覧 コンテキストをキーとし、入力状態オブジェクトを値とする 弱マップである。これは 初期状態では空のマップに設定される。
HTTP セッションは、関連付けられた リクエストキューを持ち、これは現在 処理待ちのリクエストの キューである。
セッションが作成されるとき、セッションの機能を定義する
セッション設定
フラグの集合が提供される。この
仕様は常に、セッション設定フラグ内に
"http" を含むセッションを作成する。これは
HTTP
フラグに対応する。外部仕様は追加の
フラグを定義したり、HTTP フラグなしでセッションを作成したりしてもよい。
セッションごとの状態に加えて、リモートエンドが エンドポイントノードである場合、すべてのセッションにわたってグローバルな追加の状態も持つ。
エンドポイントノードは、関連付けられた 安全でない TLS を受け入れるフラグを持ち、これは信頼されていない TLS 証明書または自己署名 TLS 証明書が信頼済みとして扱われるかどうかを示す。このフラグの既定値は、 エンドポイントが安全でない TLS 接続の受け入れをサポートしない場合は false、そうでなければ未設定である。
エンドポイントノードは、関連付けられた プロキシ 設定を持つフラグを持ち、これはプロキシがすでに 設定されているかどうかを示す。このフラグの既定値は、エンドポイントが プロキシ設定をサポートしない場合は true、そうでなければ false である。
セッションを 作成するには、JSON Object capabilites と、セッション設定 フラグ flags が与えられたものとして:
session id を、UUID を生成した結果とする。
session を、session
ID が session id で、HTTP フラグ が flags に
"http" が含まれることである新しいセッションとする。
proxy を、capabilities から
"proxy" プロパティを取得した結果とし、最初に一致する文の
サブステップを実行する:
capabilites に
"acceptInsecureCerts" という名前のプロパティがある場合、エンドポイント
ノードの 安全でない TLS を受け入れるフラグを、
capabilities から
"acceptInsecureCerts" という名前のプロパティを取得した結果に設定する。
user prompt handler capability を、capabilities から
"unhandledPromptBehavior" プロパティを取得した結果とする。
user prompt handler capability が undefined でない場合、user prompt handler capability を用いてユーザープロンプト ハンドラーを更新する。
serialized user prompt handler を、ユーザープロンプトハンドラーをシリアル化したものとする。
capabilities 上に、名前
"unhandledPromptBehavior"、値 serialized
user prompt handler のプロパティを設定する。
flags が "http" を含む場合:
strategy を、capabilities から
プロパティ "pageLoadStrategy" を取得した結果とする。
strategy が
文字列である場合、セッションの ページ読み込み
戦略を strategy に設定する。そうでなければ、
ページ読み込み戦略を normal
に設定し、capabilities のプロパティを、名前
"pageLoadStrategy"、値
"normal" として設定する。
strictFileInteractability を、
capabilities からプロパティ "strictFileInteractability"
を取得した結果とする。strictFileInteractability
が真偽値である場合、セッションの 厳密なファイル
操作可能性を strictFileInteractability に設定する。
timeouts を、capabilities から
プロパティ "timeouts" を取得した結果とする。
timeouts が undefined でない場合、
session の セッションタイムアウト
を timeouts に設定する。
capabilities 上に、名前
"timeouts"、値が session の
セッションタイムアウトを用いて
タイムアウト設定をシリアル化したものであるプロパティを設定する。
capabilities 内の任意の拡張 capabilityを 実装定義の方法で処理する。
外部仕様で定義された任意のWebDriver 新規セッションアルゴリズムを、 引数 session、 capabilities、および flags で実行する。
session を アクティブセッションに追加する。
flags に "http" が含まれる場合、
session を アクティブ HTTP セッションに追加する。
webdriver-active フラグを true に設定する。
セッションを 閉じるには、session が与えられたものとして、 リモートエンドは次の手順を行わなければならない:
session の HTTP フラグが設定されている場合、 session を アクティブ HTTP セッションから削除する。
session を アクティブセッションから削除する。
リモートエンドの 種類に基づいて、次のサブステップを実行する:
アクティブセッションのリストが 空である場合:
webdriver-active フラグ を false に設定する
ユーザー プロンプトハンドラーを null に設定する。
安全でない TLS を受け入れるフラグを未設定にする。
プロキシ 設定を持つフラグを、その 既定値にリセットする。
任意で、すべてのトップレベル 閲覧コンテキストを、 アンロードを促すことなく閉じる。
関連付けられたセッションを閉じる。これにより エラーが発生した場合は、この アルゴリズムの残りを完了してから、そのエラーを返す。
実装固有のクリーンアップ手順を実行する。
セッションを閉じると、関連付けられたブラウザープロセスが kill される可能性がある。 実装固有のクリーンアップ手順は、 接続が早期に閉じられないように、レスポンスがクライアントに返送された 後に実行されるものと仮定される。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session |
New Session コマンドは、 エンドポイントノードで新しい WebDriver セッションを作成する。 作成に失敗した場合、session not created エラーが返される。
リモートエンドが中継 ノードである場合、 ケイパビリティ処理 アルゴリズムの結果を用いて、 新規セッションリクエストを適切な エンドポイントノードへルーティングしてよい。 中継ノードは、この処理を補助するために 拡張ケイパビリティを自由に定義できる。 ただし、これらの特定のケイパビリティは エンドポイントノードへ転送してはならない。
中継ノードが、ユーザーエージェント機能とは 無関係な追加情報を必要とする場合、 この情報は要求されたケイパビリティの一部としてではなく、 トップレベルパラメーターとして渡すことが推奨される。 中継ノードは、カスタムの トップレベルパラメーター(すなわち非ケイパビリティ)を後続の リモートエンドノードへ 転送しなければならない。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
実装がエンドポイントノードであり、 アクティブ HTTP セッションの リストが空でない場合、またはそれ以外で 実装が追加のセッションを開始できない場合、 エラーコード session not createdを持つerrorを返す。
リモートエンドが中間 ノードである場合、 実装定義の手順を行い、その結果として、 エラーを エラーコード session not created 付きで返すか、 またはこのアルゴリズムの残りに従ってリモートエンドが返すものと同型のデータを伴う 成功を返すかのいずれかとする。 エラーが返されない場合、中間 ノードは、後続のコマンドでこの関連付けられたセッションへ コマンドを転送できるように、上流ノードで作成されたセッションへの参照を、関連付けられた セッションとして保持しなければならない。
flags を、"http" を含む集合とする。
capabilities を、 parameters および flags を用いて ケイパビリティを処理することを tryingした結果とする。
capabilities がnullである場合、
エラーコード
session not createdを持つ
errorを返す。
session を、capabilities および flags を用いて セッションを 作成することの結果とする。
body を、次で初期化された JSON Objectとする:
sessionId"
capabilities"
sessionの現在のトップレベル 閲覧 コンテキストを、エンドポイントノードの トップレベル 閲覧コンテキストのいずれかに設定する。 システム フォーカスを持つトップレベル閲覧 コンテキストを優先し、そうでなければ、 可視性 状態が visibleである任意の トップレベル閲覧 コンテキストを優先する。
WebDriver 実装は通常、 完全に新しいブラウザーインスタンスを開始するが、 この仕様にはその要件はない(また、WebDriver が Web ブラウザーのみを自動化するためだけに使われるという要件もない)。 実装は、例えば現在フォーカスを持つウィンドウを選択することにより、 既存のブラウザーインスタンスを使用することを選択してもよい。
body をデータとして持つ successを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| DELETE | /session/{session id} |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session がアクティブ HTTP セッションである場合、 session を用いて セッションを閉じることを tryする。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /status |
実装は任意で、
追加のメタ情報を本文の一部として含めてもよいが、
トップレベルプロパティ
ready および message
は予約されており、上書きしてはならない。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
タイマーは構造体である。これは タイムアウト発火フラグを持ち、これは 真偽値であり、初期値は false である。
timer および timeout が与えられたとき、 タイマーを 開始するには
Assert: timeout は null でない。
次の手順を並列に実行する:
少なくとも timeout ミリ秒が経過するまで待つ。
timer のタイムアウト発火フラグを true に設定する。
タイムアウト 構成は、構造体であり、 スクリプト評価、 ナビゲーション、および要素 取得のタイムアウトを表す。これは、整数または null であり初期値が 30,000 に設定されるスクリプト タイムアウト項目、整数または null であり初期値が 300,000 に設定されるページ読み込み タイムアウト項目、および整数または null であり初期値が 0 に設定される暗黙的 待機タイムアウト項目を持つ。 timeouts が与えられたとき、 タイムアウト構成として逆直列化するには:
timeouts を、timeouts を用いて JSON 派生 JavaScript 値を Infra 値へ変換することの結果に設定する。
configuration を新しいタイムアウト 構成とする。
timeouts 内の各 key → value について:
«"script", "pageLoad",
"implicit"» が key を含まない場合、
continue する。
value が null でなく、かつ 0 以上 最大安全 整数以下の数値でもない場合、 エラーコード invalid argument を持つ error を返す。
key に一致する副手順を実行する:
script"
configuration のスクリプトタイムアウトを value に設定する。
pageLoad"
configuration のページ読み込みタイムアウトを value に設定する。
implicit"
configuration の暗黙的待機タイムアウトを value に設定する。
configuration をデータとして持つ success を返す。
serialized を空のマップとする。
serialized["script"] を
timeouts のスクリプトタイムアウトに設定する。
serialized["pageLoad"] を
timeouts のページ読み込みタイムアウトに設定する。
serialized["implicit"] を
timeouts の暗黙的待機タイムアウトに設定する。
serialized を用いて Infra 値を JSON 互換 JavaScript 値へ変換することを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/timeouts |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
timeouts を、セッションの タイムアウト 設定を用いてタイムアウト 設定をシリアル化したものとする
データ timeouts を伴う成功を返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/timeouts |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
timeouts を、 parameters を用いて タイムアウト構成として 逆直列化することを tryingした結果とする。
session のタイムアウト構成を timeouts に設定する。
多くの WebDriver コマンドは、 session の現在の閲覧コンテキストまたは現在の トップレベル閲覧コンテキストのコンテキストで行われる。 session の現在のトップレベル閲覧 コンテキストは、 その関連付けられたウィンドウハンドルにより プロトコル内で表される。 トップレベル閲覧コンテキストが ウィンドウへ切り替えコマンドを用いて選択されると、 特定の閲覧 コンテキストは、フレームへ切り替えコマンドを用いて 選択できる。
「window」という用語を
トップレベル閲覧コンテキストを
指すために用いることはレガシーであり、
オペレーティングシステムにおける「window」の概念にも、
DOM のWindowオブジェクトにも対応しない。
閲覧コンテキストは、そのナビゲート可能が破棄されている場合、 もはや開かれていないといわれる。
各閲覧コンテキストは、それを一意に識別する
関連付けられたウィンドウハンドルを持つ。これは
Stringでなければならず、
"current" であってはならない。
ウェブフレームは、 frameまたはiframeが プロトコルを介して、 リモートエンドとローカルエンドの間で転送されるときに、 それを識別するために用いられる抽象化である。
ウェブフレーム
識別子は、
文字列定数 "frame-075b-4da1-b6ba-e579c2d3230a" である。
ECMAScript Object は、 ウェブフレーム識別子の 自前プロパティを持つ場合、 ウェブフレームを表す。
ウェブウィンドウは、 windowが プロトコルを介して、 リモートエンドとローカルエンドの間で転送されるときに、 それを識別するために用いられる抽象化である。
ウェブウィンドウ
識別子は、
文字列定数 "window-fcc6-11e5-b4f8-330a88ab9d7f" である。
ECMAScript Object は、 ウェブウィンドウ識別子の 自前プロパティを持つ場合、 ウェブウィンドウを表す。
WindowProxyオブジェクト window を伴う
WindowProxy 参照オブジェクトは、
次により与えられる:
window の関連付けられた閲覧コンテキストが トップレベル閲覧コンテキストである場合、 identifier をウェブウィンドウ識別子とする。
そうでなければ、それをウェブフレーム識別子とする。
次のプロパティで初期化された JSON Objectを返す:
ウェブフレームを表す JSON Object object により ウェブフレームを 逆直列化するには:
object がウェブフレーム 識別子の自前プロパティを持たない場合、 エラーコード invalid argumentを持つ errorを返す。
reference を、 object から ウェブフレーム識別子プロパティを 取得することの結果とする。
reference がStringでない場合、 エラーコード invalid argumentを持つ errorを返す。
browsing context を、その ウィンドウハンドルが reference である 閲覧コンテキスト、またはそのような 閲覧コンテキストが存在しない場合は null とする。
browsing context が null、または トップレベル閲覧コンテキストである場合、 エラーコード no such frameを持つ errorを返す。
browsing context の関連付けられた window をデータとして持つ successを返す。
ウェブ ウィンドウを表す JSON Object object により ウェブウィンドウを 逆直列化するには:
object がウェブウィンドウ 識別子の自前プロパティを持たない場合、 エラーコード invalid argumentを持つ errorを返す。
reference を、 object から ウェブウィンドウ識別子プロパティを 取得することの結果とする。
reference がStringでない場合、 エラーコード invalid argumentを持つ errorを返す。
browsing context を、その ウィンドウハンドルが reference である 閲覧コンテキスト、またはそのような 閲覧コンテキストが存在しない場合は null とする。
browsing context が null、または トップレベル閲覧コンテキストでない場合、 エラーコード no such windowを持つ errorを返す。
browsing context の関連付けられた window をデータとして持つ successを返す。
session および context が与えられて、 現在の閲覧コンテキストを設定することが要求された場合、 実装は次の手順に従わなければならない:
session の現在の閲覧 コンテキストを context に設定する。
session の現在の親閲覧 コンテキストを、存在する場合は context の 親閲覧コンテキストに、 そうでなければnullに設定する。
session および context が与えられて、 現在のトップレベル閲覧 コンテキストを設定することが要求された場合、実装は次を行わなければならない:
Assert: context はトップレベル閲覧コンテキストである。
session の現在のトップレベル 閲覧 コンテキストを context に設定する。
session および context を用いて 現在の閲覧コンテキストを設定する。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/window |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、 エラーコード no such windowを持つ errorを返す。
session の現在のトップレベル閲覧 コンテキストに関連付けられた ウィンドウハンドルを データとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| DELETE | /session/{session id}/window |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
session の現在の トップレベル 閲覧コンテキストを 閉じる。
開いているトップレベル閲覧コンテキストが もうない場合、 セッションを閉じることを 試みる。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/window |
ウィンドウを切り替えると、以降のすべての コマンドのターゲットとして使用される session の現在のトップレベル 閲覧コンテキストが選択される。タブ付きブラウザーでは、これは通常 その閲覧コンテキストを含むタブを 選択されたタブにする。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
handle を、parameters から
"handle" プロパティを取得することの結果とする。
handle がundefinedである場合、 errorを エラーコード invalid argumentとともに返す。
別のトップレベル閲覧コンテキストへの フォーカスを妨げるアクティブなユーザープロンプトが存在する場合、 errorを エラーコード unexpected alert openとともに返す。
handle が、あるトップレベル閲覧コンテキストに 関連付けられたウィンドウ ハンドルと等しい場合、 context をその閲覧コンテキストとし、 session および context を用いて 現在の トップレベル閲覧コンテキストを設定する。
そうでなければ、errorを エラーコード no such windowとともに返す。
OS レベルのフォーカスを変更することなく、ユーザーが session の現在の閲覧コンテキストを 相互作用のために選択したことから生じる、任意の実装固有の状態を更新する。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/window/handles |
ウィンドウハンドルが返される順序は任意である。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
handles をListとする。
リモートエンド内の各 トップレベル閲覧コンテキストについて、 関連付けられたウィンドウハンドルを handles に push する。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/window/new |
新しいトップレベル閲覧コンテキストを作成する。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
実装が新しいトップレベル 閲覧コンテキストの作成をサポートしない場合、errorを エラーコード unsupported operationとともに返す。
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
type hint を、parameters から
"type" プロパティを取得することの結果とする。
URL を "about:blank" に設定し、
target を空
文字列に設定し、features を "noopener" に設定し、
ユーザーエージェントを新しい閲覧コンテキストを作成するよう構成して、
window open stepsを実行することにより、
新しいトップレベル閲覧コンテキストを作成する。
これは、作成された閲覧
コンテキストに対してフォーカス手順を呼び出さずに
行われなければならない。type hint が "tab" という値を持ち、
かつ実装が同じ OS ウィンドウ内に複数の閲覧コンテキストをサポートする場合、
新しい閲覧コンテキストは session の現在の閲覧
コンテキストと OS ウィンドウを共有するべきである。type hint が
"window" であり、かつ実装が別々の OS ウィンドウに複数の
閲覧コンテキストをサポートする場合、作成された閲覧
コンテキストは新しい OS ウィンドウ内にあるべきである。その他すべての場合において、
閲覧コンテキストがユーザーにどのように提示されるかの詳細は
実装定義である。
handle を、 新しく作成された window に関連付けられたウィンドウハンドルとする。
新しく作成された
window が session の現在の閲覧
コンテキストと OS レベルのウィンドウを共有する場合、
type を "tab" とし、そうでなければ "window" とする。
result を、次で初期化された新しい JSON Objectとする:
handle"
type"
result をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/frame |
フレームへ切り替えコマンドは、 後続のコマンドに対する session の現在の 閲覧コンテキストとして用いるために、 session の現在のトップレベル 閲覧コンテキスト、または session の現在の 閲覧コンテキストの子閲覧コンテキストを選択するために用いられる。 session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
id を、parameters から
"id" プロパティを取得することの結果とする。
id がnullでも、
Number オブジェクトでも、
ウェブ要素を表す
Objectでもない場合、
errorを エラーコード invalid argumentとともに返す。
最初に一致する条件の副手順を実行する:
nullである
session の現在のトップレベル 閲覧 コンテキストがもはや開かれていない場合、 errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
session および session の 現在の トップレベル閲覧コンテキストを用いて、 現在の 閲覧コンテキストを設定する。
Number オブジェクトである
id が 0 未満、または 216 – 1 より大きい場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の閲覧コンテキストが もはや 開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
window を、session の 現在の閲覧コンテキストの アクティブ文書の 関連付けられた windowとする。
id が window の サポートされる プロパティインデックスでない場合、 errorを エラーコード no such frameとともに返す。
child window を、
window.[[GetOwnProperty]]
(id) を呼び出すことにより取得された
WindowProxyオブジェクトとする。
session および child window の 閲覧コンテキストを用いて 現在の 閲覧コンテキストを設定する。
session の現在の閲覧コンテキストが もはや 開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、 session および id を用いて 既知の要素を取得することを 試みることの結果とする。
element が
frame
または
iframe
要素でない場合、
errorを エラーコード no
such frameとともに返す。
session および element のコンテンツ ナビゲート可能のアクティブ 閲覧コンテキストを用いて、 現在の 閲覧コンテキストを設定する。
OS レベルのフォーカスを変更することなく、ユーザーが session の現在の閲覧コンテキストを 相互作用のために選択したことから生じる、任意の実装固有の状態を更新する。
WebDriver は同一オリジンポリシーに拘束されないため、 子閲覧コンテキストが現在の閲覧コンテキストと異なるオリジンであっても、 常にその子閲覧コンテキストへ切り替えることが可能である。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/frame/parent |
親フレームへ切り替え コマンドは、 将来のコマンドに対する session の現在の閲覧コンテキストを、 session の現在の閲覧コンテキストの 親に設定する。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキストが、すでに トップレベル閲覧コンテキストである場合:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session の現在の親 閲覧コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
セッションの現在の親閲覧コンテキストが nullでない場合、session と現在の親 閲覧コンテキストで現在の閲覧コンテキストを設定する。
OS レベルのフォーカスを変更することなく、ユーザーが session の現在の閲覧コンテキストを 相互作用のために選択したことから生じる、任意の実装固有の状態を更新する。
WebDriver は、session の現在のトップレベル 閲覧コンテキストを含むオペレーティングシステムウィンドウと相互作用するための コマンドを提供する。 異なるオペレーティングシステムのウィンドウマネージャーは異なる能力を提供するため、 この節のすべてのコマンドがすべてのリモートエンドで サポートされるわけではない。 これらのコマンドのサポートは、ウィンドウ 寸法指定/位置指定ケイパビリティにより決定される。 コマンドがサポートされない場合、 unsupported operation errorが返される。
トップレベル閲覧コンテキストは、 関連付けられたウィンドウ状態を持つ。 これは、その OS ウィジェットウィンドウがどの可視性状態にあるかを記述する。 これは次の状態のいずれかになり得る:
| 状態 | キーワード | 既定 | 説明 |
|---|---|---|---|
| 最大化ウィンドウ状態 | "maximized"
|
ウィンドウは最大化されている。 | |
| 最小化ウィンドウ状態 | "minimized"
|
ウィンドウはアイコン化されている。 | |
| 通常ウィンドウ状態 | "normal"
|
✓ | ウィンドウは通常どおり表示されている。 |
| 全画面ウィンドウ状態 | "fullscreen"
|
ウィンドウは全画面モードである。 |
何らかの理由により、トップレベル閲覧コンテキストの OS ウィンドウがいずれかのウィンドウ状態に入れない場合、 またはこの概念が現在のシステムに適用できない場合、既定状態は normalでなければならない。
WindowProxy window に対する WindowRect オブジェクトは、次のプロパティで初期化された Objectである:
x"
window のscreenX属性。
y"
window のscreenY属性。
width"
windows のouterWidth属性。
height"
window のouterHeight属性。
関連付けられたトップレベル閲覧コンテキストを持つ オペレーティングシステムレベルのウィンドウが与えられたとき、 ウィンドウを 最大化するには、 オペレーティングシステムレベルのウィンドウを 最大化ウィンドウ状態へ遷移させるための 実装固有の手順を実行する。 ウィンドウマネージャーがウィンドウのサイズ変更をサポートするが、 ウィンドウ最大化の概念を持たない場合、 ウィンドウ寸法は現在のスクリーンについて ウィンドウマネージャーが許可する最大利用可能サイズまで増加されなければならない。 ウィンドウが遷移を完了したとき、または実装定義のタイムアウト内に返す。
関連付けられたトップレベル閲覧コンテキストを持つ オペレーティングシステムレベルのウィンドウが与えられたとき、 ウィンドウを アイコン化するには、 オペレーティングシステムレベルのウィンドウを 最小化ウィンドウ状態へ遷移させるための 実装固有の手順を実行する。 トップレベル閲覧コンテキストのアクティブ文書の 可視性状態が 状態に到達するか、 操作がタイムアウトするまで、この操作から返ってはならない。
関連付けられたトップレベル閲覧コンテキストを持つ オペレーティングシステムレベルのウィンドウが与えられたとき、 ウィンドウを 復元するには、 ウィンドウを可視スクリーンへ復元または再表示するための 実装固有の手順を実行する。 トップレベル閲覧コンテキストのアクティブ文書の 可視性状態が visible状態に到達するか、 操作がタイムアウトするまで、この操作から返ってはならない。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/window/rect |
ウィンドウ矩形を取得 コマンドは、 session の現在の トップレベル閲覧コンテキストに対応するオペレーティングシステムウィンドウの スクリーン上のサイズおよび位置を返す。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の トップレベル閲覧コンテキストがもはや開かれていない場合、 errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
session の現在のトップレベル閲覧 コンテキストに対する WindowRect オブジェクトにデータを設定した successを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/window/rect |
ウィンドウ矩形を設定 コマンドは、 session の現在のトップレベル閲覧 コンテキストに対応するオペレーティングシステムウィンドウの サイズおよび位置を変更する。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
width を、parameters から
"width" という名前のプロパティを取得することの結果とする。
width がundefinedである場合、width を null とする。
height を、
parameters から "height"
という名前のプロパティを取得することの結果とする。
height がundefinedである場合、height を null とする。
x を、parameters から "x" という名前の
プロパティを取得することの結果とする。
x がundefinedである場合、x を null とする。
y を、parameters から "y" という名前の
プロパティを取得することの結果とする。
y がundefinedである場合、y を null とする。
width または height が null でも、 0 から 231 − 1 までの Numberでもない場合、errorを エラーコード invalid argumentとともに返す。
x または y が null でも、 −(231) から 231 − 1 までの Numberでもない場合、 errorを エラーコード invalid argumentとともに返す。
リモートエンドが何らかの理由により、 session の現在の トップレベル閲覧コンテキストに対する ウィンドウ矩形を設定 コマンドを サポートしない場合、errorを エラー コード unsupported operationとともに返す。
ウィンドウ矩形を設定コマンドが 部分的にサポートされている場合(すなわち、引数のいくつかの組み合わせは サポートされるが他はサポートされない場合)、実装は残りの手順を継続することが 期待される。
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
window を、session の現在の トップレベル閲覧コンテキストを含むオペレーティングシステムウィンドウとする
実装が window の寸法を設定できる場合:
width が null でない場合、任意の ブラウザークロームおよび外部描画されたウィンドウ装飾を含む window の幅を、 CSS ピクセル単位で、 可能な限り width に近い値に設定する。
height が null でない場合、任意の ブラウザークロームおよび外部描画されたウィンドウ装飾を含む window の高さを、 CSS ピクセル単位で、 可能な限り height に近い値に設定する。
実装が window の位置を設定できる場合:
x が null でない場合、window の左端の x 座標を、可能な限り x に近い値に設定する。
y が null でない場合、window の上端の y 座標を、可能な限り y に近い値に設定する。
session の現在のトップレベル閲覧 コンテキストに対する WindowRect オブジェクトにデータを設定した successを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/window/maximize |
ウィンドウを最大化コマンドは、 session の現在のトップレベル閲覧 コンテキストを含むウィンドウ上で、 もしあればウィンドウマネージャー固有の「最大化」操作を呼び出す。 これは通常、全画面にすることなく、ウィンドウを最大利用可能サイズまで拡大する。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
リモートエンドが何らかの理由により、 session の現在のトップレベル 閲覧コンテキストに対するウィンドウを 最大化コマンドをサポートしない場合、errorを エラーコード unsupported operationとともに返す。
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
session の現在のトップレベル閲覧 コンテキストの ウィンドウを最大化する。
session の現在のトップレベル閲覧 コンテキストに対する WindowRect オブジェクトにデータを設定した successを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/window/minimize |
ウィンドウを最小化コマンドは、 session の現在のトップレベル閲覧 コンテキストを含むウィンドウ上で、 もしあればウィンドウマネージャー固有の「最小化」操作を呼び出す。 これは通常、ウィンドウをシステムトレイ内に隠す。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
リモートエンドが何らかの理由により、 session の現在のトップレベル 閲覧コンテキストに対するウィンドウを 最小化コマンドをサポートしない場合、errorを エラーコード unsupported operationとともに返す。
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
session の現在のトップレベル閲覧 コンテキストに対する WindowRect オブジェクトにデータを設定した successを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/window/fullscreen |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
リモートエンドが 全画面をサポートしない場合、 errorを エラーコード unsupported operationとともに返す。
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
session の現在のトップレベル閲覧 コンテキストの アクティブ文書の文書要素を用いて、 要素を全画面化するを呼び出す。
ウィンドウは現在 全画面ウィンドウ状態にある。
session の現在のトップレベル閲覧 コンテキストに対する WindowRect オブジェクトにデータを設定した successを返す。
ウェブ要素は、 要素が プロトコルを介して、 リモートエンドとローカルエンドの間で転送されるときに、 それを識別するために用いられる抽象化である。
ウェブ要素
識別子は、文字列定数
"element-6066-11e4-a52e-4f735466cecf" である。
ECMAScript Object は、 ウェブ要素識別子の 自前プロパティを持つ場合、 ウェブ要素を表す。
WebDriver ノード id は、特定の WebDriver セッション内の DOM ノードへのハンドルを表す、グローバルに一意な文字列である。
弱マップは、キーが弱く保持されるマップである。すなわち、キーオブジェクトがガベージコレクトされた場合に項目は削除され、 マップ内に存在してもガベージコレクションは妨げられない。これは、キーオブジェクト上に直接プロパティを定義することの 代替として機能する。
WebDriver セッションは、閲覧コンテキストグループノード マップを持つ。これは、閲覧コンテキスト グループ とノード id マップとの間の弱マップである。
ノード id マップは、ノードとそれに 対応する WebDriver ノード idとの間の弱マップである。
WebDriver セッションは、navigable が見たノードマップを持つ。 これは、navigable と集合との間の弱 マップである。
ノードを取得するには、 session、 browsing context、および reference が与えられたものとして:
session、browsing context、および node が与えられたとき、 ノード参照を 取得または作成するには:
node id map[node] を返す。
session、browsing context、および reference が与えられたとき、 次の手順が true を返す場合、 ノード 参照は既知である:
session および reference が与えられたとき、 既知の 要素を取得するには:
Elementを実装しない場合、
errorを エラー
コード no such elementとともに返す。
session およびelementが与えられたとき、 ウェブ要素参照を取得または作成するには:
Elementを実装する。
session および element に対するウェブ 要素参照オブジェクトは次である:
identifier をウェブ要素識別子とする。
reference を、session および element を用いて ウェブ要素参照を 取得または作成することの結果とする。
名前 identifier および値 reference のプロパティで 初期化された JSON Objectを返す。
ウェブ 要素を表す JSON Object object により、 ウェブ要素を逆直列化するには:
object がウェブ要素 識別子の自前プロパティを持たない場合、 errorを エラーコード invalid argumentとともに返す。
reference がStringでない場合、 errorを エラーコード invalid argumentとともに返す。
element を、 session および reference を用いて 既知の要素を取得することを 試みることの 結果とする。
element をデータとして持つsuccessを返す。
要素は、 そのノード文書がアクティブ文書でない場合、 または接続されていない場合、 古い。
要素を ビュー内へスクロールするには、 その要素がまだビュー内でない場合に限り、 次の手順を実行する:
options を
次のScrollIntoViewOptionsとする:
behavior"
instant"
block"
end"
inline"
nearest"
element を this 値として、 Function.[[Call]](scrollIntoView, options) を実行する。
編集可能な 要素は、 入力 および消去に用いることができる要素であり、 それらは 2 つの下位カテゴリに分類される:
可変である(例えば、読み取り専用または
無効でない)、
かつその
type
属性が次の状態のいずれかにある
input
要素を指す:
および
textarea
要素を指す。
編集ホストまたはコンテンツ 編集可能である要素を指す。
要素は、その "pointer-events" スタイルプロパティの
解決値が
"none" である場合、
ポインター
イベント無効を持つといわれる。
要素は、それが
input
要素であり、
その
readonly
属性が設定されている場合、
読み取り専用とみなされる。
要素が ポインターアクションを用いて相互作用できるかどうかを判定するために、 WebDriver はヒットテストを実行して、 その相互作用が要求された要素に到達できるかどうかを見つける。
相互作用可能な要素は、 ポインター相互作用可能またはキーボード相互作用可能のいずれかである 要素である。
ポインター相互作用可能な要素は、 ビューポート内にあるその矩形の 中心点で見つかる 描画順序により定義される最初の 要素として定義される。 ただし、レンダリングされたスクロールバーのサイズは除外する。
キーボード相互作用可能な要素は、
フォーカス可能領域を持つ
任意の要素、
body
要素、
または文書要素である。
要素のビュー内中心
点は、
その要素の getClientRects()
の
最初のDOMRectと
初期ビューポートとの交差である矩形の
原点位置である。
これは次のように計算できる:
rectangle を、
element上で
getClientRects()を
呼び出すことにより返される
DOMRectコレクションの
最初のオブジェクトとする。
x を floor((left + right) ÷ 2.0) とする。
y を floor((top + bottom) ÷ 2.0) とする。
(x, y) の組を返す。
要素 element は、次の手順が true を返す場合、 無効である:
element が実際に無効であるかどうかを返す。
要素は、その ポインターイベントが無効でない という仮定の下で、自身のポインター相互作用可能な描画 ツリーのメンバーである場合、 ビュー内にある。
要素は、その 中心点における ポインター相互作用可能な描画ツリーが空である場合、 またはこのツリー内の最初の要素が自身の 包含子孫でない場合、 遮蔽されている。
要素 element の ポインター操作可能ペイントツリー は次のように生成される:
element が、session の 現在の閲覧 コンテキストの アクティブな文書と 同じツリー内にない 場合、空のシーケンスを返す。
rectangles を、
element 上で getClientRects()
を呼び出すことによって返される DOMRect シーケンスとする。
rectangles の長さが 0 の場合、 空のシーケンスを返す。
center point を、element の ビュー内中心点 とする。
座標 center point が与えられたものとして、 point からの要素 を返す。
シャドウルートは、 シャドウルートが プロトコルを介して、 リモートエンドとローカルエンドの間で転送されるときに、 それを識別するために用いられる抽象化である。
シャドウ
ルート識別子は、文字列定数
"shadow-6066-11e4-a52e-4f735466cecf" である。
ECMAScript Object は、 シャドウルート識別子の 自前プロパティを持つ場合、 シャドウルートを表す。
session および reference が与えられたとき、 既知の シャドウルートを取得するには:
ShadowRootを実装しない場合、
errorを
エラーコード
no such shadow rootとともに返す。
session および shadow root が与えられたとき、 シャドウルート参照を取得または作成するには:
ShadowRootを実装する。
session および shadow root に対するシャドウルート参照オブジェクトは、次により与えられる:
identifier をシャドウルート識別子とする。
reference を、session および shadow root を用いて シャドウルート参照を 取得または作成することの結果とする。
名前 identifier および値 reference のプロパティで 初期化された JSON Objectを返す。
シャドウ ルートを表す JSON Object object により シャドウルートを逆直列化することが要求された場合:
object がシャドウルート識別子の 自前プロパティを持たない場合、 errorを エラーコード invalid argumentとともに返す。
reference を、 object から シャドウルート識別子プロパティを 取得することの結果とする。
reference がStringでない場合、 errorを エラーコード invalid argumentとともに返す。
shadow を、 session および reference を用いて 既知の シャドウルートを取得することを 試みることの結果とする。
shadow をデータとして持つsuccessを返す。
シャドウルートは、 そのノード文書がアクティブ文書でない場合、 またはそのホストとして参照される要素ノードが 古い場合、 切り離されている。
要素を検索、 要素群を検索、 要素から要素を検索、 要素から要素群を検索、 シャドウルートから要素を検索、 およびシャドウルートから要素群を検索コマンドは、 個々の要素および要素のコレクションの検索を可能にする。 要素取得検索は、与えられたセレクターの式に一致する 文書のノードを前順走査することにより実行される。
session、start node、using および value が与えられ、 検索することが 要求された場合、リモート エンドは次の手順を実行しなければならない:
location strategy を using と等しくする。
selector を value と等しくする。
timeout を session の セッションタイムアウトの暗黙的待機タイムアウトとする。
timer を新しいタイマーとする。
timeout が null でない場合:
timer および timeout を用いて タイマーを開始する。
elements returned を空のListとする。
elements returned が空であり、 timer のタイムアウト発火フラグが 設定されていない間:
elements returned を、引数 start node および selector を用いて、 関連する要素位置特定戦略を呼び出すことを 試みることの結果に設定する。
DOMException、SyntaxError、
XPathException、またはその他のエラーが
発生した場合、
invalid selector errorを返す。
result を空のListとする。
elements returned 内の各 element について、 session および element に対する ウェブ要素参照オブジェクトを result に追加する。
result をデータとして持つsuccessを返す。
要素位置特定戦略は、 session の現在の 閲覧コンテキスト内で 要素を検索するために どの技法を用いるべきかを決定する列挙属性である。次の 位置特定戦略の表は、この 属性について定義されたキーワードおよび状態を列挙する:
| 状態 | キーワード |
|---|---|
| CSS セレクター | "css selector"
|
| リンクテキストセレクター | "link text"
|
| 部分リンクテキストセレクター | "partial link text"
|
| タグ名 | "tag name"
|
| XPath セレクター | "xpath"
|
CSS セレクター戦略で ウェブ要素を検索するには、 次の手順を完了する必要がある:
elements を、
start node をthisとし、
selector を引数として
querySelectorAll()
を呼び出すことの結果とする。これにより例外が投げられる場合、
errorを エラー
コード
invalid selectorとともに返す。
elements をデータとして持つsuccessを返す。
リンクテキスト戦略で ウェブ要素を検索するには、 次の手順を完了する必要がある:
elements を、
start node をthisとし、
"a" を引数として
querySelectorAll()
を呼び出すことの結果とする。これが例外を投げる場合、
errorを エラー
コード unknown errorとともに返す。
result を空のNodeListとする。
elements 内の各 element について:
result をデータとして持つsuccessを返す。
部分リンクテキスト戦略は、
リンクテキスト戦略と非常に似ているが、
文字列全体に一致するのではなく、
部分文字列だけが一致すればよい。
すなわち、セレクター式を含むレンダリング済みテキストを持つ
すべての
a
要素を返す。
部分リンクテキスト戦略で ウェブ要素を検索するには、 次の手順を完了する必要がある:
elements を、
start node をthisとし、
"a" を引数として
querySelectorAll()
を呼び出すことの結果とする。これが例外を投げる場合、
errorを エラー
コード unknown errorとともに返す。
result を空のNodeListとする。
elements 内の各 element について:
rendered text を、element に対して 要素テキストを取得を 呼び出すことを介して返される値とする。
rendered text が selector を含む場合、 element を result に追加する。
result をデータとして持つsuccessを返す。
タグ名
戦略で
ウェブ要素を検索するには、
start node をthisとし、selector を
引数として
getElementsByTagName()
を呼び出した結果にデータを設定した
successを返す。
XPath セレクター戦略で ウェブ要素を検索するには、 次の手順を完了する必要がある:
evaluateResult を、
引数 selector、
start node、
null、
ORDERED_NODE_SNAPSHOT_TYPE、
およびnullを用いて
evaluateを呼び出すことの結果とする。
スナップショットは操作の原子性を高めるために用いられる。
index を 0 とする。
length を、evaluateResult から
"snapshotLength"
プロパティを
取得することの結果とする。これが
XPathExceptionを投げる場合、
errorを
エラー
コード invalid selectorとともに返し、そうではなく
これがその他の
例外を投げる場合、errorを エラー
コード unknown
errorとともに返す。
result を空のNodeListとする。
index が length より小さい間、繰り返す:
node が要素でない場合、 errorを エラーコード invalid selectorとともに返す。
result をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/element |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
location strategy を、parameters から
"using" という名前のプロパティを
取得することの結果とする。
location strategy が 位置特定戦略の表に キーワードとして存在しない場合、errorを エラーコード invalid argumentとともに返す。
selector を、parameters から
"value" という名前のプロパティを
取得することの結果とする。
selector がundefinedである場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
start node を、 session の現在の閲覧 コンテキストの文書要素とする。
start node がnullである場合、
errorを エラーコード no such elementとともに返す。
result を、session、start node、location strategy、および selector を用いて 検索することを 試みることの結果とする。
result が空である場合、errorを エラーコード no such elementとともに返す。そうでなければ、 result の最初の要素を返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/elements |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
location strategy を、parameters から
"using" という名前のプロパティを
取得することの結果とする。
location strategy が 位置特定戦略の表に キーワードとして存在しない場合、errorを エラーコード invalid argumentとともに返す。
selector を、parameters から
"value" という名前のプロパティを
取得することの結果とする。
selector がundefinedである場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
start node を、 session の現在の閲覧 コンテキストの文書 要素とする。
start node がnullである場合、
errorを エラーコード no such elementとともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/element/{element id}/element |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
location strategy を、parameters から
"using" という名前のプロパティを
取得することの結果とする。
location strategy が 位置特定戦略の表に キーワードとして存在しない場合、errorを エラーコード invalid argumentとともに返す。
selector を、parameters から
"value" という名前のプロパティを
取得することの結果とする。
selector がundefinedである場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
start node を、
session および URL variables["element id"] を用いて
既知の
要素を取得することを
試みることの結果とする。
result が空である場合、errorを エラーコード no such elementとともに返す。そうでなければ、 result の最初の要素を返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/element/{element id}/elements |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
location strategy を、parameters から
"using" という名前のプロパティを
取得することの結果とする。
location strategy が 位置特定戦略の表に キーワードとして存在しない場合、errorを エラーコード invalid argumentとともに返す。
selector を、parameters から
"value" という名前のプロパティを
取得することの結果とする。
selector がundefinedである場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
start node を、
session および URL variables["element id"] を用いて
既知の
要素を取得することを
試みることの結果とする。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/shadow/{shadow id}/element |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
location strategy を、
"using" と呼ばれる
プロパティを取得することの結果とする。
location strategy が 位置特定戦略の表に キーワードとして存在しない場合、errorを エラーコード invalid argumentとともに返す。
selector を、
"value" と呼ばれる
プロパティを取得することの結果とする。
selector がundefinedである場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
任意のユーザープロンプトを処理する。 それがerrorである場合、その値を返す。
start node を、
session
および URL variables["shadow id"] を用いて
既知のシャドウルートを取得することを
試みることの結果とする。
result が空である場合、errorを エラーコード no such elementとともに返す。そうでなければ、 result の最初の要素を返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/shadow/{shadow id}/elements |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
location strategy を、
"using" と呼ばれる
プロパティを取得することの結果とする。
location strategy が 位置特定戦略の表に キーワードとして存在しない場合、errorを エラーコード invalid argumentとともに返す。
selector を、
"value" と呼ばれる
プロパティを取得することの結果とする。
selector がundefinedである場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
任意のユーザープロンプトを処理する。 それがerrorである場合、その値を返す。
start node を、
session および URL variables["shadow id"] を用いて
既知の
シャドウルートを取得することを
試みることの結果とする。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/active |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
active element を、 session の現在の閲覧 コンテキストの文書要素の アクティブ要素とする。
active element が null でない要素である場合、 session および active element に対するウェブ要素参照 オブジェクトにデータを設定したsuccessを返す。
そうでなければ、errorを エラーコード no such elementとともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/shadow |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
任意のユーザープロンプトを処理する。 それがerrorである場合、その値を返す。
element を、session および URL variables[element id] を用いて 既知の要素を取得することを 試みることの結果とする。
shadow root を element のシャドウ ルートとする。
shadow root が null である場合、errorを エラーコード no such shadow rootとともに返す。
serialized を、session および shadow root に対する シャドウルート参照オブジェクトとする。
serialized をデータとして持つsuccessを返す。
session および element が与えられたとき、 絶対位置を計算するには:
rect を、
getBoundingClientRect()を
呼び出すことにより返される値とする。
window を、session の 現在の トップレベル閲覧コンテキストの 関連付けられた window とする。
組 (x, y) を返す。
ノードが、別のノード other と 同じツリー内にないかどうかを判定するには、 次の副手順を実行する:
そのノードの
compareDocumentPosition()を、
other を引数として呼び出した結果が
DOCUMENT_POSITION_DISCONNECTED
(1) である場合 true を返し、
そうでなければ false を返す。
element の コンテナーは次である:
option
要素
optgroup
要素
option
要素
その要素はコンテナーを持たない。
コンテナーは要素自身である。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/selected |
要素が選択されているかコマンドは、
参照された要素が選択されているかどうかを判定する。
この操作が意味を持つのは、
Checkbox および Radio Button
状態の
input
要素、
または
option
要素に対してのみである。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、session および URL variables[element id] を用いて 既知の要素を取得することを 試みることの結果とする。
selected を、最初に一致する文に対応する値とする:
type
属性を持つ
input
要素である
element のcheckednessの結果。
option
要素である
element のselectednessの結果。
selected をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/attribute/{name} |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、session および URL variables の element id を用いて 既知の要素を取得することを 試みることの結果とする。
name を URL variables["name"] とする。
element が name で
hasAttribute()を持つ場合は
"true"(文字列)、
そうでなければnull。
name の 名前で属性を取得することの結果。
result をデータとして持つsuccessを返す。
このコマンドの振る舞いは、
[DOM] における
getAttribute()の振る舞いとは異なることに注意されたい。
これは、設定された真偽属性の場合、
空文字列を返す。
このコマンドが文字列として true を返す理由は、
これがほとんどの動的型付けプログラミング言語で true と評価される一方で、
期待される型情報も保持するためである。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/property/{name} |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、session および URL variables の element id を用いて 既知の要素を取得することを 試みることの結果とする。
name を URL variables["name"] とする。
property を、 element 上でObject.[[GetProperty]](name) を 呼び出すことの結果とする。
result をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/css/{property name} |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、
URL variables["element id"] を用いて
既知の
要素を取得することを
試みることの結果とする。
computed value を、最初に一致する条件の結果とする:
xml" でない
property name"] の
計算値。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/text |
テキストを処理するとき、
空白は、
Unicode Character Database において
Unicode 文字プロパティ
"WSpace=Y" または "WS" を持つ文字として定義される。
[UAX44]
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、session および URL variables[element id] を用いて 既知の要素を取得することを 試みることの結果とする。
rendered text を、
bot.dom.getVisibleTextを
this 値として、
Function.[[Call]](null, element)
の結果と正確に同じ結果になる、
実装固有の手順を実行した結果とする。
rendered text をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/name |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、
URL variables["element id"] を用いて
既知の
要素を取得することを
試みることの結果とする。
qualified name を、
element の
tagName IDL
属性を取得した結果とする。
qualified name をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/rect |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、
session および URL variables["element id"] を用いて
既知の
要素を取得することを
試みることの結果とする。
coordinates を、session および element を用いて 絶対位置を計算することの結果とする。
rect を element の 境界矩形とする。
body を、次で初期化された新しい JSON Objectとする:
body をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/enabled |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、session および URL variables[element id] を用いて 既知の要素を取得することを 試みることの結果とする。
enabled を、
session の現在の閲覧
コンテキストの
アクティブ文書の型が
"xml" でない場合、初期値 true に設定された真偽値とする。
そうでなければ、enabled を false とし、 このアルゴリズムの最後の手順へジャンプする。
フォームコントロールが無効である場合、 enabled を false に設定する。
enabled をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/computedrole |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキストがもはや開かれていない場合、 errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、
URL variables["element id"] を用いて
既知の
要素を取得することを
試みることの結果とする。
role を、element の WAI-ARIA ロールを計算した結果とする。
role をデータとして持つsuccessを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/computedlabel |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキストがもはや開かれていない場合、 errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、session
および URL variables["element id"] を用いて
既知の要素を取得することを
試みることの結果とする。
label を、element のアクセシブル 名前に対する アクセシブルな 名前および説明の計算の結果とする。
label をデータとして持つsuccessを返す。
要素相互作用コマンドは、 フォームコントロールを操作するための高水準の命令セットを提供する。 Actionsとは異なり、 これらは暗黙に要素をビュー内へスクロールし、 それが相互作用可能な要素であることを検査する。
一部のリセット可能要素は、それら自身の消去
アルゴリズムを定義する。
それらに関連付けられたリセットアルゴリズムとは異なり、
これらのアルゴリズムの一部としてフォームコントロールに加えられる変更は、
ユーザーにより引き起こされた変更として数えられる
(したがって、例えば input イベントの発火を引き起こす)。
独自の消去アルゴリズムを定義しない
要素に対して消去アルゴリズムが呼び出されるとき、
代わりにそのリセットアルゴリズムが呼び出されなければならない。
input
要素に対する消去アルゴリズムは、
ダーティ値フラグおよびダーティ checkedness
フラグを false に戻し、
要素の値を
空文字列に設定し、
要素が
checked
内容属性を持つ場合は要素のcheckednessを true に設定し、
持たない場合は false に設定し、
選択されたファイルのリストを空にし、
その後、
type
属性の現在の状態が
値サニタイズアルゴリズムを定義する
場合に限りそれを呼び出すことである。
textarea
要素に対する消去アルゴリズムは、
ダーティ値フラグを false に戻し、
要素の生の値を空文字列に設定することである。
output
要素に対する消去アルゴリズムは、要素の
値モードフラグを default に設定し、
その後、要素のtextContent IDL 属性を
空文字列に設定する(したがって要素の子ノードを消去する)ことである。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/element/{element id}/click |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、session および element id を用いて 既知の要素を取得することを 試みることの結果とする。
element が
ファイルアップロード状態の
input
要素である場合、
errorを エラーコード invalid argumentとともに返す。
element のコンテナーを ビュー内へスクロールする。
element のコンテナーが依然としてビュー内にない場合、 errorを エラーコード element not interactableとともに返す。
element のコンテナーが別の要素により 遮蔽されている場合、 errorを エラーコード element click interceptedとともに返す。
element に対して照合する:
option
要素
parent node を element のコンテナーとする。
parent node において mouseOver イベントを 発火する。
parent node において mouseMove イベントを 発火する。
parent node において mouseDown イベントを 発火する。
parent node に対してフォーカス 手順を実行する。
element が無効でない場合:
previous selectedness を element の selectedness と等しくする。
element のコンテナーが
multiple
属性を持つ場合、
element のselectedness状態を、
その現在のselectednessの反対の値に
設定することによりトグルする。
そうでなければ、 element のselectedness状態を true に設定する。
previous selectedness が false である場合、
parent node において
change イベントを
発火する。
parent node において mouseUp イベントを 発火する。
parent node において click イベントを 発火する。
input state を、session および session の現在のトップレベル 閲覧 コンテキストが与えられたときの 入力状態を取得することの結果とする。
actions options を、 要素 オリジンである手順をウェブ 要素を表すに設定し、要素オリジンを取得手順を WebElement オリジンを取得するに設定した、新しいアクションオプションとする。
input id を、UUID を 生成することの結果とする。
source を、input state および "pointer" を用いて
入力ソースを
作成することの結果とする。
input state、input id および source を用いて 入力ソースを追加する。
click point を element のビュー内中心 点とする。
pointer move action を、引数 input id、
"pointer"、および "pointerMove" で構築された
アクション
オブジェクトとする。
pointer move action 上で
プロパティを設定することにより、
x を 0 にする。
pointer move action 上で
プロパティを設定することにより、
y を 0 にする。
pointer move action 上で
プロパティを設定することにより、
origin
を element にする。
pointer down action を、引数 input id、
"pointer"、および "pointerDown" で構築された
アクション
オブジェクトとする。
pointer down action 上で
プロパティを設定することにより、
button を 0 にする。
pointer up action を、引数 input id、
"pointer"、および "pointerUp" で構築された
アクション
オブジェクトとする。
pointer up action 上で
プロパティを設定することにより、
button
を 0 にする。
actions をリスト «pointer move action, pointer down action, pointer up action» とする。
input state、actions、session の現在の 閲覧コンテキスト、および actions options を用いて、 アクションのリストを 配送する。
input state および input id を用いて 入力ソースを 削除する。
前の手順で生成された DOM イベントを処理するのに十分な回数、 ユーザーエージェントのイベントループが回るまで待機する。
クリックにより発生した任意のナビゲーションの開始を許可するため、 実装定義の手順を実行する。
session を用いて ナビゲーションの完了を待機することを 試行する。
ナビゲーション後検査を実行することを 試行する。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/element/{element id}/clear |
content editable 要素を消去するには:
element のinnerHTML
IDL 属性が空文字列である場合、何もせずに返る。
element に対するフォーカス手順を実行する。
element のinnerHTML
IDL 属性を
空文字列に設定する。
element に対するフォーカス解除手順を実行する。
リセット可能要素を消去するには:
empty を、最初に一致する条件の結果とする:
type
属性を持つ
input
要素である
element が制約検証の候補であり、 それがその制約を満たし、 かつ empty が true である場合、 これらの副手順を中止する。
element に対するフォーカス手順を呼び出す。
element に対する消去アルゴリズムを呼び出す。
element に対するフォーカス解除手順を呼び出す。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、 session および element id を用いて 既知の 要素を取得することを 試みることの結果とする。
element が編集可能でない場合、 errorを エラーコード invalid element stateとともに返す。
element をビュー内へスクロールする。
timeout を session の セッションタイムアウトの暗黙的待機タイムアウトとする。
timer を新しいタイマーとする。
timeout が null でない場合:
timer および timeout を用いて タイマーを開始する。
element が相互作用可能になるか、 timer のタイムアウト発火フラグが 設定されるまで、 いずれか先に起こる方を待機する。
element が相互作用可能でない場合、 errorを エラーコード element not interactableとともに返す。
最初に一致する文の副手順を実行する:
リセット可能 要素を消去する手順を呼び出す。
content editable 要素を消去する手順を呼び出す。
errorを エラー コード invalid element stateとともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/element/{element id}/value |
要素へキーを送信コマンドは、 フォームコントロール要素を ビュー内へスクロールし、 その後、提供されたキーをその要素へ送信する。 要素がキーボード相互作用可能でない場合、 element not interactable errorが返される。
型入力不可フォームコントロールとは、
その
type
属性状態により、
主要な入力機構が仮想または物理キーボードによる手段ではなくなる
input
要素である。
型入力不可フォームコントロールは、
ユーザーエージェントによりテキスト入力コントロール以外のものとして
レンダリングされるフォームコントロール要素を指すことを意味する。
色ホイールとして提示される
color 状態の
input
要素を対象とする場合、
それとの相互作用は、
actions によるキーエミュレーションを用いて型入力されるのではなく、
シミュレートされる。
型入力不可フォーム
コントロールの他の例には、
システムネイティブウィジェットを介して相互作用されるフォームコントロール、
例えば
select
要素のスクロールされた option リストや、
非デスクトップデバイス上の
number 状態の
input
要素の数値キーパッドが含まれる。
入力に用いられるキー入力ソースは、 U+E000 (NULL) であるnull キーを送信することにより、 「型入力」の途中で消去され得る。
input state、input id、source、undo actions、および browsing context が与えられたとき、 修飾キー状態を消去するには:
source がキー入力ソースでない場合、 errorを エラーコード invalid argumentとともに返す。
actions options を、 要素オリジンである手順を ウェブ 要素を表すに設定し、要素オリジンを取得手順を WebElement オリジンを取得するに 設定した、新しいアクションオプションとする。
undo actions の辞書順にソートされたキー内の各 entry key について:
action を、キー entry key と等しい undo actions の値とする。
action が型 "key" かつサブ型 "keyUp" の
アクションオブジェクトでない場合、
errorを エラー
コード invalid
argumentとともに返す。
actions をリスト «action» とする
input state、actions、browsing context、 およびアクションオプションを用いて、 アクションのリストを配送する。
拡張書記素クラスターは、 単一のUnicode コードポイントからなり、 かつ code がundefinedでない場合、 型入力可能である。
keyboard に対するシフト状態は、
keyboard の shift プロパティの値である。
input state、input id、source、 text、および browsing context が与えられたとき、 型入力可能文字列に対するイベントを配送するには:
actions options を、 要素オリジンである手順を ウェブ 要素を表すに設定し、要素オリジンを取得手順を WebElement オリジンを取得するに 設定した、新しいアクションオプションとする。
global key state を、input state を用いて グローバルキー状態を取得することの結果とする。
char がシフト文字であり、 かつ source のシフト状態が false である場合:
action を、input id、"key"、
および "keyDown" で構築された
アクションオブジェクトとし、
その value プロパティを
U+E008 ("left shift") に設定する。
actions をリスト «action» とする。
input state、actions、および browsing context を用いて、 アクションのリストを 配送する。
char がシフト文字でなく、 かつ source のシフト状態が true である場合:
action を、input id、"key"、
および "keyUp" で構築された
アクションオブジェクトとし、
その value プロパティを
U+E008 ("left shift") に設定する。
tick actions をリスト «action» とする。
input state、actions、browsing context、 および actions options を用いて、 アクションのリストを 配送する。
keydown action を、引数 input id、"key"、
および "keyDown" で構築されたアクションオブジェクトとする。
keydown
action の value プロパティを char に設定する。
keyup action を、サブ型プロパティを "keyUp" に変更した
keydown action のコピーとする。
actions をリスト «keydown action, keyup action» とする。
input state、actions、browsing context、 および actions options を用いて、 アクションのリストを配送する。
type および cluster、ならびに browsing context が与えられたとき、 composition イベントを配送することが要求された場合、 リモートエンドは、 [UI-EVENTS] の要件に従って composition イベントを送信することに 相当し、かつ指定されたプロパティを持つ次のイベントを生成する、 browsing context 上で実装固有のアクション配送手順を 実行する必要がある。
composition event
とプロパティ:
| 属性 | 値 |
|---|---|
type |
type |
data |
cluster |
input state、input id、source、 text、browsing context、および actions options が与えられたとき、 文字列に対するアクションを配送するには:
clusters を、 text を 拡張書記素クラスターに分割することにより作成される配列とする。
undo actions を空のマップとする。
current typeable text を空のリストとする。
clusters 内のインデックス付きプロパティに対応する各 cluster について、最初に一致する文の副手順を実行する:
input state、input id、source、current typeable text、 および browsing context を用いて、 型入力可能文字列に対する イベントを配送する。current typeable text を空にする。
input state、input id、source、 undo actions および browsing context を用いて、 修飾キー状態を 消去することを 試行する。
undo actions を消去する。
input state、input id、source、 current typeable text、および browsing context を用いて、 型入力可能文字列に対する イベントを配送する。
current typeable text を空にする。
keydown action を、引数 input id、
"key"、および "keyDown" で構築された
アクションオブジェクトとする。
keydown
action の value プロパティを cluster に設定する。
actions をリスト «keydown action» とする
input state、actions、browsing context、および actions options を用いて、 アクションのリストを 配送する。
undo actions に、
キーを cluster とし、値を keydown
action のサブ型プロパティを
"keyUp" に変更したコピーとするエントリを追加する。
cluster を current typeable text に追加する。
input state、input id、source、 current typeable text、および browsing context を用いて、 型入力可能文字列に対する イベントを配送する。
current typeable text を空にする。
引数 "compositionstart"、undefined、
および browsing context を用いて、
composition event を配送する。
引数
"compositionupdate"、cluster、
および browsing context を用いて、
composition event を配送する。
引数
"compositionend"、cluster、
および browsing context を用いて、
composition event を配送する。
input state、input id および source、current typeable text、 および browsing context を用いて、 型入力可能文字列に対する イベントを配送する。
input state、input id、source、 undo actions、および browsing context を用いて 修飾キー状態を消去することを 試行する。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
text を、
parameters から "text" という名前の
プロパティを取得することの結果とする。
text がStringでない場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の閲覧 コンテキスト がもはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
element を、session および URL variables[element id] を用いて 既知の要素を取得することを 試みることの結果とする。
file を、element が
ファイルアップロード状態の
input
要素である場合は true、そうでなければ false とする。
file が false である、またはセッションの 厳密なファイル操作可能性が true である場合、次のサブステップを実行する:
element を ビュー内へスクロールする。
timeout を session の セッションタイムアウトの暗黙的待機 タイムアウトとする。
timer を新しいタイマーとする。
timeout が null でない場合:
timer および timeout を用いて タイマーを開始する。
element が キーボード相互作用可能になるか、 timer の タイムアウト発火 フラグが設定されるまで、 いずれか先に起こる方を待機する。
element がキーボード相互作用可能でない場合、 errorを エラー コード element not interactableとともに返す。
最初に一致する条件の副手順を実行する:
files を、text を改行 (\n) 文字で
分割した結果とする。
files の長さが 0 である場合、 errorを エラーコード invalid argumentとともに返す。
multiple を、
element 上で "multiple" を用いて
hasAttribute()
を呼び出すことの結果と等しくする。
multiple が false であり、
files の長さが 1 と等しくない場合、
errorを エラーコード invalid argumentとともに返す。
ユーザーにより与えられた各ファイルが存在することを検証する。 いずれかが存在しない場合、errorを エラーコード invalid argumentとともに返す。
input
要素上の選択された
ファイルを設定することに相当する、
実装固有の手順を完了する。
multiple が true である場合、
files は element の選択されたファイルに追加される。
element 上で、これらのイベントを順に 発火する:
element が value という名前の
自前プロパティを持たない場合、
errorを エラー
コード element
not interactableとともに返す
element が可変でない場合、 errorを エラーコード element not interactableとともに返す。
element 上で
プロパティを設定することにより、
value を text にする。
element がbad input に苦しんでいる場合、 errorを エラーコード invalid argumentとともに返す。
input state を、session および session の現在のトップレベル閲覧 コンテキストを用いて 入力 状態を取得することの結果とする。
input id を、UUID を 生成することの結果とする。
source を、input state および "key" を用いて
入力
ソースを作成することの結果とする。
input state、input id および source を用いて 入力ソースを追加する。
引数 input state、input id、および source、 text、ならびに session の現在の閲覧 コンテキストを用いて、 文字列に対するアクションを配送する。
input state および input id を用いて 入力ソースを削除する。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/source |
ページソースを取得コマンドは、 session の現在の 閲覧 コンテキストのアクティブ文書の DOM の文字列直列化を返す。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
session の現在の閲覧 コンテキストが もはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
source を、
require well-formed フラグに true を与え、
唯一の子が文書要素である
架空のノードに対して
フラグメント直列化アルゴリズムを
呼び出すことの結果とする。これにより例外が投げられる場合、
source を nullとする。
source が nullである場合、
source を、session の現在の閲覧
コンテキストのアクティブ文書を
文字列へ直列化することの結果とする。
source をデータとして持つsuccessを返す。
コレクションは、 Iterable インターフェイスを実装する Object であり、かつ次のいずれかである:
toString 自前プロパティの
初期値が "Arguments" である
Array のインスタンス
DOMTokenList のインスタンス
FileList のインスタンス
HTMLAllCollection のインスタンス
HTMLCollection のインスタンス
HTMLFormControlsCollection
のインスタンス
HTMLOptionsCollection
のインスタンス
NodeList のインスタンス
session、value および任意の引数 seen が与えられたとき、 JSON 逆直列化するには、 リモートエンドは次の手順を実行しなければならない:
seen が提供されていない場合、 seen を空のListとする。
下の最初の適切な手順へジャンプする:
value に対して照合する:
null
value をデータとして持つsuccessを返す。
session、value および seen と、 複製アルゴリズムとして JSON 逆直列化アルゴリズムを用いた オブジェクトを複製するアルゴリズムを返す。
session および value が与えられたとき、 JSON 複製するには、 session、value および空のListを用いた 内部 JSON 複製の結果を返す。
session、value および seen が与えられたとき、 内部 JSON 複製するには、 value に対して照合して、 最初に一致する文の値を返す:
null
value をデータとして持つsuccessを返す。
Element のインスタンス
element が古い場合、 errorを エラーコード stale element referenceとともに返す。
そうでなければ:
reference を、session および value に対する ウェブ要素参照オブジェクトとする。
reference をデータとして持つsuccessを返す。
ShadowRoot のインスタンス
shadow root が切り離されている場合、 errorを エラーコード detached shadow rootとともに返す。
そうでなければ:
reference を、session および value に対する シャドウルート参照オブジェクトとする。
reference をデータとして持つsuccessを返す。
WindowProxy オブジェクト
value 内の
WindowProxy オブジェクトの
関連する閲覧コンテキストが破棄されている場合、
errorを エラーコード stale element referenceとともに返す。
そうでなければ:
reference を、
value に対する
WindowProxy 参照
オブジェクトとする。
reference をデータとして持つsuccessを返す。
toJSON" という名前の自前プロパティを持つ
toJSON) により返された値を持つ
successを返す。
result を、session、 value および seen と、clone algorithm として 内部 JSON 複製を用いて オブジェクトを複製することの結果とする。
session、value、 seen、および clone algorithm が与えられたとき、 オブジェクトを 複製するには:
value が seen 内にある場合、 errorを エラーコード javascript errorとともに返す。
value を seen に追加する。
result を、 value に対して照合して、最初に一致する文の値とする:
length プロパティが
value の length
プロパティを取得することの結果と
等しい、新しいArray。
新しいObject。
value 内の各列挙可能プロパティについて、 次の副手順を実行する:
name をそのプロパティの名前とする。
source property value を、 value から name という名前の プロパティを取得することの結果とする。 そうすることでスクリプトが実行され、そのスクリプトがエラーを投げる場合、 errorを エラー コード javascript errorとともに返す。
cloned property result を、 session、source property value および seen を用いて clone algorithm を呼び出すことの結果とする。
cloned property result がsuccessである場合、 名前 name および値を cloned property result のデータと等しくして、 result の プロパティを設定する。
そうでなければ、cloned property result を返す。
seen の最後の要素を削除する。
引数 parameters を用いて リクエストからスクリプト引数を抽出することが要求された場合、 実装は次を行わなければならない:
script を、parameters から
"script" という名前の
プロパティを取得することの結果とする。
script がStringでない場合、 errorを エラーコード invalid argumentとともに返す。
args を、parameters から
"args" という名前のプロパティを取得することの結果とする。
args がArrayでない場合、errorを エラーコード invalid argumentとともに返す。
arguments を、session および args を用いて JSON 逆直列化したものとする。
script および arguments をデータとして持つsuccessを返す。
関数本体を実行するための規則は次の通りである。 このアルゴリズムはECMAScript 完了レコードを返す。
このアルゴリズム中の任意の時点でユーザープロンプトが現れた場合、
直ちに Completion { [[Type]]: normal, [[Value]]: null,
[[Target]]: empty } を返すが、このアルゴリズムの他の手順は
並列に実行し続ける。
window を、session の 現在の閲覧 コンテキストのアクティブ 文書の関連付けられた window とする。
environment settings を window の関連設定オブジェクトとする。
body がFunctionBodyとして構文解析できない場合、
または構文解析により早期エラーが検出される場合、
Completion { [[Type]]: normal, [[Value]]: null, [[Target]]: empty } を返す。
body がuse strict 指令を含む 指令プロローグで始まる場合、 strict を true とし、 そうでなければ strict を false とする。
environment settings を用いて スクリプト実行の準備をする。
environment settings を用いて コールバック実行の準備をする。
function を、次の引数で FunctionCreate を呼び出すことの結果とする:
completion を、 function を this 値として Function.[[Call]](window, parameters) とする。
environment settings を用いて コールバック実行後に クリーンアップする。
environment settings を用いて スクリプト実行後にクリーンアップする。
completion を返す。
上記のアルゴリズムは特定の要素に関連付けられていないため、 文書 CSP 指令の対象ではない。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/execute/sync |
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
body および arguments を、 引数 parameters を用いて リクエストからスクリプト 引数を抽出することを 試みることの結果とする。
session の現在の閲覧 コンテキストが もはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
timeout を session の セッションタイムアウトのスクリプトタイムアウトとする。
timer を新しいタイマーとする。
timeout が null でない場合:
timer および timeout を用いて タイマーを開始する。
promise を新しい Promiseとする。
次の副手順を並列に実行する:
scriptPromise を、引数 body および arguments を用いて 関数本体を実行するを promise 呼び出しすることの結果とする。
scriptPromise が値 v で充足されたら、 promise を値 v で 解決する。
scriptPromise が値 r で拒否されたら、 promise を値 r で 拒否する。
promise が解決されるか、 timer のタイムアウト発火フラグが 設定されるまで、 いずれか先に起こる方を待機する。
promise がまだ保留中であり、かつ timer のタイムアウト発火フラグが 設定されている場合、 errorを エラーコード script timeoutとともに返す。
promise が値 v で充足された場合、 result を、session および v を用いて JSON 複製することの結果とし、 result をデータとして持つsuccessを返す。
promise が理由 r で拒否された場合、 result を、session および r を用いて JSON 複製することの結果とし、 errorを エラー コード javascript errorおよびデータ result とともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/execute/async |
非同期スクリプトを実行コマンドは、 JavaScript を匿名関数として実行させる。 追加の値が関数への最後の引数として提供される。 これは非同期操作の完了を通知するために呼び出され得る関数である。 関数に提供された最初の引数は JSON に直列化され、 非同期スクリプトを実行により返される。
session、URL variables および parameters が与えられたときの リモートエンド手順は次の通りである:
body および arguments を、引数 parameters を用いて リクエストからスクリプト 引数を抽出することを 試みることの結果とする。
session の現在の閲覧 コンテキストが もはや開かれていない場合、errorを エラー コード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試行する。
timeout を session の セッションタイムアウトのスクリプトタイムアウトとする。
timer を新しいタイマーとする。
timeout が null でない場合:
timer および timeout を用いて タイマーを開始する。
promise を新しい Promiseとする。
次の副手順を並列に実行する:
resolvingFunctions を CreateResolvingFunctions(promise) とする。
resolvingFunctions.[[Resolve]] を
arguments に追加する。
scriptResult を、引数 body および arguments を用いて 関数本体を実行するを呼び出すことの結果とする。
scriptResult.[[Type]] が normal でない場合、
promise を scriptResult.[[Value]] の値で
拒否し、
これらの手順を中止する。
この仕様の以前の改訂では、提供されたスクリプトの 返値を認識していなかった。従来の挙動を維持するため、 返値がコマンドに影響するのは、それが "thenable" オブジェクトである場合、 またはこれを判定することで例外が生じる場合に限られる。
then を Get(scriptResult.[[Value]], "then") とする。
then.[[Type]] が normal でない場合、
promise を then.[[Value]] の値で
拒否し、
これらの手順を中止する。
IsCallable(then.[[Type]]) が
falseである場合、
これらの手順を中止する。
scriptPromise を PromiseResolve(Promise, scriptResult.[[Value]]) とする。
scriptPromise が値 v で充足されたら、 promise を値 v で 解決する。
scriptPromise が値 r で拒否されたら、 promise を値 r で 拒否する。
promise が解決されるか、 timer のタイムアウト発火フラグが 設定されるまで、 いずれか先に起こる方を待機する。
promise がまだ保留中であり、かつ timer のタイムアウト発火フラグが 設定されている場合、 errorを エラーコード script timeoutとともに返す。
promise が値 v で充足された場合、 result を、session および v を用いて JSON 複製することの結果とし、 result をデータとして持つsuccessを返す。
promise が理由 r で拒否された場合、 result を、session および r を用いて JSON 複製することの結果とし、 errorを エラー コード javascript errorおよびデータ result とともに返す。
Actions API は、ウェブブラウザーに仮想化されたデバイス入力を提供するための 低水準インターフェイスを提供する。 概念的には、Actions コマンドは時間を一連のティックに分割する。 ローカル エンドは、各ティック中の各入力デバイスの状態変化(存在する場合)に対応する 一連のアクションを送信する。 例えば、キーを押すことは、 単一のキー入力デバイスと 2 つのティックからなるアクションシーケンスにより表され、 1 つ目は keyDown アクションを含み、 2 つ目は keyUp アクションを含む。 一方、ピンチズーム入力は、3 つのティックと、 touch 型の 2 つのポインター入力デバイスからなるアクションシーケンスにより表され、 それぞれが pointerDown、 それに続く pointerMove、そして pointerUp の一連のアクションを実行する。
アクション配送の構成は、 アクション オプションオブジェクトにより制御される。これは、 プロトコルオブジェクトが要素オリジンを表すかどうかを検証する手順の集合である 要素 オリジンであるという名前のフィールドと、 要素を逆直列化するために用いられる手順の集合である 要素 オリジンを取得を持つ 構造体である。
session、origin および browsing context が与えられたとき、 WebElement オリジンを取得するには:,
表明:browsing context は現在の 閲覧コンテキストである。
element を、 session および origin を用いて 既知の 要素を取得することを 試みることの結果と等しくする。
element をデータとして持つsuccessを返す。
入力ソースは、入力イベントを提供する仮想デバイスである。 各入力ソースは、その入力ソースの型に固有の 構造体により 表される。各入力ソースは、入力状態マップ内のキーとして格納される 入力 IDを持つ。
input state、type および任意の subtype が与えられたとき、 入力ソースを 作成するには:
type の最初に一致する値と一致する副手順を実行する:
none"
key"
pointer"
wheel"
null 入力 ソースは、特定の物理デバイスに関連付けられない 入力ソースである。 null 入力 ソースは型固有の項目を持たず、次のアクションをサポートする:
| アクション | 非規範的説明 |
|---|---|
| pause | ティックの持続時間を指定するために整数引数とともに使用される、 または特定のティック中に 入力 ソースが何もしないことを示すプレースホルダーとして使用される。 |
null 入力ソースを作成するには、新しい null 入力 ソースを返す。
キー入力 ソースは、キーボード型デバイスに関連付けられた 入力ソースである。
キー入力ソースは、次の項目を持つ:
| 項目 | 非規範的説明 | 既定値 |
|---|---|---|
| pressed | 現在押されているキーを表す文字列の集合。 | 空集合 |
| alt | alt 修飾キーが押されているかどうかを示す boolean。 | False |
| ctrl | ctrl 修飾キーが押されているかどうかを示す boolean。 | False |
| meta | meta 修飾キーが押されているかどうかを示す boolean。 | False |
| shift | shift 修飾キーが押されているかどうかを示す boolean。 | False |
キー入力ソースは、 null 入力ソースと同じ pause アクションに加えて、次のアクションをサポートする:
| アクション | 非規範的説明 |
|---|---|
| keyDown | 特定のキーが押し下げられたままにされるべきことを示すために使用される。 |
| keyUp | 押し下げられているキーが解放されるべきことを示すために使用される。 |
キー入力ソースを作成するには、項目が既定値で初期化された新しい キー 入力ソースを返す。
ポインター 入力ソースは、ポインター型入力デバイスに関連付けられた 入力ソースである。
ポインター入力ソースは、次の項目を持つ:
| 項目 | 非規範的説明 | 既定値 |
|---|---|---|
| subtype | ポインティングデバイスの型。これは "mouse"、
"pen"、または "touch" にできる。
|
|
| pointerId | ポインティングデバイスの数値 ID。これは正の整数であり、 値 0 および 1 は mouse 型ポインター用に予約される。 | |
| pressed | 現在押し下げられているポインターボタンを表す符号なし整数の集合。 | 空集合 |
| x | ビューポート座標におけるポインターの x 位置を表す符号なし整数。 | 0 |
| y | ビューポート座標におけるポインターの y 位置を表す符号なし整数。 | 0 |
ポインター入力ソースは、 null 入力ソースと同じ pause アクションに加えて、次のアクションをサポートする:
| アクション | 非規範的説明 |
|---|---|
| pointerDown | 例えば(マウスの場合)ボタンを押し下げたままにすること、 または(タッチもしくはペンデバイスの場合)アクティブな面に接触することにより、 ポインターが何らかの方法で押し下げられるべきことを示すために使用される。 |
| pointerUp | 例えばマウスボタンを解放すること、またはペンもしくはタッチデバイスを アクティブな面から離すことにより、ポインターが何らかの方法で解放されるべきことを 示すために使用される。 |
| pointerMove | アクティブ(押下)状態または非アクティブ状態のいずれかで、 ポインターが移動すべき画面上の位置を示すために使用される。 |
| pointerCancel | ポインターアクションを取り消すために使用される。 |
input state および subtype が与えられたとき、 ポインター入力ソースを作成するオブジェクトは、 subtype を subtype に設定し、pointerId を input state および subtype を用いて ポインター ID を取得するに設定し、 その他の項目を既定値に設定した新しいポインター入力 ソースを返す。
ホイール 入力ソースは、ホイール型入力デバイスに関連付けられた 入力ソースである。 ホイール入力 ソースは型固有の項目を持たず、null 入力 ソースと同じ pause アクションに加えて、 次のアクションをサポートする:
| アクション | 非規範的説明 |
|---|---|
| scroll | スクロールホイールが下、上、右、または左へ回され、 ページを下、上、右、または左へスクロールすることを示すために使用される。 |
ホイール入力ソースを作成するには、新しい ホイール 入力ソースを返す。
入力状態は、 入力ソースのコレクション全体の状態を表す。 入力状態は、次の項目を持つ:
入力 取消リスト。これはアクション オブジェクトのリストである。このリストは 入力ソースの状態をリセットするときに、 イベント配送を管理するために用いられる。
session および browsing context が与えられたとき、 入力状態を 取得するには:
表明:browsing context はトップレベル閲覧 コンテキストである。
input state map を、 session の閲覧コンテキスト 入力状態マップとする。
input state map が browsing context を 含まない場合、 input state map[browsing context] を 入力 状態を作成するに設定する。
input state map[browsing context] を返す。
session および browsing context が与えられたとき、 入力状態を リセットするには:
表明:browsing context はトップレベル閲覧 コンテキストである。
input state map を、 session の閲覧コンテキスト 入力状態マップとする。
input state map[browsing context] が 存在する場合、input state map[browsing context] を削除する。
入力 状態を作成するには:
input state、input id、および source が与えられたとき、 入力 ソースを追加するには:
input state map を input state の入力状態マップとする。
input state および input id が与えられたとき、 入力 ソースを削除するには:
表明:input state の入力取消リスト内の項目のいずれも、 input id と等しい id を持たない。
input state map を input state の入力状態マップとする。
input state および input id が与えられたとき、 入力 ソースを取得するには:
input state map を input state の入力状態マップとする。
input state map[input id] が存在する場合、 input state map[input id] を返す。
undefined を返す。
input state、type、input id、および 任意の subtype が与えられたとき、 入力ソースを取得または作成するには:
source を、input state および input id を用いて 入力ソースを取得するとする。
source が undefined でなく、かつ source の型が type と等しくない場合、または source が ポインター入力ソースである場合、 errorを エラー コード invalid argumentとともに返す。
source が undefined である場合、 source を、input state および type を用いて 入力 ソースを作成することを 試みることの結果に設定する。
source をデータとして持つ success を返す。
グローバルキー 状態は、pressed、 altKey、ctrlKey、metaKey、および shiftKey という項目を持つ 構造体である。
input state が与えられたとき、 グローバルキー 状態を取得するには:
input state map を input state の入力状態マップとする。
sources を、input state map を用いて値を取得することの結果とする。
key state を、pressed を空集合に、
altKey、ctrlKey、metaKey、
および shiftKey を false に設定した新しい
グローバルキー状態とする。
sources 内の各 source について:
source がキー入力ソースでない場合、 このループの最初の手順に進む。
key state の pressed 項目を、
その現在値と source の pressed 項目の和集合に設定する。
source の alt 項目が true である場合、
key state の altKey 項目を true に設定する。
source の ctrl 項目が true である場合、
key state の ctrlKey 項目を true に設定する。
source の meta 項目が true である場合、
key state の metaKey 項目を true に設定する。
source の shift 項目が true である場合、
key state の shiftKey 項目を true に設定する。
key state を返す。
input state および subtype が与えられたとき、 ポインター ID を取得するには:
mouse" である場合は
minimum id を 0 とし、そうでなければ 2 とする。
sources 内の各 source について。:
source がポインター入力 ソースである場合、 source の pointerId を pointer ids に追加する。
minimum id 以上であり、 pointer ids に含まれない最小の整数を返す。
ティックは、アクションを実行できる時間の基本単位である。 ティック中、各入力ソースには、 割り当てられたアクション——noop のpauseアクションである可能性もある——があり、それは ユーザーエージェント内部状態の変更をもたらし、最終的に DOM イベントがページ上で 発火されることを引き起こし得る。次のティックは、 ユーザーエージェントが現在のティックで生成されたすべての DOM イベントを処理する機会を得た後に始まる。
非同期に 待機するとは、ブラウザーが イベント ループを処理し続けることを許しつつ、何かが発生するのを待機することを意味する。
最も低いレベルでは、アクションの振る舞いは、実際の入力デバイスを用いた リモートエンドの振る舞いを可能な限り忠実に模倣することが意図され、 実装戦略は、例えば合成イベントをブラウザーのイベントループへ注入することを含み得る。 したがって、アクションを配送する手順は必然的に実装固有の領域に入ることになる。 しかし、実装間で一貫していなければならない、コンテンツから観測可能な効果がいくつかある。 これに対応するため、この仕様は、 リモートエンドが 実装固有のアクション 配送手順を実行することを要求する。これは、閲覧コンテキスト context、 ならびに list of events およびそれらのプロパティに対して行われる。 これらの手順は、context 上で与えられた入力デバイス操作を実行することと同等であり、 list of events 内のエントリに対応する信頼済みイベントが配送されるようにしなければならない。
リクエストから アクションシーケンスを抽出するアルゴリズムは、 アクションシーケンスを表す JSON Objectを取り、入力を検証し、 入力 JSON の転置であるデータ構造を返す。それにより、単一の ティックで実行されるアクションが グループ化される。
source、x offset、y offset、 origin、browsing context、および actions options が与えられたとき、 原点に相対的な座標を取得するには:
origin の最初に一致する値の副手順を実行する
viewport"
x を x offset と等しくし、 y を y offset と等しくする。
pointer"
start x を source の x
プロパティと等しくする。
start y を source の y
プロパティと等しくする。
x を start x + x offset と等しくし、y を start y + y offset と等しくする。
(x, y) を返す
input state、parameters、および actions options が与えられたとき、 アクションシーケンスを抽出するには:
actions を、parameters から "actions" という名前の
プロパティを
取得することの結果とする。
actions がundefinedである、または Arrayでない場合、errorを エラー コード invalid argumentとともに返す。
actions by tick を空のListとする。
actions 内のインデックス付きプロパティに対応する各値 action sequence について:
source actions を、input state、action sequence、および actions options が与えられたときに 入力ソースアクション シーケンスを処理することを試みることの結果とする。
source actions 内の各 action について:
actions by tick をデータとして持つsuccessを返す。
input state、action sequence、および actions options が与えられ、 入力ソースアクション シーケンスを処理することが要求された場合、 リモートエンドは 次を行わなければならない:
type を、action sequence から
"type" という名前のプロパティを取得することの結果とする。
type が
"key"、"pointer"、
"wheel"、または "none" でない場合、
errorを
エラーコード invalid
argumentとともに返す。
id を、
action sequence から "id" プロパティを取得することの結果とする。
id がundefinedである、またはStringでない場合、 errorを エラーコード invalid argumentとともに返す。
type が "pointer" と等しい場合、
parameters data を action sequence から
"parameters" プロパティを取得することの結果とする。
その後、parameters を、
parameters data を引数として
ポインターパラメーターを処理することを
試みることの結果とする。
source を、input state、type および id が与えられたときに 入力ソースを取得または 作成することを試みることの結果とする。
parameters がundefinedでない場合、
その pointerType プロパティが source の subtype プロパティと
等しくないなら、errorを
エラーコード invalid
argumentとともに返す。
action items を、action sequence から
"actions" という名前のプロパティを
取得することの結果とする。
action items がArrayでない場合、 errorを エラーコード invalid argumentとともに返す。
actions を新しいリストとする。
action items 内の各 action item について:
action item がObjectでない場合、 errorを エラー コード invalid argumentとともに返す。
type が "none" である場合、
action を、id および
action item をパラメーターとして
null アクションを処理することを
試みることの結果とする。
そうでなければ、type が "key" である場合、
action を、id および
action item をパラメーターとして
キーアクションを処理することを
試みることの結果とする。
そうでなければ、type が "pointer" である場合、
action を、id、
parameters、action item、および actions
options をパラメーターとして
ポインターアクションを処理することを
試みることの結果とする。
そうでなければ、type が "wheel" である場合、
action を、id および
action item、ならびに actions options をパラメーターとして
ホイールアクションを処理することを
試みることの結果とする。
action を actions に追加する。
actions をデータとして持つsuccessを返す。
既定のポインターパラメーターは、
プロパティ pointerType が mouse に設定されたオブジェクトからなる。
parameters data が与えられたとき、 ポインターパラメーターを処理するには:
parameters を既定のポインター パラメーターとする。
parameters data がundefinedである場合、 parameters をデータとして持つsuccessを返す。
parameters data がObjectでない場合、 errorを エラーコード invalid argumentとともに返す。
pointer type を、parameters data から
"pointerType" という名前の
プロパティを取得することの結果とする。
pointer type がundefinedでない場合:
pointer type が
"mouse"、
"pen"、
または "touch" のいずれの値でもない場合、
errorを エラー
コード invalid argumentとともに返す。
parameters の pointerType プロパティを
pointer type に設定する。
parameters をデータとして持つsuccessを返す。
引数 id、type、および subtype で構築された アクションオブジェクトは、 プロパティ id が id に、type が type に、subtype が subtype に設定されたオブジェクトである。特定のアクションオブジェクトには、 この仕様内の他のアルゴリズムにより追加のプロパティが加えられる。
id および action item が与えられたとき、 null アクションを処理するには:
subtype を、action item から
"type" という名前のプロパティを取得することの結果とする。
subtype が "pause" でない場合、
errorを エラーコード invalid argumentとともに返す。
action を、引数
id、
"none"、
および subtype で構築されたアクションオブジェクトとする。
result を、引数 action item および action で pause アクションを処理することを試みることの結果とする。
result を返す。
id および action item が与えられたとき、 キー アクションを処理するには:
subtype を、action item から
"type" という名前のプロパティを取得することの結果とする。
subtype が
"keyUp"、
"keyDown"、
または "pause" のいずれの値でもない場合、
errorを エラーコード invalid argumentとともに返す。
action を、引数
id、
"key"、
および subtype で構築されたアクションオブジェクトとする。
subtype が "pause" である場合、
result を、引数
action item および action で
pause
アクションを処理することを試みることの結果とし、
result を返す。
key を、action item から
"value" という名前のプロパティを取得することの結果とする。
key が単一のUnicode コードポイントを含むStringでない場合 または書記素クラスター? errorを エラーコード invalid argumentとともに返す。
action 上の value プロパティを key に設定する。
action をデータとして持つ success を返す。
id、 parameters、action item、および action options が与えられたとき、 ポインター アクションを処理するには:
subtype を、action item から
"type" という名前のプロパティを取得することの結果とする。
subtype が
"pause"、
"pointerUp"、
"pointerDown"、
"pointerMove"、
または "pointerCancel" のいずれの値でもない場合、
errorを エラーコード invalid argumentとともに返す。
action を、引数
id、
"pointer"、
および subtype で構築されたアクションオブジェクトとする。
subtype が "pause" である場合、
result を、引数
action item、action、および actions
options で
pause アクションを処理することを
試みることの結果とし、
result を返す。
action の pointerType プロパティを、
parameters の pointerType プロパティと等しく設定する。
subtype が "pointerUp" または "pointerDown" である場合、
引数 action item および action で
ポインター
up または pointer down アクションを処理する。
そうすることでerrorになる場合、そのerrorを返す。
subtype が "pointerMove" である場合、
引数
action item、action、および actions
options で
ポインター移動アクションを処理する。
そうすることでerrorになる場合、その
errorを返す。
subtype が "pointerCancel" である場合、
pointer cancel アクションを処理する。
そうすることでerrorになる場合、そのerrorを返す。
action をデータとして持つsuccessを返す。
id、action item、および actions options が与えられたとき、 ホイール アクションを処理するには:
subtype を、action item から
"type" という名前のプロパティを取得することの結果とする。
subtype が値
"pause"、または
"scroll" でない場合、
errorを エラーコード invalid argumentとともに返す。
action を、引数
id、
"wheel"、
および subtype で構築されたアクションオブジェクトとする。
subtype が "pause" である場合、
result を、引数
action item および action で
pause アクションを処理することを
試みることの結果とし、
result を返す。
duration を、action item から
"duration" という名前のプロパティを取得することの結果とする。
duration がundefinedでなく、かつ duration が 0 以上のIntegerでない場合、errorを エラーコード invalid argumentとともに返す。
action の duration プロパティを
duration に設定する。
origin を、action item から
origin プロパティを取得することの結果とする。
origin がundefinedである場合、
origin を "viewport" と等しくする。
origin が "viewport" と等しくない、
または origin を与えられた actions options の
要素オリジンである手順が
false を返す場合、errorを
エラーコード invalid
argumentとともに返す。
action の origin プロパティを
origin に設定する。
x を、action item から
x プロパティを取得することの結果とする。
x がIntegerでない場合、errorを エラーコード invalid argumentとともに返す。
action の x プロパティを x に設定する。
y を、action item から
y プロパティを取得することの結果とする。
y がIntegerでない場合、errorを エラーコード invalid argumentとともに返す。
action の y プロパティを y に設定する。
deltaX を、action item から
deltaX プロパティを取得することの結果とする。
deltaX がIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の deltaX プロパティを deltaX に設定する。
deltaY を、action item から
deltaY プロパティを取得することの結果とする。
deltaY がIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の deltaY プロパティを deltaY に設定する。
action をデータとして持つsuccessを返す。
action item および action が与えられたとき、 pause アクションを処理するには:
duration を、action item から
"duration" プロパティを
取得することの結果とする。
duration がundefinedでなく、 かつ duration が 0 以上のIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の duration プロパティを
duration に設定する。
action をデータとして持つ success を返す。
action item および action が与えられたとき、 pointer up または pointer down アクションを処理するには:
button を、
action item から button プロパティを取得することの結果とする。
button が 0 以上のIntegerでない場合、errorを エラーコード invalid argumentとともに返す。
action の button プロパティを
button に設定する。
width を、
action item から width プロパティを取得することの結果とする。
width がundefinedでなく、 かつ width が 0 以上のNumberでない場合、errorを エラーコード invalid argumentとともに返す。
action の width プロパティを
width に設定する。
height を、
action item から height プロパティを取得することの結果とする。
height がundefinedでなく、 かつ height が 0 以上のNumberでない場合、errorを エラーコード invalid argumentとともに返す。
action の height プロパティを
height に設定する。
pressure を、
action item から pressure プロパティを取得することの結果とする。
pressure がundefinedでなく、 かつ pressure が 0 以上 1 以下のNumberでない場合、errorを エラーコード invalid argumentとともに返す。
action の pressure プロパティを
pressure に設定する。
tangentialPressure を、
action item から tangentialPressure プロパティを取得することの結果とする。
tangentialPressure がundefinedでなく、 かつ tangentialPressure が -1 以上 1 以下のNumberでない場合、 errorを エラーコード invalid argumentとともに返す。
action の tangentialPressure プロパティを
tangentialPressure に設定する。
tiltX を、
action item から tiltX プロパティを取得することの結果とする。
tiltX がundefinedでなく、 かつ tiltX が -90 以上 90 以下のIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の tiltX プロパティを
tiltX に設定する。
tiltY を、
action item から tiltY プロパティを取得することの結果とする。
tiltY がundefinedでなく、 かつ tiltY が -90 以上 90 以下のIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の tiltY プロパティを
tiltY に設定する。
twist を、
action item から twist プロパティを取得することの結果とする。
twist がundefinedでなく、 かつ twist が 0 以上 359 以下のIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の twist プロパティを
twist に設定する。
altitudeAngle を、
action item から altitudeAngle プロパティを取得することの結果とする。
altitudeAngle がundefinedでなく、 かつ altitudeAngle が 0 以上 π/2 以下のNumberでない場合、 errorを エラーコード invalid argumentとともに返す。
action の altitudeAngle プロパティを
altitudeAngle に設定する。
azimuthAngle を、
action item から azimuthAngle プロパティを取得することの結果とする。
azimuthAngle がundefinedでなく、 かつ azimuthAngle が 0 以上 2π 以下のNumberでない場合、 errorを エラーコード invalid argumentとともに返す。
action の azimuthAngle プロパティを
azimuthAngle に設定する。
nullをデータとして持つ success を返す。
action item、action、および actions options が与えられたとき、 ポインター移動アクションを処理するには:
duration を、
action item から duration プロパティを取得することの結果とする。
duration がundefinedでなく、 かつ duration が 0 以上のIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の duration プロパティを
duration に設定する。
origin を、
action item から origin
プロパティを取得することの結果とする。
origin がundefinedである場合、
origin を "viewport" と等しくする。
origin が "viewport"
または "pointer" と等しくなく、かつ origin を与えられた
actions options の要素
オリジンである手順が false を返す場合、
errorを エラーコード invalid argumentとともに返す。
action の origin プロパティを
origin に設定する。
x を、
action item から x
プロパティを取得することの結果とする。
x がNumberでない場合、errorを エラーコード invalid argumentとともに返す。
action の x プロパティを
x に設定する。
y を、
action item から y
プロパティを取得することの結果とする。
y がNumberでない場合、errorを エラーコード invalid argumentとともに返す。
action の y プロパティを
y に設定する。
width を、
action item から width プロパティを取得することの結果とする。
width がundefinedでなく、 かつ width が 0 以上のNumberでない場合、errorを エラーコード invalid argumentとともに返す。
action の width プロパティを
width に設定する。
height を、
action item から height プロパティを取得することの結果とする。
height がundefinedでなく、 かつ height が 0 以上のNumberでない場合、errorを エラーコード invalid argumentとともに返す。
action の height プロパティを
height に設定する。
pressure を、
action item から pressure プロパティを取得することの結果とする。
pressure がundefinedでなく、 かつ pressure が 0 以上 1 以下のNumberでない場合、errorを エラーコード invalid argumentとともに返す。
action の pressure プロパティを
pressure に設定する。
tangentialPressure を、
action item から tangentialPressure プロパティを取得することの結果とする。
tangentialPressure がundefinedでなく、 かつ tangentialPressure が -1 以上 1 以下のNumberでない場合、 errorを エラーコード invalid argumentとともに返す。
action の tangentialPressure プロパティを
tangentialPressure に設定する。
tiltX を、
action item から tiltX プロパティを取得することの結果とする。
tiltX がundefinedでなく、 かつ tiltX が -90 以上 90 以下のIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の tiltX プロパティを
tiltX に設定する。
tiltY を、
action item から tiltY プロパティを取得することの結果とする。
tiltY がundefinedでなく、 かつ tiltY が -90 以上 90 以下のIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の tiltY プロパティを
tiltY に設定する。
twist を、
action item から twist プロパティを取得することの結果とする。
twist がundefinedでなく、 かつ twist が 0 以上 359 以下のIntegerでない場合、 errorを エラーコード invalid argumentとともに返す。
action の twist プロパティを
twist に設定する。
altitudeAngle を、
action item から altitudeAngle プロパティを取得することの結果とする。
altitudeAngle がundefinedでなく、 かつ altitudeAngle が 0 以上 π/2 以下のNumberでない場合、 errorを エラーコード invalid argumentとともに返す。
action の altitudeAngle プロパティを
altitudeAngle に設定する。
azimuthAngle を、
action item から azimuthAngle プロパティを取得することの結果とする。
azimuthAngle がundefinedでなく、 かつ azimuthAngle が 0 以上 2π 以下のNumberでない場合、 errorを エラーコード invalid argumentとともに返す。
action の azimuthAngle プロパティを
azimuthAngle に設定する。
nullをデータとして持つ success を返す。
アクションを配送するアルゴリズムは、 ティックごとにグループ化されたアクションのリストを取り、 その後、各アクションをシーケンス内の適切な時点で実行させる。
input state が与えられたとき、 アクションキュートークンを待機するには:
token を新しい一意識別子とする。
token を input state の アクションキューにエンキューする。
token が input state のアクションキュー内の 最初の項目になるまで待機する。
input state、actions by tick、browsing context、および actions options が与えられたとき、 アクションを 配送するには:
input state を用いて アクションキュートークンを待機する。
actions result を、 input state、actions by tick、browsing context、および actions options を用いて 内部的にアクションを配送することの結果とする。
input state のアクションキューをデキューする。
表明:これは token を返す
actions result を返す。
input state、actions by tick、browsing context、および actions options が与えられたとき、 内部的に アクションを配送するには:
actions by tick 内の各項目 tick actions について:
tick duration を、引数 tick actions を用いて ティック持続時間を計算することの 結果とする。
input state、tick actions、tick duration、 browsing context、および actions options を用いて ティックアクションを配送することを 試みる。
次の条件がすべて満たされるまで待機する:
ティックアクションを配送する 手順の最後の呼び出しから生じた保留中の 非同期 待機がない。
ユーザーエージェントのイベントループが、 ティック アクションを配送する手順の最後の呼び出しにより生成された DOM イベントを処理するのに十分な回数だけ回っている。
少なくとも tick duration ミリ秒が経過している。
nullをデータとして持つ success を返す。
tick actions が与えられたとき、 ティック 持続時間を計算するには:
max duration を 0 とする。
tick actions 内の各 action object について:
duration をundefinedとする。
action object の subtype プロパティが
"pause" に設定されている場合、または action object の type
プロパティが "pointer" に設定され subtype プロパティが
"pointerMove" に設定されている場合、または
action object の type プロパティが "wheel" に設定され
subtype プロパティが "scroll" に設定されている場合、
duration を action object の duration
プロパティと等しくする。
duration がundefinedでなく、 かつ duration が max duration より大きい場合、 max duration を duration と等しくする。
max duration を返す。
input state、tick actions、tick duration、 browsing context、および actions options が与えられたとき、 ティック アクションを配送するには:
tick actions 内の各 action object について:
input id を action object の id プロパティの値と等しくする。
source type を action object の type プロパティの値と等しくする。
source を、input state および input id が 与えられたときに入力 ソースを取得することの結果とする。
表明:source は undefined でない。
global key state を、input state を用いて グローバルキー状態を 取得することの結果とする。
subtype を action object の subtype とする。
algorithm を、次の表のうち source type 列が source type であり、 subtype 列が subtype と等しい行における dispatch action algorithm 列の値とする。
| ソース型 | サブタイプ | 配送アクションアルゴリズム |
|---|---|---|
"none" |
"pause" |
pause アクションを配送する |
"key" |
"pause" |
pause アクションを配送する |
"key" |
"keyDown" |
keyDown アクションを配送する |
"key" |
"keyUp" |
keyUp アクションを配送する |
"pointer" |
"pause" |
pause アクションを配送する |
"pointer" |
"pointerDown" |
pointerDown アクションを配送する |
"pointer" |
"pointerUp" |
pointerUp アクションを配送する |
"pointer" |
"pointerMove" |
pointerMove アクションを配送する |
"pointer" |
"pointerCancel" |
pointerCancel アクションを配送する |
"wheel" |
"pause" |
pause アクションを配送する |
"wheel" |
"scroll" |
scroll アクションを配送する |
subtype が "keyDown" である場合、
subtype プロパティを "keyUp" に変更した
action object のコピーを input
state の入力取消リストに追加する。
subtype が "pointerDown" である場合、
subtype プロパティを "pointerUp" に変更した
action object のコピーを input
state の入力取消リストに追加する。
input state、actions、browsing context、 および actions options が与えられたとき、 アクションのリストを配送するには:
tick actions をリスト «actions» とする
actions by tick をリスト «tick actions» とする。
input state、actions by tick、browsing context、 および actions options を用いて アクションを配送することの結果を返す。
action object、source、global key state、tick duration、 browsing context、および actions options が与えられたとき、 pause アクションを配送するには:
生のキー key に対する 正規化されたキー値は、 key が下の表に現れる場合、 第 1 列に key のUnicode コードポイントを含む行の第 2 列の文字列値であり、そうでなければ key である。
| key のコードポイント | 正規化されたキー値 |
|---|---|
\uE000 |
"Unidentified" |
\uE001 |
"Cancel" |
\uE002 |
"Help" |
\uE003 |
"Backspace" |
\uE004 |
"Tab" |
\uE005 |
"Clear" |
\uE006 |
"Return" |
\uE007 |
"Enter" |
\uE008 |
"Shift" |
\uE009 |
"Control" |
\uE00A |
"Alt" |
\uE00B |
"Pause" |
\uE00C |
"Escape" |
\uE00D |
" " |
\uE00E |
"PageUp" |
\uE00F |
"PageDown" |
\uE010 |
"End" |
\uE011 |
"Home" |
\uE012 |
"ArrowLeft" |
\uE013 |
"ArrowUp" |
\uE014 |
"ArrowRight" |
\uE015 |
"ArrowDown" |
\uE016 |
"Insert" |
\uE017 |
"Delete" |
\uE018 |
";" |
\uE019 |
"=" |
\uE01A |
"0" |
\uE01B |
"1" |
\uE01C |
"2" |
\uE01D |
"3" |
\uE01E |
"4" |
\uE01F |
"5" |
\uE020 |
"6" |
\uE021 |
"7" |
\uE022 |
"8" |
\uE023 |
"9" |
\uE024 |
"*" |
\uE025 |
"+" |
\uE026 |
"," |
\uE027 |
"-" |
\uE028 |
"." |
\uE029 |
"/" |
\uE031 |
"F1" |
\uE032 |
"F2" |
\uE033 |
"F3" |
\uE034 |
"F4" |
\uE035 |
"F5" |
\uE036 |
"F6" |
\uE037 |
"F7" |
\uE038 |
"F8" |
\uE039 |
"F9" |
\uE03A |
"F10" |
\uE03B |
"F11" |
\uE03C |
"F12" |
\uE03D |
"Meta" |
\uE040 |
"ZenkakuHankaku" |
\uE050 |
"Shift" |
\uE051 |
"Control" |
\uE052 |
"Alt" |
\uE053 |
"Meta" |
\uE054 |
"PageUp" |
\uE055 |
"PageDown" |
\uE056 |
"End" |
\uE057 |
"Home" |
\uE058 |
"ArrowLeft" |
\uE059 |
"ArrowUp" |
\uE05A |
"ArrowRight" |
\uE05B |
"ArrowDown" |
\uE05C |
"Insert" |
\uE05D |
"Delete" |
key に対する codeは、 次の表の第 1 列または第 2 列のいずれかに key を持つ行が存在する場合、 その行の最後の列の値であり、 そうした行が存在しない場合はundefinedである。
shift された文字は、次の表の第 2 列に現れるものである。
| キー | 代替キー | code |
|---|---|---|
"`" |
"~" |
"Backquote" |
"\" |
"|" |
"Backslash" |
"\uE003" |
|
"Backspace" |
"[" |
"{" |
"BracketLeft" |
"]" |
"}" |
"BracketRight" |
"," |
"<" |
"Comma" |
"0" |
")" |
"Digit0" |
"1" |
"!" |
"Digit1" |
"2" |
"@" |
"Digit2" |
"3" |
"#" |
"Digit3" |
"4" |
"$" |
"Digit4" |
"5" |
"%" |
"Digit5" |
"6" |
"^" |
"Digit6" |
"7" |
"&" |
"Digit7" |
"8" |
"*" |
"Digit8" |
"9" |
"(" |
"Digit9" |
"=" |
"+" |
"Equal" |
"<" |
">" |
"IntlBackslash" |
"a" |
"A" |
"KeyA" |
"b" |
"B" |
"KeyB" |
"c" |
"C" |
"KeyC" |
"d" |
"D" |
"KeyD" |
"e" |
"E" |
"KeyE" |
"f" |
"F" |
"KeyF" |
"g" |
"G" |
"KeyG" |
"h" |
"H" |
"KeyH" |
"i" |
"I" |
"KeyI" |
"j" |
"J" |
"KeyJ" |
"k" |
"K" |
"KeyK" |
"l" |
"L" |
"KeyL" |
"m" |
"M" |
"KeyM" |
"n" |
"N" |
"KeyN" |
"o" |
"O" |
"KeyO" |
"p" |
"P" |
"KeyP" |
"q" |
"Q" |
"KeyQ" |
"r" |
"R" |
"KeyR" |
"s" |
"S" |
"KeyS" |
"t" |
"T" |
"KeyT" |
"u" |
"U" |
"KeyU" |
"v" |
"V" |
"KeyV" |
"w" |
"W" |
"KeyW" |
"x" |
"X" |
"KeyX" |
"y" |
"Y" |
"KeyY" |
"z" |
"Z" |
"KeyZ" |
"-" |
"_" |
"Minus" |
"." |
"." |
"Period" |
"'" |
""" |
"Quote" |
";" |
":" |
"Semicolon" |
"/" |
"?" |
"Slash" |
"\uE00A" |
|
"AltLeft" |
"\uE052" |
|
"AltRight" |
"\uE009" |
|
"ControlLeft" |
"\uE051" |
|
"ControlRight" |
"\uE006" |
|
"Enter" |
"\uE00B" |
|
"Pause" |
"\uE03D" |
|
"MetaLeft" |
"\uE053" |
|
"MetaRight" |
"\uE008" |
|
"ShiftLeft" |
"\uE050" |
|
"ShiftRight" |
" " |
"\uE00D" |
"Space" |
"\uE004" |
|
"Tab" |
"\uE017" |
|
"Delete" |
"\uE010" |
|
"End" |
"\uE002" |
|
"Help" |
"\uE011" |
|
"Home" |
"\uE016" |
|
"Insert" |
"\uE00F" |
|
"PageDown" |
"\uE00E" |
|
"PageUp" |
"\uE015" |
|
"ArrowDown" |
"\uE012" |
|
"ArrowLeft" |
"\uE014" |
|
"ArrowRight" |
"\uE013" |
|
"ArrowUp" |
"\uE00C" |
|
"Escape" |
"\uE031" |
|
"F1" |
"\uE032" |
|
"F2" |
"\uE033" |
|
"F3" |
"\uE034" |
|
"F4" |
"\uE035" |
|
"F5" |
"\uE036" |
|
"F6" |
"\uE037" |
|
"F7" |
"\uE038" |
|
"F8" |
"\uE039" |
|
"F9" |
"\uE03A" |
|
"F10" |
"\uE03B" |
|
"F11" |
"\uE03C" |
|
"F12" |
"\uE019" |
|
"NumpadEqual" |
"\uE01A" |
"\uE05C" |
"Numpad0" |
"\uE01B" |
"\uE056" |
"Numpad1" |
"\uE01C" |
"\uE05B" |
"Numpad2" |
"\uE01D" |
"\uE055" |
"Numpad3" |
"\uE01E" |
"\uE058" |
"Numpad4" |
"\uE01F" |
|
"Numpad5" |
"\uE020" |
"\uE05A" |
"Numpad6" |
"\uE021" |
"\uE057" |
"Numpad7" |
"\uE022" |
"\uE059" |
"Numpad8" |
"\uE023" |
"\uE054" |
"Numpad9" |
"\uE025" |
|
"NumpadAdd" |
"\uE026" |
|
"NumpadComma" |
"\uE028" |
"\uE05D" |
"NumpadDecimal" |
"\uE029" |
|
"NumpadDivide" |
"\uE007" |
|
"NumpadEnter" |
"\uE024" |
|
"NumpadMultiply" |
"\uE027" |
|
"NumpadSubtract" |
key に対する
キー
位置は、下の表の第 1 列に key が現れる行が存在する場合、
その行の最後の列の値であり、そうした行が存在しない場合は
0 である。
| key のコードポイント | 説明 | 位置 |
|---|---|---|
\uE007 |
Enter | 1 |
\uE008 |
左 Shift | 1 |
\uE009 |
左 Control | 1 |
\uE00A |
左 Alt | 1 |
\uE019 |
テンキー = | 3 |
\uE01A |
テンキー 0 | 3 |
\uE01B |
テンキー 1 | 3 |
\uE01C |
テンキー 2 | 3 |
\uE01D |
テンキー 3 | 3 |
\uE01E |
テンキー 4 | 3 |
\uE01F |
テンキー 5 | 3 |
\uE020 |
テンキー 6 | 3 |
\uE021 |
テンキー 7 | 3 |
\uE022 |
テンキー 8 | 3 |
\uE023 |
テンキー 9 | 3 |
\uE024 |
テンキー * | 3 |
\uE025 |
テンキー + | 3 |
\uE026 |
テンキー , | 3 |
\uE027 |
テンキー - | 3 |
\uE028 |
テンキー . | 3 |
\uE029 |
テンキー / | 3 |
\uE03D |
左 Meta | 1 |
\uE050 |
右 Shift | 2 |
\uE051 |
右 Control | 2 |
\uE052 |
右 Alt | 2 |
\uE053 |
右 Meta | 2 |
\uE054 |
テンキー PageUp | 3 |
\uE055 |
テンキー PageDown | 3 |
\uE056 |
テンキー End | 3 |
\uE057 |
テンキー Home | 3 |
\uE058 |
テンキー ArrowLeft | 3 |
\uE059 |
テンキー ArrowUp | 3 |
\uE05A |
テンキー ArrowRight | 3 |
\uE05B |
テンキー ArrowDown | 3 |
\uE05C |
テンキー Insert | 3 |
\uE05D |
テンキー Delete | 3 |
action object、source、global key state、tick duration、browsing context、および actions options が与えられたとき、 keyDown アクションを配送するには:
raw key を
action object の value プロパティと等しくする。
key を、raw key に対する 正規化されたキー値と 等しくする。
source の pressed プロパティが
key を含む場合、repeat を true とし、そうでなければ
repeat を false とする。
code を raw key に対する code とする。
location を raw key に対する キー位置とする。
charCode、keyCode
および which を、[UI-EVENTS] のガイドラインに従い、
102 キー US キーボード上のキー key および位置
location を持つキーに適切な、
charCode、keyCode
および which プロパティの実装固有の値とする。
key が "Alt" である場合、
source の alt プロパティを true とする。
key が "Shift" である場合、
source の shift プロパティを true とする。
key が "Control" である場合、
source の ctrl プロパティを true とする。
key が "Meta" である場合、
source の meta プロパティを true とする。
key を source の pressed
プロパティに追加する。
[UI-EVENTS] の要件に従って
キーボード上のキーを押すことと同等の
実装固有のアクション配送手順を実行することを
browsing context 上で行い、指定されたプロパティを持つ次のイベントを、
適切な場合に生成する。これは常に、少なくとも
keyDown イベントを含むイベントを生成する。
keyDown
とプロパティ:
| 属性 | 値 |
|---|---|
key |
key |
code |
code |
location |
location |
altKey |
source の alt プロパティ
|
shiftKey |
source の shift プロパティ
|
ctrlKey |
source の ctrl プロパティ
|
metaKey |
source の meta プロパティ
|
repeat |
repeat |
isComposing |
false |
charCode |
charCode |
keyCode |
keyCode |
which |
which |
keyPress
とプロパティ:
| 属性 | 値 |
|---|---|
key |
key |
code |
code |
location |
location |
altKey |
source の alt プロパティ
|
shiftKey |
source の shift プロパティ
|
ctrlKey |
source の ctrl プロパティ
|
metaKey |
source の meta プロパティ
|
repeat |
repeat |
isComposing |
false |
charCode |
charCode |
keyCode |
keyCode |
which |
which |
action object、source、global key state、 tick duration、browsing context、 および actions options が与えられたとき、 keyUp アクションを配送するには:
raw key を
action object の value プロパティと等しくする。
key を、raw key に対する 正規化されたキー値と等しくする。
source の pressed 項目が
key を含まない場合、返す。
code を raw key に対するcode とする。
location を raw key に対するキー位置とする。
charCode、keyCode
および which を、[UI-EVENTS] のガイドラインに従い、
102 キー US キーボード上のキー key および位置
location を持つキーに適切な、
charCode、keyCode
および which プロパティの実装固有の値とする。
key が "Alt" である場合、
source の alt プロパティを false とする。
key が "Shift" である場合、
source の shift プロパティを false とする。
key が "Control" である場合、
source の ctrl プロパティを false とする。
key が "Meta" である場合、
source の meta プロパティを false とする。
key を
sources の pressed プロパティから削除する。
[UI-EVENTS] の要件に従って キーボード上のキーを解放することと同等の 実装固有のアクション配送手順を実行することを browsing context 上で行い、少なくとも指定されたプロパティを持つ次の イベントを生成する:
keyup、
プロパティ:
| 属性 | 値 |
|---|---|
key |
key |
code |
code |
location |
location |
altKey |
source の altKey プロパティ |
shiftKey |
source の shift プロパティ |
ctrlKey |
source の ctrl プロパティ |
metaKey |
source の meta プロパティ |
repeat |
false |
isComposing |
false |
charCode |
charCode |
keyCode |
keyCode |
which |
which |
action object、source、global key state、tick duration、browsing context、 および actions options が与えられたとき、 pointerDown アクションを配送するには:
pointerType を
action object の pointerType プロパティと等しくする。
button を
action object の button プロパティと等しくする。
source の pressed プロパティが
button を含む場合、successを、データとして
nullとともに返す。
x を source の
x プロパティと等しくする。
y を source の
y プロパティと等しくする。
button を
source の pressed プロパティに対応する集合に追加し、
buttons をそのプロパティの結果値とする。
width を action object の
width プロパティと等しくする。
height を action object の
height プロパティと等しくする。
pressure を action object の
pressure プロパティと等しくする。
tangentialPressure を
action object の tangentialPressure プロパティと等しくする。
tiltX を action object の
tiltX プロパティと等しくする。
tiltY を action object の
tiltY プロパティと等しくする。
twist を action object の
twist プロパティと等しくする。
altitudeAngle を action object の
altitudeAngle プロパティと等しくする。
azimuthAngle を action object の
azimuthAngle プロパティと等しくする。
[UI-EVENTS] および
[POINTER-EVENTS] の要件に従い、
pointerId が source の pointerId と等しいポインター上で、
番号 button のボタンを押すことと同等の
実装固有のアクション配送手順を実行することを
browsing context 上で行う。そのポインターは、
viewport x 座標 x、viewport y 座標 y、
width、height、
pressure、tangentialPressure、tiltX、
tiltY、twist、altitudeAngle、
azimuthAngle において、型 pointerType を持ち、
buttons 個のボタンが押し下げられている。
ctrlKey、
shiftKey、
altKey、および metaKey は、
global key state 内の対応する項目と等しく設定する。
webdriver API を通じて公開されないポインターの型固有プロパティは、
そのプロパティをサポートしないハードウェアに対して指定された既定値に設定されなければならない。
action object、source、global key state、tick duration、browsing context、 および actions options が与えられたとき、 pointerUp アクションを配送するには:
pointerType を
action object の pointerType プロパティと等しくする。
button を
action object の button プロパティと等しくする。
source の pressed プロパティが
button を含まない場合、
successを、データとして nullとともに返す。
x を source の
x プロパティと等しくする。
y を source の
y プロパティと等しくする。
button を
source の pressed プロパティに対応する集合から削除し、
buttons をそのプロパティの結果値とする。
[UI-EVENTS] および
[POINTER-EVENTS] の要件に従い、
pointerId が input source の pointerId と等しいポインター上で、
番号 button のボタンを解放することと同等の
実装固有のアクション配送手順を実行することを
browsing context 上で行う。そのポインターは、
viewport x 座標 x、viewport y 座標 y において
型 pointerType を持ち、
buttons 個のボタンが押し下げられている。
生成されるイベントは、
ctrlKey、shiftKey、
altKey、および metaKey を
global key state 内の対応する項目と等しく設定しなければならない。
webdriver API を通じて公開されないポインターの型固有プロパティは、
そのプロパティをサポートしないハードウェアに対して指定された既定値に設定されなければならない。
action object、source、global key state、 tick duration、browsing context、 および actions options が与えられたとき、 pointerMove アクションを配送するには:
x offset を action object の
x プロパティと等しくする。
y offset を action object の
y プロパティと等しくする。
origin を action object の
origin プロパティと等しくする。
(x, y) を、 source、x offset、y offset、 origin、browsing context、および actions options を用いて 原点に相対的な 座標を取得することを 試みることの結果とする。
x が 0 未満、または CSS ピクセル単位のビューポートの幅より大きい場合、 エラーコード move target out of bounds を持つ errorを返す。
y が 0 未満、または CSS ピクセル単位のビューポートの高さより大きい場合、 エラーコード move target out of bounds を持つerrorを返す。
duration を、
action object の duration プロパティが
undefinedでない場合はそれと等しくし、
そうでなければ tick duration と等しくする。
duration が 0 より大きく、かつ何らかの実装定義の境界内にある場合、 実装定義の時間量が経過するまで 非同期に待機する。
width を action object の
width プロパティと等しくする。
height を action object の
height プロパティと等しくする。
pressure を action object の
pressure プロパティと等しくする。
tangentialPressure を
action object の tangentialPressure プロパティと等しくする。
tiltX を action object の
tiltX プロパティと等しくする。
tiltY を action object の
tiltY プロパティと等しくする。
twist を action object の
twist プロパティと等しくする。
altitudeAngle を action object の
altitudeAngle プロパティと等しくする。
azimuthAngle を action object の
azimuthAngle プロパティと等しくする。
source、global key state、duration、 start x、start y、x、y、 width、height、pressure、 tangentialPressure、tiltX、tiltY、 twist、altitudeAngle、azimuthAngle を引数として ポインター移動を実行する。
source、 global key state、duration、start x、 start y、target x、target y、width、 height、pressure、tangentialPressure、 tiltX、tiltY、twist、altitudeAngle、 および azimuthAngle が与えられたとき、 ポインター移動を実行するには:
time delta を、現在のティックの開始からの時間とし、単調時計上のミリ秒で測定する。
duration ratio を、duration が 0 より大きい場合は time delta と duration の比とし、 そうでなければ 1 とする。
duration ratio が 1、または実装が移動アクションをさらに細分しない程度に
1 に十分近い場合、last を true とする。そうでなければ
last を false とする。
last が true である場合、x を target x と等しくし、y を target y と等しくする。
そうでなければ、x を duration ratio × (target x - start x) + start x の近似値と等しくし、 y を duration ratio × (target y - start y) + start y の近似値と等しくする。
current x を input state の
x プロパティと等しくする。
current y を input state の
y プロパティと等しくする。
x が current x と等しくない、 または y が current y と等しくない場合、 次の手順を実行する:
buttons を input
state の buttons プロパティと等しくする。
[UI-EVENTS] および [POINTER-EVENTS] の要件に従い、
pointerId が input source の pointerId と等しく、
型 pointerType を持つポインターを、
viewport x 座標 current x、viewport y
座標 current y から viewport x
座標 x および viewport y
座標 y へ移動することと同等の
実装固有のアクション配送手順を実行することを
browsing context 上で行う。width、height、
pressure、tangentialPressure、tiltX、
tiltY、twist、altitudeAngle、
azimuthAngle を持ち、
buttons 個のボタンが押し下げられている。
生成されるイベントは ctrlKey、shiftKey、
altKey、および metaKey を
global key state 内の対応する項目と等しく設定しなければならない。
WebDriver API を通じて公開されないポインターの型固有プロパティは、
そのプロパティをサポートしないハードウェアに対して指定された既定値に
設定されなければならない。pointerType が "pen" または
"touch" であり、かつ buttons が空である場合、
これは no-op であり得る。"mouse" 型のポインターについては、
これは常に少なくとも pointerMove イベントを含むイベントを生成する。
input state の x プロパティを
x と等しくし、y プロパティを
y と等しくする。
last が true である場合、返す。
次の副手順を並列に実行する:
実装定義の時間量が経過するまで 非同期に待機する。
input state、duration、 start x、start y、target x、 target y を引数として ポインター移動を実行する。
action object、source、global key state、 tick duration、browsing context、 および actions options が与えられたとき、 pointerCancel アクションを配送するには:
[UI-EVENTS] および [POINTER-EVENTS] の要件に従い、 pointerId が source の pointerId 項目と等しいポインターの任意の アクションを取り消すことと同等の 実装固有のアクション配送手順を実行することを browsing context 上で行う。型 pointerType を持つ。
action object、source、global key state、 tick duration、browsing context、 および actions options が与えられたとき、 scroll アクションを配送するには:
x offset を action object の
x プロパティと等しくする。
y offset を action object の
y プロパティと等しくする。
origin を action object の
origin プロパティと等しくする。
(x, y) を、 source、x offset、y offset、 origin、browsing context、および actions options を用いて 試みることにより、原点に 相対的な座標を取得することの結果とする。
x が 0 未満、または CSS ピクセル単位のビューポートの幅より大きい場合、 errorをエラーコード move target out of boundsとともに返す。
y が 0 未満、または CSS ピクセル単位のビューポートの高さより大きい場合、 errorをエラーコード move target out of boundsとともに返す。
delta x を action object の
deltaX プロパティと等しくする。
delta y を action object の
deltaY プロパティと等しくする。
duration を、
action object の duration プロパティが
undefinedでない場合はそれと等しくし、
そうでなければ tick duration と等しくする。
duration が 0 より大きく、かつ何らかの 実装定義の境界内にある場合、実装定義の時間量が 経過するまで非同期に待機する。
global key state、duration、 x、y、delta x、delta y、 0、0 を引数として スクロールを実行する。
duration、x、y、 target delta x、target delta y、 current delta x および current delta y が与えられたとき、 スクロールを 実行するには:
time delta を、現在のティックの開始からの時間とし、単調時計上のミリ秒で測定する。
duration ratio を、 duration が 0 より大きい場合は time delta と duration の比とし、 そうでなければ 1 とする。
duration ratio が 1、または実装が移動アクションをさらに細分しない程度に
1 に十分近い場合、last を true とする。そうでなければ
last を false とする。
last が true である場合、delta x を target delta x - current delta x と等しくし、 delta y を target delta y - current delta y と等しくする。
そうでなければ、delta x を duration ratio × target delta x - current delta x の近似値と等しくし、 delta y を duration ratio × target delta y - current delta y の近似値と等しくする。
delta x が 0 と等しくない、または delta y が 0 と等しくない場合、 次の手順を実行する:
[UI-EVENTS] の要件に従い、
viewport x 座標 x、viewport y
座標 y におけるホイールスクロールと同等の
実装固有のアクション配送手順を実行することを
browsing context 上で行う。deltaX 値 delta x、
deltaY 値 delta y を持つ。生成されるイベントは
ctrlKey、shiftKey、
altKey、および metaKey を
global key state 内の対応する項目と等しく設定しなければならない。
current delta x プロパティを
delta x + current delta x と等しくし、
current delta y プロパティを
delta y + current delta y と等しくする。
last が true である場合、返す。
次の副手順を並列に実行する:
実装定義の時間量が経過するまで 非同期に待機する。
duration、x、y、 target delta x、target delta y、 current delta x、current delta y を引数として スクロールを実行する。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/actions |
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
session の現在の閲覧 コンテキストが もはや開かれていない場合、errorを エラーコード no such window とともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試みる。
input state を、session および session の現在の トップレベル閲覧 コンテキストを用いて 入力 状態を取得することの結果とする。
actions options を、 要素オリジンである手順を ウェブ要素を表すに設定し、 要素オリジンを取得手順を WebElement オリジンを取得するに設定した 新しいアクションオプションとする。
actions by tick を、input state、 parameters、および actions options を用いて アクションシーケンスを抽出することを 試みることの結果とする。
input state、 actions by tick、現在の閲覧 コンテキスト、 および actions options を用いて アクションを配送する。これによりerrorが生じる場合、 その error を返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| DELETE | /session/{session id}/actions |
アクションを解放コマンドは、 現在押し下げられているすべてのキーおよびポインターボタンを解放するために使用される。 これにより、状態が明示的な一連のアクションによって解放されたかのように、 イベントが発火される。 また、仮想デバイスのすべての内部状態も消去される。
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
session の現在の閲覧 コンテキストが もはや開かれていない場合、errorを エラー コード no such window とともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試みる。
input state を、セッションおよび現在のトップレベル閲覧 コンテキストで入力 状態を取得した結果とする。
actions options を、 要素オリジンである手順を ウェブ要素を表すに設定し、 要素オリジンを取得手順を WebElement オリジンを取得するに設定した 新しいアクションオプションとする。
input state を用いて アクションキュートークンを待機する。
undo actions を、input state の入力取消リストの逆順とする。
input state、 undo actions、現在の閲覧 コンテキスト、 および actions options を用いて アクションを配送することを 試みる。
session および session の現在の トップレベル閲覧コンテキストを用いて、 入力状態をリセットする。
この章では、さまざまな種類のユーザー プロンプトとの相互作用について記述する。ユーザープロンプトに共通する点は、 それらがモーダルウィンドウであり、イベント ループが一時停止解除され、制御が session の現在のトップレベル閲覧 コンテキストに戻る前に、ユーザーがそれらと相互作用する必要があることである。
既定では、ユーザープロンプトは、 ユーザープロンプトハンドラーが定義されていない限り、 自動的には処理されない。 ユーザープロンプトが現れた場合、 それを処理するのは後続のコマンドの役割である。 後続で要求されたコマンドがこの章に列挙されたものではない場合、 unexpected alert open error が返される。
アクティブセッションがちょうど 1 つの項目を含むリストであり、 その項目がHTTP セッションであるが、BiDi セッションではない場合、beforeunload を発火する手順において、 実装は、unload プロンプトを表示することが、煩わしい、欺瞞的、または無意味である 可能性が高いものとして振る舞わなければならない。
これは、アクティブな HTTP-only セッションがある場合、 beforeunload プロンプトは決して表示されないことを意味する。
ユーザー
プロンプトには、関連付けられたユーザープロンプトメッセージがあり、
これはユーザーに表示される文字列メッセージであるか、メッセージ長が 0 の場合は
null
である。
browsing context: が与えられたとき、 アクティブな ユーザープロンプトを取得するには:
現在のユーザー プロンプトは、現在の閲覧コンテキストを用いて アクティブな ユーザープロンプトを取得することの結果である。
ユーザー プロンプトを却下するには、そのプロンプトに Cancel ボタンが存在する場合、 ユーザーがそのボタンをクリックしたかのように振る舞い、そうでない場合はプロンプトを 受け入れる。
ユーザー プロンプトを受け入れるには、ユーザーがそのプロンプト上の OK ボタンをクリックしたかのように振る舞う。
リモートエンドには、ユーザープロンプトが表示されたときに WebDriver セッションがどのように反応するかを定義する ユーザープロンプトハンドラーがある。 これは null、または文字列とプロンプトハンドラー構成値との間の mapである。 初期状態では null である。
プロンプトハンドラー構成は、2 つの項目を持つ structである; handler は文字列であり、 notify は真偽値である。
configuration が与えられたとき、 プロンプトハンドラー構成を直列化するには:
serialized を configuration のhandler とする。
«"dismiss", "accept"» が
serialized を含み、
かつ configuration のnotify が true である場合、
" and notify" を
serialized に追加する。
serialized を返す。
| ハンドラー キー | 説明(非規範)。 |
|---|---|
"dismiss"
|
遭遇したすべての単純ダイアログは却下されるべきである。 |
"accept"
|
遭遇したすべての単純ダイアログは受け入れられるべきである。 |
"dismiss and notify"
|
遭遇したすべての単純ダイアログは却下され、 そのダイアログが処理されたことを示すエラーが返されるべきである。 |
"accept and notify"
|
遭遇したすべての単純ダイアログは受け入れられ、 そのダイアログが処理されたことを示すエラーが返されるべきである。 |
"ignore"
|
遭遇したすべての単純ダイアログは、ユーザーが処理できるように残されるべきである。 |
有効なプロンプト
型は «"alert",
"beforeUnload", "confirm",
"default", "file", "prompt"» である。
"default" 型は、"beforeUnload" プロンプト型を含め、
与えられたプロンプト型に対して特定のハンドラーが定義されていない場合のフォールバックを表す。
これは、unhandled prompt behavior が "default" を
含むmapである場合にのみ設定できる。
HTTP-only セッションで unhandled prompt behavior を文字列値として設定する場合、
その値は内部型 "fallbackDefault" に割り当てられる。
"fallbackDefault" 値は "beforeUnload" プロンプト型には使用されず、
代わりに "accept" ハンドラーへフォールバックする。これは、HTTP-only セッションでは
"beforeUnload" ハンドラーをカスタマイズできず、他のプロトコルを有効にしても
副作用としてユーザープロンプト処理が変わることは期待されていないためである。
"file" プロンプト型は、
[WebDriver-BiDi] セッションでのみ尊重される。
引数 value が与えられたとき、 unhandled prompt behavior として逆直列化するには:
value を、value を用いて JSON 由来の JavaScript 値を Infra 値へ変換することの結果に設定する。
value が文字列でない場合、 [WebDriver-BiDi] も サポートしていない実装は、errorを エラーコード invalid argumentとともに返してもよい。
これは [WebDriver-BiDi] が 現在の仕様をモンキーパッチすることを避けるためである。
is string value を false とする。
value が文字列である場合、value を
map «["fallbackDefault"
→ value]» に設定し、is string value を true に設定する。
value がmapでない場合、 errorを エラーコード invalid argumentとともに返す。
value 内の各 prompt type → handler について:
is string value が false であり、かつ有効な プロンプト 型が prompt type を含まない場合、 errorを エラー コード invalid argumentとともに返す。
既知のプロンプトハンドラーが ハンドラーキー handler を持つ エントリを含まない場合、errorを エラーコード invalid argumentとともに返す。
notify を false とする。
handler が "accept and notify" である場合、
handler を "accept" に設定し、
notify を true に設定する。
handler が "dismiss and notify" である場合、
handler を "dismiss" に設定し、
notify を true に設定する。
handler が "ignore" である場合、
notify を true に設定する。
configuration を、handler handler および notify notify を持つ プロンプトハンドラー 構成とする。
user prompt handler[prompt type] を configuration に 設定する。
successを、データとして user prompt handler とともに返す。
requested prompt handler が与えられたとき、 ユーザープロンプトハンドラーが一致するか確認するには:
ユーザープロンプトハンドラーが null である場合、true を返す。
requested prompt handler 内の各 request prompt type → request handler について:
ユーザープロンプトハンドラーが request prompt type を含む場合:
requested prompt handler のhandlerが、ユーザー プロンプトハンドラーのhandlerと等しくない場合、false を返す。
これは、requested prompt handler のnotify が handlerと一致するかを確認しない。なぜなら notify コンポーネントは、存在する場合の HTTP セッションにのみ影響するためである。
requested prompt handler が与えられたとき、 ユーザープロンプトハンドラーを更新するには:
ユーザープロンプトハンドラーが null である場合、 ユーザープロンプト ハンドラーを空の map に設定する。
requested prompt handler 内の各 request prompt type → request handler について:
ユーザープロンプトハンドラー[request prompt type] を request handler に設定する。
ユーザープロンプトハンドラーを直列化するには:
ユーザープロンプトハンドラーが null である場合、
"dismiss and notify" を返す。
ユーザープロンプトハンドラーの
size が 1 であり、
かつユーザープロンプトハンドラーが
"fallbackDefault" を含む場合、
ユーザープロンプト
ハンドラー["fallbackDefault"] を用いて
プロンプト
ハンドラー構成を直列化することの結果を返す。
serialized を空のmapとする。
ユーザープロンプト
ハンドラーの各 key → value について:
serialized[key] を、value を用いて プロンプト ハンドラー構成を直列化することの結果に設定する。
serialized を用いて Infra 値を JSON 互換の JavaScript 値へ変換することの結果を返す。
注釈付き unexpected alert open errorは、 unexpected alert open エラーコードを持つerrorであり、 次のエントリを持つ任意のエラーデータ辞書を伴う:
text"
type の プロンプトハンドラーを取得するには:
ユーザープロンプトハンドラーが null である場合、 handlers を空の map とする。そうでなければ、 handlers をユーザープロンプトハンドラーとする。
handlers が type を含む場合、 handlers[type] を返す。
handlers が "default" を含む場合、
handlers["default"] を返す。
type が "beforeUnload" である場合、
handler "accept"
および notify false を持つ
プロンプトハンドラー構成を返す。
handlers が "fallbackDefault" を含む場合、
handlers["fallbackDefault"] を返す。
handler "dismiss" および
notify true を持つプロンプトハンドラー
構成を返す。
任意の ユーザープロンプトを処理するには:
現在の閲覧コンテキストが ダイアログによりブロックされていない場合、successを返す。
type を "default" とする。
現在のユーザープロンプトが alert ダイアログである場合、
type を "alert" に設定する。そうでなく、
現在のユーザープロンプトが beforeunload ダイアログである場合、
type を "beforeUnload" に設定する。そうでなく、
現在のユーザープロンプトが confirm ダイアログである場合、
type を "confirm" に設定する。そうでなく、
現在のユーザープロンプトが prompt ダイアログである場合、
type を "prompt" に設定する。
handler を、type を用いて プロンプトハンドラーを取得することの 結果とする。
handler のhandlerに基づいて、 次の副手順を実行する:
accept"
dismiss"
ignore"
何もしない。
handler のnotify が true である場合、注釈付き unexpected alert open errorを返す。
successを返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/alert/dismiss |
アラートを却下コマンドは、 存在する場合に 単純ダイアログを 却下する。 必ずしも却下ボタンを持つとは限らない alert ユーザー プロンプトを却下するリクエストは、それを 受け入れることと同じ効果を持つ。
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
現在のユーザープロンプトが null である場合、 errorをエラーコード no such alertとともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/alert/accept |
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
現在のユーザープロンプトが null である場合、 errorをエラーコード no such alertとともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/alert/text |
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
現在のユーザープロンプトが null である場合、 errorをエラーコード no such alertとともに返す。
message を、現在のユーザープロンプトに関連付けられた
テキストメッセージ、またはそうでなければnullとする。
successをデータ message とともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/alert/text |
アラートテキストを送信コマンドは、
window.prompt
ユーザープロンプトのテキストフィールドを与えられた値に設定する。
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
text を、parameters から "text"
プロパティを取得することの結果とする。
text がStringでない場合、 errorを エラーコード invalid argumentとともに返す。
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
現在のユーザープロンプトが null である場合、 errorをエラーコード no such alertとともに返す。
現在の ユーザー プロンプトを作成した API に対する副手順を実行する:
window.alert
window.confirm
errorを エラーコード element not interactableとともに返す。
window.prompt
何もしない。
errorを エラーコード unsupported operationとともに返す。
現在のユーザープロンプトのテキストフィールドの値を text に設定するために、ユーザーエージェント依存の手順を実行する。
スクリーンショットは、追加の視覚的な診断情報を提供するための仕組みである。 これは、視覚ビューポートの フレームバッファのスナップショットをロスレス PNG 画像としてダンプすることによって機能する。 それは Base64 符号化文字列としてローカルエンドに返される。
WebDriver は、トップレベル閲覧コンテキストの視覚ビューポートをキャプチャするための スクリーンショットを取得するコマンドと、 ビューへスクロールされた後の要素の 境界矩形の可視領域について同じことを行うための コマンド 要素スクリーンショットを取得するを提供する。
矩形が与えられたとき、 フレームバッファから境界ボックスを描画するには:
視覚ビューポートの幅または高さのいずれかが 0 CSS ピクセルである場合、 errorを エラーコード unable to capture screen とともに返す。
paint width を、視覚ビューポートの幅 – min(矩形 x 座標, 矩形 x 座標 + 矩形の幅 次元) とする。
paint height を、視覚ビューポートの高さ – min(矩形 y 座標, 矩形 y 座標 + 矩形の高さ 次元) とする。
canvas を新しい
canvas
要素とし、
その
width
および
height
をそれぞれ paint width および paint height に設定する。
context、すなわちcanvas コンテキストモードを、 canvas をターゲットとして与えて 2D コンテキスト作成 アルゴリズムを呼び出した結果とする。
次の座標で指定されたフレームバッファの領域を context 上に 描画することと同等の実装固有の手順を完了する:
successを canvas とともに返す。
canvas 要素である
canvas を
Base64 として
符号化するには:
canvas
要素のビットマップの
origin-clean フラグが false に設定されている場合、
errorを
エラーコード unable to
capture screen とともに返す。
canvas
要素のビットマップにピクセルがない場合(すなわち、その水平次元または垂直次元のいずれかが
0 である場合)、
errorを
エラーコード unable to
capture screen とともに返す。
file を、
"image/png" を引数として用いる、
canvas 要素のビットマップを
ファイルとして直列化したものとする。
index を、data URL 内の
"," のindexとする。
encoded string を、(index + 1) を start 引数として用いた data URL のsubstringとする。
successをデータ encoded string とともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/screenshot |
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
ユーザーエージェントが次にアニメーションフレームコールバックを実行するとき:
root rect を、session の現在の トップレベル閲覧コンテキストの 文書要素の矩形とする。
screenshot result を、root rect を引数として与え、 フレームバッファから 境界ボックスを描画するを呼び出すことを 試みることの結果とする。
canvas を、
screenshot result のデータである
canvas
要素とする。
encoding result を、canvas を canvas を Base64 として符号化することを 試みることの結果とする。
encoded string を encoding result のデータとする。
successをデータ encoded string とともに返す。
| HTTP メソッド | URI テンプレート |
|---|---|
| GET | /session/{session id}/element/{element id}/screenshot |
要素スクリーンショットを取得コマンドは、 要素の境界矩形によって包含される可視領域の スクリーンショットを取得する。
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
session の現在の閲覧 コンテキストが もはや開かれていない場合、errorを エラー コード no such window とともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試みる。
element を、
session および URL variables["element id"] を用いて
既知の要素を取得することを
試みることの結果とする。
element をビューへスクロールする。
ユーザーエージェントが次にアニメーションフレームコールバックを実行するとき:
element rect を element の 矩形とする。
screenshot result を、 element rect を引数として与え、 フレームバッファから 境界ボックスを描画するを呼び出すことを 試みることの結果とする。
canvas を、
screenshot result のデータである
canvas
要素とする。
encoding result を、canvas を canvas を Base64 として符号化することを 試みることの結果とする。
encoded string を encoding result のデータとする。
successをデータ encoded string とともに返す。
印刷機能は、文書をページ化された形式にレンダリングするための仕組みである。 これは、ページ化された文書の PDF 表現を含む Base64 符号化文字列として、 ローカルエンドに返される。
引数 pageRanges および totalPages を用いて ページ範囲を解析することが要求されるとき、 実装は次を行わなければならない:
range がNumberである場合:
そうでなければ:
-" 文字で range を分割した結果とする。
そうでなければ:
1 とする。そうでなければ、
lowerBound を rangeParts の最初の要素を
整数として解析することを
試みる結果とする。
Stringは、 すべての空白文字を除去した後の長さがゼロである場合、 空文字列と同等である。
引数 input を用いて 整数として解析することが要求されるとき、 実装は次を行わなければならない:
U+0030 - U+0039(すなわち 0 - 9)
外の文字を含む場合、errorをステータス invalid argument とともに返す。
10 で
parseInt を呼び出した結果とする。
| HTTP メソッド | URI テンプレート |
|---|---|
| POST | /session/{session id}/print |
session、URL variables および parameters が与えられたときの リモートエンド手順は次のとおりである:
session の現在の トップレベル閲覧 コンテキストがもはや開かれていない場合、errorを エラーコード no such windowとともに返す。
session を用いて 任意のユーザープロンプトを処理することを 試みる。
orientation を、parameters から
"orientation" という名前で既定値 "portrait" を持つ
既定値付きプロパティを
取得することの結果とする。
orientation がStringでない、または
"landscape" もしくは
"portrait" のいずれかの値を持たない場合、errorをエラー
コード invalid argumentとともに返す。
scale を、parameters から
"scale" という名前で既定値 1 を持つ
既定値付きプロパティを
取得することの結果とする。
scale がNumberでない、または
0.1 未満もしくは 2 より大きい場合、
errorをエラーコード invalid argumentとともに返す。
background を、parameters から
"background" という名前で既定値 false を持つ
既定値付きプロパティを
取得することの結果とする。
background がBooleanでない場合、 errorをエラーコード invalid argumentとともに返す。
page を、parameters から
"page" という名前で空のObjectを既定値として持つ
既定値付きプロパティを取得することの結果とする。
pageWidth を、page から
"width" という名前で既定値 21.59 を持つ
既定値付きプロパティを
取得することの結果とする。
pageHeight を、page から
"height" という名前で既定値 27.94 を持つ
既定値付きプロパティを
取得することの結果とする。
pageWidth または pageHeight のいずれかが
Numberでない、または (2.54 / 72) 未満である場合、
errorを
エラーコード invalid
argumentとともに返す。
最小ページサイズは 1 ポイントであり、
絶対長に従えば
(2.54 / 72) である。
margin を、parameters から
"margin" という名前で空のObjectを既定値として持つ
既定値付きプロパティを取得することの結果とする。
marginTop を、margin から
"top" という名前で既定値 1 を持つ
既定値付きプロパティを
取得することの結果とする。
marginBottom を、margin から
"bottom" という名前で既定値 1 を持つ
既定値付きプロパティを
取得することの結果とする。
marginLeft を、margin から
"left" という名前で既定値 1 を持つ
既定値付きプロパティを
取得することの結果とする。
marginRight を、margin から
"right" という名前で既定値 1 を持つ
既定値付きプロパティを
取得することの結果とする。
marginTop、marginBottom、marginLeft、 または marginRight のいずれかが Numberでない、または 0 未満である場合、 errorをエラーコード invalid argumentとともに返す。
shrinkToFit を、parameters から
"shrinkToFit" という名前で既定値 true を持つ
既定値付きプロパティを
取得することの結果とする。
shrinkToFit がBooleanでない場合、 errorをエラーコード invalid argumentとともに返す。
pageRanges を、
空のArrayを既定値として、
parameters から "pageRanges" という名前の
既定値付きプロパティを
取得することの結果とする。
pageRanges がArrayでない場合、 errorをエラーコード invalid argumentとともに返す。
ユーザーエージェントが次にアニメーションフレーム
コールバックを実行するとき、pdfData を、
CSS メディア型を print に設定し、
PDF として符号化し、次の用紙設定を用いて、
session の現在の閲覧
コンテキストのページ化表現を生成する UA 固有の手順を実行することを
試みる結果とする:
| プロパティ | 値 |
|---|---|
| cm 単位の幅 | orientation が
"portrait" である場合は pageWidth、そうでなければ
pageHeight
|
| cm 単位の高さ | orientation が
"portrait" である場合は pageHeight、そうでなければ
pageWidth
|
| 上余白、cm 単位 | marginTop |
| 下余白、cm 単位 | marginBottom |
| 左余白、cm 単位 | marginLeft |
| 右余白、cm 単位 | marginRight |
加えて、次の整形ヒントが UA により適用されるべきである:
1 と等しくない場合false である場合true である場合pageRanges が空のArrayでない場合、 pages を、pageRanges および pdfData に含まれるページ数を引数として ページ範囲を解析することを 試みる結果とし、その後、 1 始まりのインデックスが pages に含まれていないすべてのページを pdfData から削除する
encoding result を、 pdfData に対してBase64 Encodeを呼び出した結果とする。
encoded string を encoding result のデータとする。
successをデータ encoded string とともに返す
この節は非規範である。
このリストは網羅的ではなく、最新でない可能性がある。
次の外部仕様は、追加の WebDriver モジュールを定義する:
リモートエンドは、 新しいセッションを作成するときに 新しいプロファイルを作成することが望ましい。 これにより、潜在的に機微なセッションデータが新しいセッションから アクセス可能になることを防ぎ、 プライバシーを保証するとともに、状態が次のセッションへ漏れ出すことを防止する。
ユーザーエージェントは、WebDriver を有効にするかどうかを判定するために、 コマンドラインフラグまたは設定オプションに依存してもよい。 あるいは、ユーザーエージェントが HTTP エンドポイントを直接実装しない場合には、 特権を持つコンテンツ文書または制御ウィジェットを通じて、 ユーザーエージェントに接続を開始または確認させてもよい。
ユーザーエージェントは、WebDriver を有効にするために ユーザーが明示的な操作を行うことを要求し、 一般公開されるユーザーエージェントのバージョンでは WebDriver を無効のままにすることが強く推奨される。
ネットワーク上の任意のマシンが接続してセッションを作成することを防ぐため、 既定ではループバックデバイスからの接続のみを許可することが推奨される。
リモートエンドは、
接続およびリクエストを行うことが許可される受け入れ IP 範囲を制限するための
設定オプションを含めることができる。
これに対する既定設定は、
接続を IPv4 localhost CIDR 範囲 127.0.0.0/8
および IPv6 localhost アドレス ::1 に制限することなどであってよい。 [RFC4632]
また、ユーザーエージェントは、 WebDriver の制御下にあるユーザーエージェントセッションを、 通常のブラウジングセッションで使用されるものから 視覚的に区別するよう努めることも推奨される。 これは、「ドアハンガー」のような ブラウザークローム要素、 OS ウィンドウの色付き装飾、 またはウィンドウ内で目立つ何らかのウィジェット要素を通じて行うことができ、 それにより自動化ウィンドウを容易に識別できる。
WebDriver は、ビューポート内における要素の 可視性を確認するためのプリミティブを定義していないが、 それが多くのユーザーにとって重要な機能であることは認める。 ここでは、要素の 可視性の単純化された近似を与える推奨アプローチを含めるが、 これはツリー走査のみに依存し、 可視性チェックの一部のみを対象とすることに注意されたい。
要素の可視性は、
人間の目に知覚上見えるものによって導かれる。
この文脈では、要素の表示状態は、
visibility
または display スタイルプロパティとは関係しない。
要素の可視性を確認するために実装者に推奨されるアプローチは、 もともと Selenium プロジェクトによって開発され、 要素の 性質およびツリー内の関係についての粗い近似に基づいている。 要素は一般に、 その一部でもビューポートの境界内のキャンバス上に描画されていれば 可視であると見なされる。
要素 表示状態は、要素が現在可視であるかどうかを表す真偽値である。
bot.dom.isShown Selenium atoms を使用して
要素表示状態を取得するには、
element が与えられたとき:
function を
bot.dom.isShown 関数とする。
result を、引数 null および element を用いて function の [[Call]] 内部メソッドを呼び出した結果とする。これが例外を送出する場合、 errorをエラーコード unknown errorとともに返す。
successをデータ result とともに返す。
要素表示状態は通常、
GET リクエスト用のエンドポイントとして公開され、
そのURI Template は
/session/{session id}/element/{element id}/displayed である。
長年にわたり、ブラウザー自動化を可能にし、 それによってこの標準の目標を前進させることに貢献した人々は多数いる。 特に、 Selenium オープンソースコミュニティに感謝する。 それなしには、この標準は決して実現しなかったであろう。
この標準の著者は、 Aleksey Chemakin, Andreas Tolfsen, Andrey Botalov, Brian Burg, Christian Bromann, Clayton Martin, Daniel Wagner-Hall, David Burns, Dominique Hazael-Massieux, Eran Messeri, Erik Wilde, Gábor Csárdi, Henrik Skupin, James Graham, Jason Juang, Jason Leyba, Jim Evans, John Chen, John Jansen, Jonathan Lipps, Jonathon Kereliuk, Luke Inman-Semerau, Maja Frydrychowicz, Malini Das, Manoj Kumar, Marc Fisher, Mike Pennisi, Ondřej Machulda, Randall Kent, Sam Sneddon, Seva Lotoshnikov, Simon Stewart, Sri Harsha, Titus Fortner, and Vangelis Katsikaros である。 作業は David Burns および Simon Stewart によって 調整および編集されている。
校正および改善箇所の提案について、 Berge Schwebs Bjørlo, Lukas Tetzlaff, Malcolm Rowe, Michael[tm] Smith, Nathan Bloomfield, Philippe Le Hégaret, Robin Berjon, Ross Patterson, and Wilhelm Joys Andersen に感謝する。
本仕様は、いくつかの他の基礎となる仕様に依存している。
以下の用語は Accessible Rich Internet Applications (WAI-ARIA) 1.2 仕様で定義される: [wai-aria-1.2]
以下の用語は Accessible Name and Description Computation 1.1 仕様で定義される: [accname-1.1]
以下の用語は Content Security Policy Level 3 仕様で定義される: [CSP3]
以下の用語は The Base16, Base32, and Base64 Data Encodings 仕様で定義される: [RFC4648]
以下の用語は DOM Parsing and Serialization 仕様で定義される: [DOM-PARSING]
以下の属性は UI Events 仕様で定義される: [UI-EVENTS]
以下の属性は UI Events Code 仕様で定義される: [UIEVENTS-KEY]
以下の用語は ECMAScript 言語仕様で定義される: [ECMA-262]
以下の用語は WHATWG Encoding 仕様で定義される: [ENCODING]
以下の用語は WHATWG Fetch 仕様で定義される: [FETCH]
以下の用語は WHATWG Fullscreen 仕様で定義される: [FULLSCREEN]
以下の用語は HTML 仕様で定義される: [HTML]
activeElement
属性であり、Document 上にある
Document オブジェクト
Window
オブジェクトの
[[GetOwnProperty]]
Window
オブジェクト
WindowProxy
エキゾチック・オブジェクト
setSelectionRange
confirm
alert
prompt
HTML 仕様はまた、
input
要素の状態を定義する:
HTML 仕様はまた、さまざまな属性を定義する:
HTML Editing APIs 仕様は以下の用語を定義する: [EDITING]
以下のイベントも HTML 仕様で定義される:
“data” URL スキーム仕様は以下の用語を定義する: [RFC2397]
HTTP 準拠であるためには、 実装が [RFC7230]、 [RFC7231]、 [RFC7232]、 [RFC7234]、および [RFC7235] の 関連するサブセットをサポートしているものと想定される。
以下の用語は Cookie 仕様で定義される: [RFC6265]
以下の用語は Same Site Cookie 仕様で定義される: [RFC6265bis]
以下の用語は Hypertext Transfer Protocol (HTTP) Status Code Registry で定義される:
以下の用語は Infra 仕様で定義される: [INFRA]
本仕様は URI Templates を使用する。 [URI-TEMPLATE]
hidden
visibilityState
属性であり、Document 上にある
visible
775cfb33b193eb8832cd5488f298006f45254685 において定義される。
visibility
プロパティ
display
プロパティ
以下の用語は標準で定義される: [RFC1928]
本仕様における IDL 断片は、 Web IDL 仕様に記述される、適合する IDL 断片に要求されるものとして 解釈されなければならない。 [WEBIDL]
以下の用語は Promises Guide で定義される。 [PROMISES-GUIDE]
以下の用語は Document Object Model XPath 標準 [XPATH] で定義される
[[Call]] 内部スロット、
Function 用
§E.
[[GetOwnProperty]] 内部スロット、
Object 用
§E.
用
§E.
[[GetProperty]] 内部スロット、
Object 用
§E.
NavigatorAutomationInformation
インターフェイス
§4.
[[Put]] 内部スロット、Object 用
§E.
getBoundingClientRect()(
Element 用)
getClientRects()(Element 用)
compareDocumentPosition()(
Node 用)
tree 用)
Node 用)
DOMTokenList インターフェイス
Element インターフェイス
getAttribute()(Element 用)
getElementsByTagName()(
Element 用)
hasAttribute()(Element 用)
HTMLCollection インターフェイス
tree 用)
tree 用)
isTrusted 属性(Event 用)
Node 用)
NodeList インターフェイス
querySelectorAll()(
ParentNode 用)
ShadowRoot インターフェイス
tagName 属性(Element 用)
textContent 属性(Node 用)
Document 用)
FileList インターフェイス
DOMRect インターフェイス
a
要素
address
要素
canvas
要素
datalist 要素
frame
要素
height 属性(canvas
要素用)
HTMLAllCollection インターフェイス
HTMLFormControlsCollection インターフェイス
HTMLOptionsCollection インターフェイス
iframe
要素
optgroup 要素
option
要素
output
要素
readonly 属性(input
要素用)
select
要素
textarea 要素
title 属性(Document 用)
type 属性(input
要素用)
width 属性(canvas
要素用)
list 用)
map 用)
iteration 用)
map 用)
map 用)
struct 用)
string 用)
map 用)
map 用)
iteration 用)
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: