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 91% rename from index.html rename to index.bs index 207184c6e..2daf56414 100644 --- a/index.html +++ b/index.bs @@ -1,60 +1,47 @@ - - - -
+Title: WebDriver +Level: 2 +Shortname: webdriver +Status: ED +TR: https://www.w3.org/TR/webdriver/ +Group: browser-testing-tools +URL: https://w3c.github.io/webdriver/ +Repository: w3c/webdriver +Editor: Simon Stewart, Apple https://www.apple.com/, http://www.rocketpoweredjetpants.com/, w3cid 50228 +Editor: David Burns, BrowserStack https://www.browserstack.com/, http://www.theautomatedtester.co.uk/, w3cid 50184 +!Channel: #webdriver on irc.w3.org +Abstract: WebDriver is a remote control interface +Abstract: that enables introspection and control of user agents. +Abstract: It provides a platform- and language-neutral wire protocol +Abstract: as a way for out-of-process programs +Abstract: to remotely instruct the behavior of web browsers. +Abstract: +Abstract: Provided is a set of interfaces +Abstract: to discover and manipulate DOM elements in web documents +Abstract: and to control the behavior of a user agent. +Abstract: It is primarily intended to allow web authors to write tests +Abstract: that automate a user agent from a separate controlling process, +Abstract: but may also be used in such a way as to allow in-browser scripts +Abstract: to control a — possibly separate — browser. +Boilerplate: conformance no, index no, idl-index no, issues-index no +Indent: 2 ++ +
+{ + "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.
-
The WebDriver standard attempts to follow a number of design goals:
This specification is derived from the popular
@@ -116,7 +114,7 @@
The largest intended group of users of this specification
@@ -124,12 +122,12 @@
WebDriver provides a mechanism for others to define extensions to the protocol
@@ -141,7 +139,13 @@
+As well as sections marked as non-normative, all authoring guidelines, diagrams,
+examples, and notes in this specification are non-normative. Everything else in
+this specification is normative.
+
Conformance requirements phrased as algorithms
or specific steps may be implemented in any manner,
@@ -152,7 +156,7 @@
In equations, all numbers are integers,
@@ -176,7 +180,7 @@
-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,
@@ -184,7 +188,7 @@
-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
@@ -209,7 +213,7 @@
The webdriver-active flag
@@ -262,38 +266,38 @@ The WebDriver protocol consists of communication between:
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.
- For remote ends the standard defines two broad conformance
- classes, known as node types:
+ classes, known as node types:
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.
WebDriver remote ends must provide
an HTTP compliant wire protocol
@@ -336,7 +340,7 @@ 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;
@@ -347,14 +351,14 @@ 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
The result of getting a property with argument name is
+ The result of getting a property with argument name is
defined as being the same as the result of calling
- Object.[[\GetOwnProperty]](name).
+ Object.\[[GetOwnProperty]](name).
- The result of getting a property with default with
+ The result of getting a property with default with
arguments name and default is defined as being
the same as the result of calling
- Object.[[\GetOwnProperty]](name) if that
+ Object.\[[GetOwnProperty]](name) if that
results in a value other than Setting a property with
+ Setting a property with
arguments name and value is defined as being
the same as calling
- Object.[[\Put]](name, value).
+ Object.\[[Put]](name, value).
The result of JSON serialization with object
of type JSON Object is defined as the result of
- calling The result of JSON deserialization with text is defined as
- the result of calling The result of JSON deserialization with text is defined as
+ the result of calling
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.
@@ -410,7 +414,7 @@ The remote end is an HTTP server
reading requests from the client and writing responses,
@@ -457,7 +461,7 @@ Let the current session be the session
- with ID session id
+ with ID session id
in the list of active sessions,
or Otherwise, let parameters be 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
@@ -526,7 +530,7 @@ When required to send an error,
with error code
- and an optional error data dictionary,
+ and an optional error data dictionary,
a remote end must run the following steps: Set the response’s header
+ with name
+ and value
with the following values:
Let response’s body be
- the UTF-8 encoded JSON
+ the UTF-8 encoded JSON
serialization of a JSON Object with a key
" 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.
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,
@@ -660,9 +664,9 @@ 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.
@@ -1025,7 +1029,7 @@ Errors are represented in the WebDriver protocol
by an HTTP response with an HTTP status in the 4xx or 5xx range,
@@ -1106,8 +1110,8 @@ Using the terminology defined in this section, others may define additional
commands that seamlessly integrate with the standard protocol. This allows
@@ -1314,7 +1318,7 @@ 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.
@@ -1329,7 +1333,7 @@ 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]],
@@ -1356,9 +1360,9 @@ Other specifications may define additional WebDriver capabilities. Each defined
-capability must have a capability name which is a string
+capability must have a capability name which is a string
not containing a " 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
algorithms are called with session representing the
WebDriver session that will be established, and
-capabilites, the capabilities object that will be returned
+capabilites, the capabilities object that will be returned
to the remote end. It is permitted for such an algorithm to
modify any entry in the capabilities object with a name that's an
additional WebDriver capability defined by the same
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
@@ -1429,9 +1433,9 @@ 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
@@ -1465,28 +1469,28 @@ The proxy configuration capability
is a JSON Object nested
@@ -1558,7 +1562,7 @@ 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.
@@ -1704,9 +1708,9 @@ To process capabilities
+ To process capabilities
with argument parameters,
the endpoint node must take the following steps:
@@ -1764,7 +1768,7 @@ Let merged be the result of
- trying to merge
+ trying to merge
capabilities with required capabilities
and first match capabilities as arguments.
@@ -1775,7 +1779,7 @@ Let matched capabilities be the result of
- trying to match
+ trying to match
capabilities with capabilities as an
argument.
@@ -2105,7 +2109,7 @@ A session is equivalent to a single instantiation of a particular user agent,
including all its child browsers.
@@ -2115,7 +2119,7 @@ A WebDriver session represents
+ A WebDriver session represents
the connection between a local end and a specific remote end.
A session is started when
@@ -2144,7 +2148,7 @@ 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.
@@ -2170,7 +2174,7 @@
-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,
@@ -2203,7 +2207,7 @@ 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,
@@ -2246,7 +2250,7 @@ Design
Design
+This section is non-normative.
Compatibility
+Compatibility
Compatibility
Simplicity
+Simplicity
Simplicity
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.
Extensions
+Extensions
Extensions
Conformance
+Extensions
Terminology
+Terminology
Terminology
that is not larger than value.
Terminology
[[RFC4122]]
Terminology
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),
@@ -220,7 +224,7 @@ Terminology
Interface
+Interface
Interface
Nodes
+Nodes
-
-
Nodes
Protocol
+Protocol
Protocol
no requirements are made upon their exposed user-facing API.
Algorithms
+Algorithms
Algorithms
@@ -364,40 +368,40 @@
-Algorithms
otherwise let result be temp’s data field.
undefined
and default otherwise.
-JSON.
[[\Stringify]](object).
+ calling JSON.
\[[Stringify]](object).
-JSON.
[[\Parse]](text).
+JSON.
\[[Parse]](text).
Commands
+Commands
Commands
Processing model
+Processing model
Processing model
from command parameters.
null
if there is no such matching session.
@@ -501,7 +505,7 @@ Processing model
null
.
Processing model
@@ -573,9 +577,9 @@
-Processing model
and status message to the string corresponding
to the description of status in the status code registry.
-
@@ -587,27 +591,27 @@
Processing model
value
" set to data.
Routing requests
+Routing requests
-Routing requests
Endpoints
+Endpoints
-Endpoints
Errors
+Errors
Errors
element not interactable
A command could not be completed
because the element is not
- pointer- or
- keyboard interactable.
+ pointer- or
+ keyboard interactable.
@@ -1140,7 +1144,7 @@
@@ -1305,7 +1309,7 @@ Errors
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.
Errors
Extensions
+Extensions
Extensions
features.
Extensions
as that of other built-in commands.
Extensions
remote end steps.
-:
" (colon) character,
an additional capability deserialization algorithm which is
a set of steps taking a single argument value which has a
@@ -1376,20 +1380,20 @@ Extensions
matched, or a non-null JSON-serializable value if the capability is
matched.
-Extensions
Capabilities
+Capabilities
-Capabilities
-
Browser name
+ Browser name
" browserName
"
string
Identifies the user agent.
-
Browser version
+ Browser version
" browserVersion
"
string
Identifies the version of the user agent.
-
Platform name
+ Platform name
" platformName
"
string
Identifies the operating system of the endpoint node.
- Accept insecure TLS certificates
+ Accept insecure TLS certificates
" acceptInsecureCerts
"
boolean
Indicates whether untrusted and self-signed TLS certificates
@@ -1539,7 +1543,7 @@ Capabilities
Proxy
+Proxy
Proxy
-
proxyType
+ proxyType
string
Indicates the type of proxy configuration.
" pac
",
@@ -1569,7 +1573,7 @@ Proxy
-
proxyAutoconfigUrl
+ proxyAutoconfigUrl
string
Defines the URL for a proxy auto-config file
if proxyType
@@ -1578,7 +1582,7 @@ Proxy
-
ftpProxy
+ ftpProxy
string
Defines the proxy host for FTP traffic when
the proxyType
is "manual
".
@@ -1587,7 +1591,7 @@ Proxy
-
httpProxy
+ httpProxy
string
Defines the proxy host for HTTP traffic when
the proxyType
is "manual
".
@@ -1596,7 +1600,7 @@ Proxy
-
noProxy
+ noProxy
array
Lists the address for which the proxy should be bypassed when
the proxyType
is "manual
".
@@ -1604,7 +1608,7 @@ Proxy
-
sslProxy
+ sslProxy
string
Defines the proxy host for encrypted TLS traffic
when the proxyType
is "manual
".
@@ -1613,7 +1617,7 @@ Proxy
-
socksProxy
+ socksProxy
string
Defines the proxy host for a SOCKS proxy
when the proxyType
is "manual
".
@@ -1621,7 +1625,7 @@ Proxy
- socksVersion
+ socksVersion
number
Defines the SOCKS proxy version
when the proxyType
is "manual
".
@@ -1633,7 +1637,7 @@ Proxy
Proxy
Processing capabilities
+Processing capabilities
-Processing capabilities
to an indexed property in validated first match capabilities:
Processing capabilities
to an indexed property in merged capabilities:
Processing capabilities
Sessions
+Sessions
Sessions
and allowing sessions to be routed via a multiplexer
(known as an intermediary node).
-Sessions
which is the session in which that command will run.
Sessions
context.
Sessions
Sessions
so that the connection is not prematurely closed.
New Session
+New Session