From 9bd0e9a70e2edd79378ef23b68aa1b05d2324fcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Wed, 27 May 2020 22:08:26 +0200 Subject: [PATCH 01/17] Rename index.html -> index.bs --- .gitignore | 2 +- index.html => index.bs | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename index.html => index.bs (100%) diff --git a/.gitignore b/.gitignore index e43b0f988..e90722f8a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -.DS_Store +/index.html diff --git a/index.html b/index.bs similarity index 100% rename from index.html rename to index.bs From 0dce3dec4511789007afcbff879e55bc5adeb42e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Thu, 28 May 2020 13:37:34 +0200 Subject: [PATCH 02/17] Add Bikeshed metadata block --- index.bs | 124 ++++++++++++++++++++----------------------------------- 1 file changed, 44 insertions(+), 80 deletions(-) diff --git a/index.bs b/index.bs index 207184c6e..f5d1f8e8a 100644 --- a/index.bs +++ b/index.bs @@ -1,60 +1,47 @@ - - - -WebDriver - - - + + +
+{
+  "RFC6265bis": {
+    "authors": [
+      "M. West",
+      "J. Wilander"
+    ],
+    "href": "https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-05",
+    "title": "Cookies: HTTP State Management Mechanism",
+    "status": "Draft",
+    "publisher": "IETF"
+  }
+}
+
+ -
-

-WebDriver is a remote control interface -that enables introspection and control of user agents. -It provides a platform- and language-neutral wire protocol -as a way for out-of-process programs -to remotely instruct the behavior of web browsers. - -

-Provided is a set of interfaces -to discover and manipulate DOM elements in web documents -and to control the behavior of a user agent. -It is primarily intended to allow web authors to write tests -that automate a user agent from a separate controlling process, -but may also be used in such a way as to allow in-browser scripts -to control a — possibly separate — browser. -

- - - -
- -

Design

From 0e937e2cd2091e1d475ca6554561bcc8cce22089 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Thu, 28 May 2020 13:53:21 +0200 Subject: [PATCH 03/17] Minimal changes to avoid fatal errors only --- index.bs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.bs b/index.bs index f5d1f8e8a..8626c4a44 100644 --- a/index.bs +++ b/index.bs @@ -8435,8 +8435,8 @@ Return success with data action. target x and y equal target y.

Otherwise let x equal an approximation - to duration ratio × (target x - - start x) + start x, and y equal + to duration ratio × (target x - + start x) + start x, and y equal an approximation to duration ratio × (target y - start y) + start y. From 75a5e3f402425198ad524d4a2c370acc69d3bcd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Fri, 29 May 2020 14:04:56 +0200 Subject: [PATCH 04/17] Add IDs to sections Done using this "elegant" replacement: ```js source.replace(/((.*?)(<\/h[1-6]>)/g, (_, p1, p2, p3) => `${p1} id=${p2.replace(//, '').replace('', '').toLowerCase().replace(/\s+/g, '-')}>${p2}${p3}`) ``` --- index.bs | 216 +++++++++++++++++++++++++++---------------------------- 1 file changed, 108 insertions(+), 108 deletions(-) diff --git a/index.bs b/index.bs index 8626c4a44..2fc184549 100644 --- a/index.bs +++ b/index.bs @@ -59,13 +59,13 @@ dl.subcategories { margin-left: 2em }

-

Design

+

Design

The WebDriver standard attempts to follow a number of design goals:

-

Compatibility

+

Compatibility

This specification is derived from the popular @@ -80,7 +80,7 @@ to avoid unexpected breakages.

-

Simplicity

+

Simplicity

The largest intended group of users of this specification @@ -93,7 +93,7 @@ and clicking elements.

-

Extensions

+

Extensions

WebDriver provides a mechanism for others to define extensions to the protocol @@ -116,7 +116,7 @@ rather than performance, in mind.

-

Terminology

+

Terminology

In equations, all numbers are integers, @@ -184,7 +184,7 @@ and decorations (such as operating system widget borders).

-

Interface

+

Interface

The webdriver-active flag @@ -226,7 +226,7 @@ It is acknowledged that this is complementary to the Evil Bit [[RFC3514]].

-

Nodes

+

Nodes

The WebDriver protocol consists of communication between: @@ -287,7 +287,7 @@ In all other cases it must be true.

-

Protocol

+

Protocol

WebDriver remote ends must provide an HTTP compliant wire protocol @@ -300,7 +300,7 @@ In all other cases it must be true. no requirements are made upon their exposed user-facing API.

-

Algorithms

+

Algorithms

Various parts of this specification are written in terms of step-by-step algorithms. The details of these algorithms do not have any normative significance; @@ -356,7 +356,7 @@ In all other cases it must be true.

-

Commands

+

Commands

The WebDriver protocol is organised into commands. @@ -374,7 +374,7 @@ when it receives a particular command.

-

Processing model

+

Processing model

The remote end is an HTTP server reading requests from the client and writing responses, @@ -567,7 +567,7 @@ when it receives a particular command.

-

Routing requests

+

Routing requests

Request routing is the process of going from a HTTP request @@ -624,7 +624,7 @@ when it receives a particular command.

-

Endpoints

+

Endpoints

The following table of endpoints lists the method and URI template for each endpoint @@ -989,7 +989,7 @@ when it receives a particular command.

-

Errors

+

Errors

Errors are represented in the WebDriver protocol by an HTTP response with an HTTP status in the 4xx or 5xx range, @@ -1269,7 +1269,7 @@ when it receives a particular command.

-

Extensions

+

Extensions

Using the terminology defined in this section, others may define additional commands that seamlessly integrate with the standard protocol. This allows @@ -1393,7 +1393,7 @@ specification.

-

Capabilities

+

Capabilities

WebDriver capabilities are used to communicate the features supported by a given implementation. @@ -1503,7 +1503,7 @@ with a "moz:" prefix:

-

Proxy

+

Proxy

The proxy configuration capability is a JSON Object nested @@ -1668,7 +1668,7 @@ with a "moz:" prefix:

-

Processing capabilities

+

Processing capabilities

To process capabilities with argument parameters, @@ -2069,7 +2069,7 @@ with a "moz:" prefix:

-

Sessions

+

Sessions

A session is equivalent to a single instantiation of a particular user agent, including all its child browsers. @@ -2415,7 +2415,7 @@ If the creation fails, a session not created error is returned.

-

Delete Session

+

Delete Session

@@ -2439,7 +2439,7 @@ If the creation fails, a session not createderror is returned.
-

Status

+

Status

@@ -2494,7 +2494,7 @@ If the creation fails, a session not createderror is returned.
-

Timeouts

+

Timeouts

A timeouts configuration is a record @@ -2637,7 +2637,7 @@ Return success with data timeouts.

-

Get Timeouts

+

Get Timeouts

@@ -2658,7 +2658,7 @@ of the active session’s timeouts configuration.
-

Set Timeouts

+

Set Timeouts

@@ -2692,7 +2692,7 @@ Return success with data null.
-

Navigation

+

The commands in this section allow navigation of the current top-level browsing context to new URLs @@ -2826,7 +2826,7 @@ Return success with data null.

-

Navigate To

+
@@ -2910,7 +2910,7 @@ Return success with data null.
-

Get Current URL

+

Get Current URL

@@ -2940,7 +2940,7 @@ Return success with data null.
-

Back

+

Back

@@ -2985,7 +2985,7 @@ Return success with data null.
-

Forward

+

Forward

@@ -3030,7 +3030,7 @@ Return success with data null.
-

Refresh

+

Refresh

@@ -3073,7 +3073,7 @@ Return success with data null.
-

Get Title

+

Get Title

@@ -3108,7 +3108,7 @@ Return success with data null.
-

Contexts

+

Contexts

Many WebDriver commands happen in the context of either the current browsing context or current top-level browsing context. @@ -3166,7 +3166,7 @@ section of the [[HTML]] specification, commands are unaffected by whether the operating system window has focus or not.

-

Get Window Handle

+

Get Window Handle

@@ -3191,7 +3191,7 @@ commands are unaffected by whether the operating system window has focus or not.
-

Close Window

+

Close Window

@@ -3223,7 +3223,7 @@ commands are unaffected by whether the operating system window has focus or not.
-

Switch To Window

+

Switch To Window

@@ -3272,7 +3272,7 @@ make the tab containing the browsing context the selected tab.
-

Get Window Handles

+

Get Window Handles

@@ -3307,7 +3307,7 @@ make the tab containing the browsing context the selected tab.
-

New Window

+

New Window

@@ -3377,7 +3377,7 @@ make the tab containing the browsing context the selected tab.
-

Switch To Frame

+

Switch To Frame

@@ -3478,7 +3478,7 @@ make the tab containing the browsing context the selected tab.
-

Switch To Parent Frame

+

Switch To Parent Frame

@@ -3517,7 +3517,7 @@ make the tab containing the browsing context the selected tab.
-

Resizing and positioning windows

+

Resizing and positioning windows

WebDriver provides commands for interacting with the operating system window @@ -3637,7 +3637,7 @@ make the tab containing the browsing context the selected tab. or until the operation times out.

-

Get Window Rect

+

Get Window Rect

@@ -3671,7 +3671,7 @@ make the tab containing the browsing context the selected tab.
-

Set Window Rect

+

Set Window Rect

@@ -3797,7 +3797,7 @@ corresponding to the current top-level browsing context.
-

Maximize Window

+

Maximize Window

@@ -3844,7 +3844,7 @@ corresponding to the current top-level browsing context.
-

Minimize Window

+

Minimize Window

@@ -3887,7 +3887,7 @@ corresponding to the current top-level browsing context.
-

Fullscreen Window

+

Fullscreen Window

@@ -3928,7 +3928,7 @@ corresponding to the current top-level browsing context.
-

Elements

+

Elements

A web element is an abstraction used to identify an element @@ -4091,7 +4091,7 @@ argument reference, run the following steps:

-

Interactability

+

Interactability

In order to determine if an element can be interacted with using pointer actions, @@ -4280,7 +4280,7 @@ argument reference, run the following steps:

-

Locator strategies

+

Locator strategies

An element location strategy is an enumerated attribute @@ -4322,7 +4322,7 @@ argument reference, run the following steps:

-
CSS selectors
+
CSS selectors

To find a web element with the CSS Selector strategy @@ -4340,7 +4340,7 @@ argument reference, run the following steps:

-
Link text
+

To find a web element with the Link Text strategy @@ -4375,7 +4375,7 @@ argument reference, run the following steps:

-
Partial link text
+

The Partial link text strategy is very similar to the Link Text strategy, @@ -4413,7 +4413,7 @@ argument reference, run the following steps:

-
Tag name
+
Tag name

To find a web element with the Tag Name strategy return success with data set to the @@ -4425,7 +4425,7 @@ argument reference, run the following steps:

-
XPath
+
XPath

To find a web element with the XPath Selector strategy @@ -4476,7 +4476,7 @@ argument reference, run the following steps:

-

Find Element

+

Find Element

@@ -4546,7 +4546,7 @@ session.execute("arguments[0].remove()", [body]);
-

Find Elements

+

Find Elements

@@ -4593,7 +4593,7 @@ session.execute("arguments[0].remove()", [body]);
-

Find Element From Element

+

Find Element From Element

@@ -4643,7 +4643,7 @@ session.execute("arguments[0].remove()", [body]);
-

Find Elements From Element

+

Find Elements From Element

@@ -4688,7 +4688,7 @@ session.execute("arguments[0].remove()", [body]);
-

Get Active Element

+

Get Active Element

@@ -4722,7 +4722,7 @@ session.execute("arguments[0].remove()", [body]);
-

State

+

State

To calculate the absolute position of element: @@ -4791,7 +4791,7 @@ session.execute("arguments[0].remove()", [body]);

-

Is Element Selected

+

Is Element Selected

@@ -4845,7 +4845,7 @@ or on option elements.
-

Get Element Attribute

+

Get Element Attribute

@@ -4897,7 +4897,7 @@ The remote end steps are:
-

Get Element Property

+

Get Element Property

@@ -4934,7 +4934,7 @@ The remote end steps are:
-

Get Element CSS Value

+

Get Element CSS Value

@@ -4977,7 +4977,7 @@ The remote end steps are:
-

Get Element Text

+

Get Element Text

@@ -5037,7 +5037,7 @@ with the Unicode character property "WSpace=Y" or "WS<
-

Get Element Tag Name

+

Get Element Tag Name

@@ -5070,7 +5070,7 @@ with the Unicode character property "WSpace=Y" or "WS<
-

Get Element Rect

+

Get Element Rect

@@ -5153,7 +5153,7 @@ Width of the web element’s
-

Is Element Enabled

+

Is Element Enabled

@@ -5194,7 +5194,7 @@ Width of the web element’s
-

Get Computed Role

+

Get Computed Role

@@ -5227,7 +5227,7 @@ Width of the web element’s
-

Get Computed Label

+

Get Computed Label

@@ -5298,7 +5298,7 @@ Width of the web element’s to an empty string (thus clearing the element’s child nodes).
-

Element Click

+

Element Click

@@ -5478,7 +5478,7 @@ an element not interactable error is returned.
-

Element Clear

+

Element Clear

@@ -5575,7 +5575,7 @@ an element not interactable error is returned.
-

Element Send Keys

+

Element Send Keys

@@ -5969,10 +5969,10 @@ If an error is returned, return that error
-

Document

+

Document

-

Get Page Source

+

Get Page Source

@@ -6014,7 +6014,7 @@ of the current browsing context active document.
-

Executing Script

+

Executing Script

A collection is an Object @@ -6280,7 +6280,7 @@ a remote end must run the following steps: and is therefore not subject to the document CSP directives.

-

Execute Script

+

Execute Script

@@ -6336,7 +6336,7 @@ a remote end must run the following steps:
-

Execute Async Script

+

Execute Async Script

@@ -6429,7 +6429,7 @@ The first argument provided to the function will be serialized to JSON and retur
-

Cookies

+

Cookies

This section describes the interaction with cookies as described in [[RFC6265]]. @@ -6589,7 +6589,7 @@ The first argument provided to the function will be serialized to JSON and retur

-

Get All Cookies

+

Get All Cookies

@@ -6627,7 +6627,7 @@ The first argument provided to the function will be serialized to JSON and retur
-

Get Named Cookie

+
@@ -6660,7 +6660,7 @@ The first argument provided to the function will be serialized to JSON and retur
-

Add Cookie

+
@@ -6743,7 +6743,7 @@ The first argument provided to the function will be serialized to JSON and retur
-

Delete Cookie

+
@@ -6773,7 +6773,7 @@ The first argument provided to the function will be serialized to JSON and retur
-

Delete All Cookies

+

Delete All Cookies

@@ -6802,7 +6802,7 @@ The first argument provided to the function will be serialized to JSON and retur
-

Actions

+

Actions

The Actions API provides a low-level interface for providing virtualised device input to the web browser. @@ -6887,7 +6887,7 @@ The first argument provided to the function will be serialized to JSON and retur

-

Input sources

+

Input sources

The objects and properties defined in this section are spec-internal constructs @@ -7138,7 +7138,7 @@ and a y property which is an unsigned integer.

-

Ticks

+

Ticks

A tick is the basic unit of time over which actions can be performed. During a tick, each input source has @@ -7201,7 +7201,7 @@ from a machine utilisation perspective.

-

Processing actions

+

Processing actions

The algorithm for extracting an action sequence from a request takes the @@ -7646,7 +7646,7 @@ Return success with data action.

-

Dispatching actions

+

Dispatching actions

The algorithm to dispatch actions takes a list of actions grouped by tick, and then causes each action to be run at the @@ -7772,7 +7772,7 @@ Return success with data action.

-

General actions

+

General actions

When required to dispatch a pause action with arguments source id, action object, @@ -7786,7 +7786,7 @@ Return success with data action.

-

Keyboard actions

+

Keyboard actions

The normalised key value for a raw key key is, if key appears in the table below, the string value in @@ -8227,7 +8227,7 @@ Return success with data action.

-

Pointer actions

+

Pointer actions

When required to dispatch a pointerDown action with arguments source id, action object, @@ -8532,7 +8532,7 @@ Return success with data action.

-

Perform Actions

+

Perform Actions

@@ -8569,7 +8569,7 @@ Return success with data action.
-

Release Actions

+

Release Actions

@@ -8618,7 +8618,7 @@ It also clears all the internal state of the virtual devices.
-

User prompts

+

User prompts

This chapter describes interaction with various types of user prompts. The common denominator for user prompts is that they are @@ -8827,7 +8827,7 @@ on the error representation:

-

Dismiss Alert

+

Dismiss Alert

@@ -8864,7 +8864,7 @@ has the same effect as accepting it.
-

Accept Alert

+

Accept Alert

@@ -8893,7 +8893,7 @@ has the same effect as accepting it.
-

Get Alert Text

+

Get Alert Text

@@ -8924,7 +8924,7 @@ has the same effect as accepting it.
-

Send Alert Text

+

Send Alert Text

@@ -8986,7 +8986,7 @@ sets the text field of a window.prompt
-

Screen capture

+

Screen capture

Screenshots are a mechanism for providing additional visual diagnostic information. @@ -9075,7 +9075,7 @@ sets the text field of a window.prompt

-

Take Screenshot

+

Take Screenshot

@@ -9117,7 +9117,7 @@ sets the text field of a window.prompt
-

Take Element Screenshot

+

Take Element Screenshot

@@ -9182,7 +9182,7 @@ that evaluates to false, the element will not be scrolled into view
-

Print

+

Print

The print functions are a mechanism to render the document to a paginated format. It is returned to the local end as a Base64 @@ -9278,7 +9278,7 @@ argument input an implementation must:

-

Print Page

+
@@ -9440,7 +9440,7 @@ argument input an implementation must:
-

Privacy

+

Privacy

It is advisable that remote ends @@ -9452,7 +9452,7 @@ ensuring both privacy and preventing state from bleeding through to the next ses

-

Security

+

Security

A user agent can rely on a command-line flag or a configuration option @@ -9494,7 +9494,7 @@ ensuring both privacy and preventing state from bleeding through to the next ses

-

Element displayedness

+

Element displayedness

Although WebDriver does not define a primitive to ascertain the visibility of an element in the viewport, @@ -9535,7 +9535,7 @@ ensuring both privacy and preventing state from bleeding through to the next ses

-

Acknowledgements

+

Acknowledgements

There have been a lot of people that have helped make @@ -9606,7 +9606,7 @@ for proofreading and suggesting areas for improvement.

-

Index

+

Index

This specification relies on several other underlying specifications. From 2b36c8469b878a1fd55024f0fc3df54716054f14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Fri, 29 May 2020 14:37:48 +0200 Subject: [PATCH 05/17] Update duplicate heading IDs to match existing spec --- index.bs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.bs b/index.bs index 2fc184549..d04e2c968 100644 --- a/index.bs +++ b/index.bs @@ -1269,7 +1269,7 @@ when it receives a particular command.

-

Extensions

+

Extensions

Using the terminology defined in this section, others may define additional commands that seamlessly integrate with the standard protocol. This allows @@ -6887,7 +6887,7 @@ The first argument provided to the function will be serialized to JSON and retur

-

Input sources

+

Input sources

The objects and properties defined in this section are spec-internal constructs From c6a4776066b945ac2e71af273fa53fb341c6b6fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Fri, 29 May 2020 15:09:29 +0200 Subject: [PATCH 06/17] Use for cross-spec variables --- index.bs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/index.bs b/index.bs index d04e2c968..611c68e58 100644 --- a/index.bs +++ b/index.bs @@ -2900,7 +2900,7 @@ Return success with data null. to the current top-level browsing context.

  • If the current top-level browsing context contains - a refresh state pragma directive of time 1 second + a refresh state pragma directive of time 1 second or less, wait until the refresh timeout has elapsed, a new navigate has begun, and return to the first step of this algorithm. @@ -3338,9 +3338,9 @@ make the tab containing the browsing context the selected tab. "type" from the parameters argument.

  • Create a new top-level browsing context by running - the window open steps with url set to - "about:blank", target set to the empty - string, and features set to "noopener" and + the window open steps with url set to + "about:blank", target set to the empty + string, and features set to "noopener" and the user agent configured to create a new browsing context. This must be done without invoking the focusing steps for the created browsing context. If type hint has the value "tab", @@ -6245,19 +6245,19 @@ a remote end must run the following steps: calling FunctionCreate, with arguments:

    -
    kind +
    kind
    Normal. -
    list +
    list
    An empty List. -
    body +
    body
    The result of parsing body above. -
    global scope +
    global scope
    The result of parsing global scope above. -
    strict +
    strict
    The result of parsing strict above.
    From f7757802ca32b050866e045e107bf2dfb4ee5139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Sun, 31 May 2020 21:06:55 +0200 Subject: [PATCH 07/17] Replace data-lt attribute with lt > sed -i '' 's/data-lt=/lt=/g' index.bs This leaves a data-lt-noDefault attributes, untouched for now. --- index.bs | 446 +++++++++++++++++++++++++++---------------------------- 1 file changed, 223 insertions(+), 223 deletions(-) diff --git a/index.bs b/index.bs index 611c68e58..16dfd4a1e 100644 --- a/index.bs +++ b/index.bs @@ -88,8 +88,8 @@ are software developers and testers writing automated tests and other tooling, such as monitoring or load testing, that relies on automating a browser. As such, care has been taken to provide commands -that simplify common tasks such as typing into -and clicking elements. +that simplify common tasks such as typing into +and clicking elements.
  • @@ -140,7 +140,7 @@ produces the largest integer, closest to positive infinity, that is not larger than value.

    -A Universally Unique IDentifier (UUID) +A Universally Unique IDentifier (UUID) is a 128 bits long URN that requires no central registration process. Generating a UUID means Creating a UUID From Truly Random or Pseudo-Random Numbers, @@ -148,7 +148,7 @@ and converting it to the string representation. [[RFC4122]]

    -The Unix Epoch +The Unix Epoch is a value that approximates the number of seconds that have elapsed since the Epoch, as described by The Open Group Base Specifications Issue 7 @@ -173,7 +173,7 @@ The browser chrome is a non-normative term to refer to the representation through which the user interacts with the user agent itself, as distinct from the accessed web content. -Examples of browser chrome elements +Examples of browser chrome elements include, but are not limited to, toolbars (such as the bookmark toolbar), menus (such as the file or context menu), @@ -231,33 +231,33 @@ It is acknowledged that this is complementary to the Evil Bit [[RFC3514]].

    The WebDriver protocol consists of communication between:

    -
    Local end +
    Local end

    The local end represents the client side of the protocol, which is usually in the form of language-specific libraries providing an API on top of the WebDriver protocol. This specification does not place any restrictions on the details of those libraries above the level of the wire protocol. -

    Remote end +
    Remote end
    The remote end hosts the server side of the protocol. Defining the behavior of a remote end in response to the WebDriver protocol forms the largest part of this specification.

    For remote ends the standard defines two broad conformance - classes, known as node types: + classes, known as node types:

    -
    Intermediary node +
    Intermediary node
    Intermediary nodes are those that act as proxies, implementing both the local end and remote end of the protocol. However they are not expected to implement remote end steps directly. All nodes between a specific intermediary node and a local end are said to - be downstream of that + be downstream of that node. Conversely, any nodes between a specific intermediary node and an endpoint node are said to - be upstream. + be upstream.
    Endpoint node
    An endpoint node is the final remote end @@ -281,7 +281,7 @@ In all other cases it must be true.

    If the intermediary node is a multiplexer that manages - multiple endpoint nodes, + multiple endpoint nodes, this might indicate its ability to purvey more sessions, for example if it has hit its maximum capacity.

    @@ -311,14 +311,14 @@ In all other cases it must be true.

    Where algorithms that return values are fallible, they are written in terms of returning either - success or error. + success or error. A success value has an associated data field which encapsulates the value returned, whereas an error response has an associated error code.

    When calling a fallible algorithm, the construct “Let result be the result - of trying to call algorithm” + of trying to call algorithm” is equivalent to

      @@ -328,12 +328,12 @@ In all other cases it must be true. otherwise let result be temp’s data field.
    -

    The result of getting a property with argument name is defined as being the same as the result of calling Object.[[\GetOwnProperty]](name). -

    The result of getting a property with default with arguments name and default is defined as being the same as the result of calling @@ -341,7 +341,7 @@ In all other cases it must be true. results in a value other than undefined and default otherwise. -

    Setting a property with +

    Setting a property with arguments name and value is defined as being the same as calling Object.[[\Put]](name, value). @@ -350,7 +350,7 @@ In all other cases it must be true. of type JSON Object is defined as the result of calling JSON.[[\Stringify]](object). -

    The result of JSON deserialization with text is defined as +

    The result of JSON deserialization with text is defined as the result of calling JSON.[[\Parse]](text).

    @@ -361,7 +361,7 @@ In all other cases it must be true.

    The WebDriver protocol is organised into commands. Each HTTP request with a method and template defined in this specification -represents a single command, +represents a single command, and therefore each command produces a single HTTP response.

    @@ -421,7 +421,7 @@ when it receives a particular command. from command parameters.

  • Let the current session be the session - with ID session id + with ID session id in the list of active sessions, or null if there is no such matching session. @@ -465,7 +465,7 @@ when it receives a particular command.

    Otherwise, let parameters be null.

  • Wait for navigation to complete. If this returns - an error return its value and + an error return its value and jump to step 1 in this overall algorithm, otherwise continue.

  • Let response result be the return value @@ -537,9 +537,9 @@ when it receives a particular command. and status message to the string corresponding to the description of status in the status code registry. -

  • Set the response’s header - with name - and value +

  • Set the response’s header + with name + and value with the following values:

    @@ -551,17 +551,17 @@ when it receives a particular command.
  • Let response’s body be - the UTF-8 encoded JSON + the UTF-8 encoded JSON serialization of a JSON Object with a key "value" set to data.

  • Let response bytes be the byte sequence resulting from serializing response according to the rules in [[RFC7230]]. -

  • Write response bytes +

  • Write response bytes to the connection. -

    A url variable dictionary is defined +

    A url variable dictionary is defined as the mapping of a command’s URI template variable names to their corresponding values.

  • @@ -569,9 +569,9 @@ when it receives a particular command.

    Routing requests

    -

    Request routing +

    Request routing is the process of going from a HTTP request - to the series of steps needed + to the series of steps needed to implement the command represented by that request.

    A remote end has an associated URL prefix, @@ -626,7 +626,7 @@ when it receives a particular command.

    Endpoints

    -

    The following table of endpoints lists +

    The following table of endpoints lists the method and URI template for each endpoint node command. Extension commands are implicitly appended to this table. @@ -1070,8 +1070,8 @@ when it receives a particular command.

    @@ -1104,7 +1104,7 @@ when it receives a particular command. @@ -1278,7 +1278,7 @@ when it receives a particular command. features.

    Commands defined in this way - are called extension commands + are called extension commands and behave no differently than other commands; each has a dedicated HTTP endpoint and a set of remote end steps. @@ -1293,7 +1293,7 @@ when it receives a particular command. as that of other built-in commands.

    In order to avoid potential resource conflicts with other implementations, - vendor-specific extension command URI Templates must begin with one + vendor-specific extension command URI Templates must begin with one or more path segments which uniquely identifies the vendor and UA. It is suggested that vendors use their vendor prefixes without additional characters as outlined in [[CSS21]], @@ -1320,7 +1320,7 @@ when it receives a particular command. remote end steps. -

    Other specifications may define additional WebDriver capabilities. Each defined capability must have a capability name which is a string not containing a ":" (colon) character, @@ -1340,7 +1340,7 @@ either null to indicate the capability is not matched, or a non-null JSON-serializable value if the capability is matched. -

    Other specifications may also define WebDriver new session algorithms, which are called just after a new session is created, and before the new session response is sent to the remote end. These @@ -1353,7 +1353,7 @@ modify any entry in the capabilities object with a name that's an specification.

    Remote ends may also introduce - extension capabilities + extension capabilities that are extra capabilities used to provide configuration or fulfill other vendor-specific needs. Extension capabilities’ key @@ -1395,7 +1395,7 @@ specification.

    Capabilities

    -

    WebDriver capabilities +

    WebDriver capabilities are used to communicate the features supported by a given implementation. The local end may use capabilities to define which features it requires the remote end @@ -1450,7 +1450,7 @@ with a "moz:" prefix:

    -
    element not interactable A command could not be completed because the element is not - pointer- or - keyboard interactable. + pointer- or + keyboard interactable.
    invalid element state A command could not be completed because the element is in an invalid state, e.g. attempting to - clear an element that isn’t + clear an element that isn’t both editable and resettable.
    Accept insecure TLS certificates + Accept insecure TLS certificates "acceptInsecureCerts" boolean Indicates whether untrusted and self-signed TLS certificates @@ -1597,7 +1597,7 @@ with a "moz:" prefix:

    A host and optional port for a scheme is defined as being a valid host, optionally followed by a colon and a valid port. The host may - include credentials. If the + include credentials. If the port is omitted and scheme has a default port, this is the implied port. Otherwise, the port is left undefined. @@ -1670,7 +1670,7 @@ with a "moz:" prefix:

    Processing capabilities

    -

    To process capabilities +

    To process capabilities with argument parameters, the endpoint node must take the following steps: @@ -1728,7 +1728,7 @@ with a "moz:" prefix: to an indexed property in validated first match capabilities:

    1. Let merged be the result of - trying to merge + trying to merge capabilities with required capabilities and first match capabilities as arguments. @@ -1739,7 +1739,7 @@ with a "moz:" prefix: to an indexed property in merged capabilities:

      1. Let matched capabilities be the result of - trying to match + trying to match capabilities with capabilities as an argument. @@ -2079,7 +2079,7 @@ with a "moz:" prefix: and allowing sessions to be routed via a multiplexer (known as an intermediary node). -

        A WebDriver session represents +

        A WebDriver session represents the connection between a local end and a specific remote end.

        A session is started when @@ -2108,7 +2108,7 @@ with a "moz:" prefix: which is the session in which that command will run.

        A remote end has an associated list of - active sessions, + active sessions, which is a list of all sessions that are currently started. A remote end that is not an intermediary node has at most one active session at a given time. @@ -2134,7 +2134,7 @@ with a "moz:" prefix: context.

        -A session has an associated session timeouts +A session has an associated session timeouts that records the timeout duration values used to control the behavior of script evaluation, navigation, @@ -2167,7 +2167,7 @@ Unless stated otherwise it is in the dismiss and notify state.

        A session has an associated input cancel list.

        A session has an associated request queue which is a - queue of requests that are currently awaiting + queue of requests that are currently awaiting processing.

        When asked to close the session, @@ -2210,7 +2210,7 @@ Unless stated otherwise it is in the dismiss and notify state. so that the connection is not prematurely closed.

        -

        New Session

        +

        New Session

        @@ -2273,7 +2273,7 @@ If the creation fails, a session not createderror is returned. } } -

        Once all capabilities are merged from this example, +

        Once all capabilities are merged from this example, an endpoint node would receive New Session capabilities identical to:

        [
        @@ -2455,13 +2455,13 @@ If the creation fails, a session not created error is returned.
         
        @@ -2727,19 +2727,19 @@ Return success with data null.

        Provides the timeout limit used to interrupt -an explicit navigation attempt. +an explicit navigation attempt.

        "none" - none + none
        "eager" - eager + eager "interactive"
        "normal" - normal + normal "complete"
        @@ -2758,7 +2758,7 @@ Return success with data null.
      2. Return success with data value.

      -

      When asked to wait for navigation to complete, +

      When asked to wait for navigation to complete, run the following steps:

        @@ -2931,7 +2931,7 @@ Return success with data null.
      1. Handle any user prompts and return its value if it is an error. -

      2. Let url be the serialization +

      3. Let url be the serialization of the current top-level browsing context’s active document’s document URL. @@ -2976,7 +2976,7 @@ Return success with data null. whichever occurs sooner.

      4. If the previous step completed by the session page load - timeout being reached, and user prompts have been handled, return error with error code timeout. @@ -3021,7 +3021,7 @@ Return success with data null. whichever occurs sooner.

      5. If the previous step completed by the session page load - timeout being reached, and user prompts have been handled, return error with error code timeout. @@ -3129,7 +3129,7 @@ Return success with data null. if it has been discarded.

        Each browsing context has an associated - window handle which uniquely + window handle which uniquely identifies it. This must be a String and must not be "current". @@ -3439,7 +3439,7 @@ make the tab containing the browsing context the selected tab.

      6. Let child window be the WindowProxy object obtained by calling - window.[[\GetOwnProperty]] + window.[[\GetOwnProperty]] (id).

      7. Set the current browsing context to @@ -3530,7 +3530,7 @@ make the tab containing the browsing context the selected tab. an unsupported operation error is returned.

        The top-level browsing context - has an associated window state + has an associated window state which describes what visibility state its OS widget window is in. It can be in one of the following states: @@ -3575,13 +3575,13 @@ make the tab containing the browsing context the selected tab. the top-level browsing context’s OS window cannot enter either of the window states, or if this concept is not applicable on the current system, - the default state must be normal. + the default state must be normal.

        A top-level browsing context’s window rect is defined as a dictionary of the screenX, screenY, outerWidth and outerHeight attributes of the WindowProxy. - Its JSON representation is the following: + Its JSON representation is the following:

        "x" @@ -3621,7 +3621,7 @@ make the tab containing the browsing context the selected tab. Do not return from this operation until the visibility state of the top-level browsing context’s active document - has reached the hidden state, + has reached the hidden state, or until the operation times out.

        To restore the window, @@ -3633,7 +3633,7 @@ make the tab containing the browsing context the selected tab. Do not return from this operation until the visibility state of the top-level browsing context’s active document - has reached the visible state, + has reached the visible state, or until the operation times out.

        @@ -3664,7 +3664,7 @@ make the tab containing the browsing context the selected tab.
      8. Handle any user prompts and return its value if it is an error.

      9. Return success - with the JSON serialization + with the JSON serialization of the current top-level browsing context’s window rect.

      @@ -3791,7 +3791,7 @@ corresponding to the current top-level browsing context.
  • Return success - with the JSON serialization + with the JSON serialization of the current top-level browsing context’s window rect.

  • @@ -3837,7 +3837,7 @@ corresponding to the current top-level browsing context. of the current top-level browsing context.
  • Return success - with the JSON serialization + with the JSON serialization of the current top-level browsing context’s window rect. @@ -3880,7 +3880,7 @@ corresponding to the current top-level browsing context.

  • Iconify the window.

  • Return success - with the JSON serialization + with the JSON serialization of the current top-level browsing context’s window rect. @@ -3918,7 +3918,7 @@ corresponding to the current top-level browsing context. active document’s document element.

  • Return success - with the JSON serialization + with the JSON serialization of the current top-level browsing context’s window rect. @@ -3930,7 +3930,7 @@ corresponding to the current top-level browsing context.

    Elements

    -

    A web element +

    A web element is an abstraction used to identify an element when it is transported via the protocol, between remote- and local ends. @@ -3978,7 +3978,7 @@ argument reference, run the following steps:

  • Return success with element. -

    To create a web element reference +

    To create a web element reference for an element:

      @@ -4009,7 +4009,7 @@ argument reference, run the following steps: return error with error code invalid argument.
    1. Let reference be the result of - getting + getting the web element identifier property from object. @@ -4024,7 +4024,7 @@ argument reference, run the following steps: if its node document is not the active document or if its context object is not connected. -

      To scroll into view +

      To scroll into view an element perform the following steps only if the element is not already in view: @@ -4046,42 +4046,42 @@ argument reference, run the following steps:

    Editable elements - are those that can be used for typing - and clearing, + are those that can be used for typing + and clearing, and they fall into two subcategories:

    -
    Mutable form control elements +
    Mutable form control elements

    Denotes input elements that are mutable (e.g. that are not read only or disabled) and whose type attribute is in one of the following states:

    And the textarea element. -

    Mutable elements +
    Mutable elements

    Denotes elements that are editing hosts or content editable.

    An element is said to have - pointer events disabled + pointer events disabled if the resolved value of its "pointer-events" style property is "none". @@ -4098,22 +4098,22 @@ argument reference, run the following steps: WebDriver performs hit-testing to find if the interaction will be able to reach the requested element. -

    An interactable element +

    An interactable element is an element which is either pointer-interactable or keyboard-interactable. -

    A pointer-interactable element +

    A pointer-interactable element is defined to be the first element, defined by the paint order found at the center point of its rectangle that is inside the viewport, excluding the size of any rendered scrollbars. -

    A keyboard-interactable element +

    A keyboard-interactable element is any element that has a focusable area, is a body element, or is the document element. -

    An element’s in-view center point +

    An element’s in-view center point is the origin position of the rectangle that is the intersection between the element’s first DOM client rectangle @@ -4155,7 +4155,7 @@ argument reference, run the following steps: if it is a member of its own pointer-interactable paint tree, given the pretense that its pointer events are not disabled. -

    An element is obscured +

    An element is obscured if the pointer-interactable paint tree at its center point is empty, or the first element in this tree @@ -4163,7 +4163,7 @@ argument reference, run the following steps: