WebDriver W3C Working Draft 02 July 2026 More details about this document This version: https://www.w3.org/TR/2026/WD-webdriver2-20260702/ Latest published version: https://www.w3.org/TR/webdriver2/ Latest editor's draft: https://w3c.github.io/webdriver/ History: https://www.w3.org/standards/history/webdriver2/ Commit history Test suite: https://wpt.live/webdriver/ Implementation report: https://wpt.fyi/results/webdriver Editors: Simon Stewart ( Apple ) David Burns ( BrowserStack ) Feedback: GitHub w3c/webdriver ( pull requests , new issue , open issues ) Channel #webdriver on irc.w3.org Copyright © 2026 World Wide Web Consortium . W3C ® liability , trademark and permissive document license rules apply. Abstract 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. Status of This Document This section describes the status of this document at the time of its publication. A list of current W3C publications and the latest revision of this technical report can be found in the W3C standards and drafts index . This document was published by the Browser Testing and Tools Working Group as a Working Draft using the Recommendation track . Publication as a Working Draft does not imply endorsement by W3C and its Members. This is a draft document and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to cite this document as other than a work in progress. This document was produced by a group operating under the W3C Patent Policy . W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent that the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy . This document is governed by the 18 August 2025 W3C Process Document . Table of Contents Abstract Status of This Document 1. Design 1.1 Compatibility 1.2 Simplicity 1.3 Extensions 2. Conformance 3. Terminology 4. Interface 5. Nodes 6. Protocol 6.1 Algorithms 6.2 Commands 6.3 Processing model 6.4 Routing requests 6.5 Endpoints 6.6 Errors 6.7 Extensions 7. Capabilities 7.1 Proxy 7.2 Processing capabilities 8. Sessions 8.1 Global State 8.2 New Session 8.3 Delete Session 8.4 Status 9. Timeouts 9.1 Get Timeouts 9.2 Set Timeouts 10. Navigation 10.1 Navigate To 10.2 Get Current URL 10.3 Back 10.4 Forward 10.5 Refresh 10.6 Get Title 11. Contexts 11.1 Get Window Handle 11.2 Close Window 11.3 Switch To Window 11.4 Get Window Handles 11.5 New Window 11.6 Switch To Frame 11.7 Switch To Parent Frame 11.8 Resizing and positioning windows 11.8.1 Get Window Rect 11.8.2 Set Window Rect 11.8.3 Maximize Window 11.8.4 Minimize Window 11.8.5 Fullscreen Window 12. Elements 12.1 Interactability 12.2 Shadow Roots 12.3 Retrieval 12.3.1 Locator strategies 12.3.1.1 CSS selectors 12.3.1.2 Link text 12.3.1.3 Partial link text 12.3.1.4 Tag name 12.3.1.5 XPath 12.3.2 Find Element 12.3.3 Find Elements 12.3.4 Find Element From Element 12.3.5 Find Elements From Element 12.3.6 Find Element From Shadow Root 12.3.7 Find Elements From Shadow Root 12.3.8 Get Active Element 12.3.9 Get Element Shadow Root 12.4 State 12.4.1 Is Element Selected 12.4.2 Get Element Attribute 12.4.3 Get Element Property 12.4.4 Get Element CSS Value 12.4.5 Get Element Text 12.4.6 Get Element Tag Name 12.4.7 Get Element Rect 12.4.8 Is Element Enabled 12.4.9 Get Computed Role 12.4.10 Get Computed Label 12.5 Interaction 12.5.1 Element Click 12.5.2 Element Clear 12.5.3 Element Send Keys 13. Document 13.1 Get Page Source 13.2 Executing Script 13.2.1 Execute Script 13.2.2 Execute Async Script 14. Cookies 14.1 Get All Cookies 14.2 Get Named Cookie 14.3 Add Cookie 14.4 Delete Cookie 14.5 Delete All Cookies 15. Actions 15.1 Actions Options 15.2 Input sources 15.2.1 Null input source 15.2.2 Key input source 15.2.3 Pointer input source 15.2.4 Wheel input source 15.3 Input state 15.4 Ticks 15.5 Processing actions 15.6 Dispatching actions 15.6.1 General actions 15.6.2 Keyboard actions 15.6.3 Pointer actions 15.6.4 Wheel actions 15.7 Perform Actions 15.8 Release Actions 16. User prompts 16.1 User Prompt Handler 16.2 Dismiss Alert 16.3 Accept Alert 16.4 Get Alert Text 16.5 Send Alert Text 17. Screen capture 17.1 Take Screenshot 17.2 Take Element Screenshot 18. Print 18.1 Print Page 19. Appendices 19.1 External Specifications A. Privacy B. Security C. Element displayedness D. Acknowledgements E. Index E.1 Terms defined by this specification E.2 Terms defined by reference F. References F.1 Normative references 1. Design This section is non-normative. The WebDriver standard attempts to follow a number of design goals: 1.1 Compatibility This specification is derived from the popular Selenium WebDriver browser automation framework. Selenium is a long-lived project, and due to its age and breadth of use it has a wide range of expected functionality. This specification uses these expectations to inform its design. Where improvements or clarifications have been made, they have been made with care to allow existing users of Selenium WebDriver to avoid unexpected breakages. 1.2 Simplicity The largest intended group of users of this specification 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. 1.3 Extensions WebDriver provides a mechanism for others to define extensions to the protocol for the purposes of automating functionality that cannot be implemented entirely in ECMAScript . This allows other web standards to support the automation of new platform features. It also allows vendors to expose functionality that is specific to their browser. 2. Conformance 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, so long as the end result is equivalent. Algorithms in this document are typically written with readability, rather than performance, in mind. 3. Terminology In equations, all numbers are integers, addition is represented by “+”, subtraction by “−”, division by “÷”, and bitwise OR by “|”. The characters “(” and “)” are used to provide logical grouping in these contexts. The mathematical function min ( value , value [, value ]) returns the smallest item of two or more values. Conversely, the function max ( value , value [, value ]) returns the largest item of two or more values. The mathematical function floor ( value ) produces the largest integer, closest to positive infinity, that is not larger than value . 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 , and converting it to the string representation. [ RFC4122 ] 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 section 4.15 (IEEE Std 1003.1). An integer is a Number that is unchanged under the ToInteger operation. The initial value of an ECMAScript property is the value defined by the platform for that property, i.e. the value it would have in the absence of any shadowing by content script. 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 include, but are not limited to, toolbars (such as the bookmark toolbar), menus (such as the file or context menu), buttons (such as the back and forward buttons), door hangers (such as security and certificate indicators), and decorations (such as operating system widget borders). MDN ✅ Navigator/webdriver This feature is in all major engines. Chrome 63+ Chrome Android ? Edge 12+ Edge Mobile ? Firefox 60+ Firefox Android ? Opera ? Opera Android ? Safari 10.1+ Safari iOS ? Samsung Internet ? WebView Android ? 4. Interface The webdriver-active flag is set to true when the user agent is under remote control. It is initially false. WebIDL interface mixin NavigatorAutomationInformation { readonly attribute boolean webdriver ; }; Navigator includes NavigatorAutomationInformation ; Note The NavigatorAutomationInformation interface should not be exposed on WorkerNavigator . webdriver Returns true if webdriver-active flag is set, false otherwise. Example 1 For web authors (non-normative): navigator . webdriver Defines a standard way for co-operating user agents to inform the document that it is controlled by WebDriver, for example so that alternate code paths can be triggered during automation. It is acknowledged that this is complementary to the Evil Bit [ RFC3514 ]. 5. Nodes The WebDriver protocol consists of communication between: 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 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 : 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. Nodes between a specific intermediary node and an endpoint node are said to be upstream of the endpoint node . Endpoint node An endpoint node is the final remote end in a chain of nodes that is not an intermediary node . The endpoint node is implemented by a user agent or a similar program. All remote end node types must be black-box indistinguishable from a remote end , from the point of view of local end , and so are bound by the requirements on a remote end in terms of the wire protocol. The readiness state of a remote end indicates whether it is free to accept new connections. It must be false if the implementation is an endpoint node and the list of active HTTP sessions is not empty, or otherwise if the remote end is known to be in a state in which attempting to create new sessions would fail. In all other cases it must be true. If the intermediary node is a multiplexer that manages multiple endpoint nodes , this might indicate its ability to purvey more sessions , for example if it has hit its maximum capacity. 6. Protocol WebDriver remote ends must provide an HTTP compliant wire protocol where the endpoints map to different commands . As this standard only defines the remote end protocol, it puts no demands to how local ends should be implemented. Local ends are only expected to be compatible to the extent that they can speak the remote end 's protocol; no requirements are made upon their exposed user-facing API. 6.1 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; implementations are free to adopt any implementation strategy that produces equivalent output to the specification. In particular, algorithms in this document are optimized for readability rather than performance. Where algorithms that return values are fallible, they are written in terms of returning either success or error . A success value has an associated data field which encapsulates the value returned, whereas an error value has an associated error code . When calling a fallible algorithm, the construct “Let result be the result of trying to call algorithm ” is equivalent to Let temp be the result of calling algorithm . If temp is an error return temp , otherwise let result be temp 's data field. The result of getting a property with name from object is defined as being the same as the result of calling Object.[[GetOwnProperty]] ( name ) on object . The result of getting a property with default with arguments name and default from object is defined as being the same as the result of calling Object.[[GetOwnProperty]] ( name ) on object if that results in a value other than undefined and default otherwise. Setting a property with arguments name and value on object is defined as being the same as calling Object.[[Put]] ( name , value ) on object . The result of JSON serialization with object of type JSON Object is defined as the result of calling stringify ( object ). The result of JSON deserialization with text is defined as the result of calling parse ( text ). 6.2 Commands The WebDriver protocol is organized into commands . Each HTTP request with a method and template defined in this specification represents a single command , and therefore each command produces a single HTTP response . In response to a command , a remote end will run a series of actions known as remote end steps . These provide the sequences of actions that a remote end takes when it receives a particular command . 6.3 Processing model The remote end is an HTTP server reading requests from the client and writing responses, typically over a TCP socket. For the purposes of this specification we model the data transmission between a particular local end and remote end with a connection to which the remote end may write bytes and read bytes . However the exact details of how this connection works and how it is established are out of scope. After a connection is established, the remote end must run the following steps: While the connection is not closed: Read bytes from the connection until a complete HTTP request can be constructed from the data. Let request be a request constructed from the received data, according to the requirements of [ RFC7230 ]. If it is not possible to construct a complete HTTP request , the remote end must either close the connection , return an HTTP response with status code 500, or return an error with error code unknown error . Let request match be the result of the algorithm to match a request with request 's method and URL as arguments. If request match is of type error , send an error with request match 's error code and continue . Otherwise, let command and URL variables be request match 's data. Let session be null. If URL variables contains " session id" : Note This condition is intended to exclude the New Session and Status commands and any extension commands which do not operate on a particular session . Let session id be URL variables [" session id "]. For each active session in the list of active sessions : If active session 's session ID is equal to session id , then let session be active session , and break. If the session is null send an error with error code invalid session id , then continue . Enqueue a task on remote end 's request queue to run the following steps: If session is no longer in the list of active sessions , then send an error with error code invalid session id and return. Let parameters be null . If request 's method is POST: Let parse result be the result of parsing as JSON with request 's body as the argument. If this process throws an exception, return an error with error code invalid argument and jump back to step 1 in this overall algorithm. If parse result is not an Object , send an error with error code invalid argument and jump back to step 1 in this overall algorithm. Otherwise, let parameters be parse result . Let navigate result be the result of wait for navigation to complete with session . If navigate result is an error , send an error with error code equal to navigate result 's error code and return. Let response result be the return value obtained by running the remote end steps for command with session , URL variables , and parameters . If response result is an error , send an error with error code equal to response result 's error code and return. Assert: response result is a success . Let response data be response result 's data. Send a response with status 200 and response data . When required to send an error , with error code and an optional error data dictionary, a remote end must run the following steps: Let status and name be the error response data for error code . Let message be an implementation-defined string containing a human-readable description of the reason for the error. Let stacktrace be an implementation-defined string containing a stack trace report of the active stack frames at the time when the error occurred. Let body be a new JSON Object initialized with the following properties: " error " name " message " message " stacktrace " stacktrace If the error data dictionary contains any entries, set the " data " field on body to a new JSON Object populated with the dictionary. Send a response with status and body as arguments. When required to send a response , with arguments status and data , a remote end must run the following steps: Let response be a new response . Set response 's HTTP status to status , 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 with the following values: Content-Type " application/json; charset=utf-8 " Cache-Control " no-cache " Let response 's body be 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 to the connection . 6.4 Routing requests Request routing is the process of going from an HTTP request to the series of steps needed to implement the command represented by that request. A remote end has an associated URL prefix , which is used as a prefix on all WebDriver-defined URLs on that remote end . This must either be undefined or a path-absolute URL . Example 2 For example a remote end wishing to run alongside other services on example.com might set its URL prefix to /wd so that a new session command would be invoked by sending a POST request to /wd/session , rather than /session . In order to match a request given a method and URL , the following steps must be taken: Let endpoints be a list containing each row in the table of endpoints . Remove each entry from endpoints for which the concatenation of the URL prefix and the entry's URI template does not have a valid expansion equal to URL 's path . If there are no entries in endpoints , return error with error code unknown command . Remove each entry in endpoints for which the method column is not equal to method . If there are no entries in endpoints , return error with error code unknown method . There is now exactly one entry in endpoints ; let entry be this entry. Let URI template be the concatenation of URL prefix with entry 's URI template . Let command be entry 's command . Let URL variables be a map with one entry for each variable defined in URI template , with the entry name equal to the template variable name, and the entry value being the variable value required to expand the URI template to match URL 's path . Return success with data command and URL variables . 6.5 Endpoints The following table of endpoints lists the method and URI template for each endpoint node command . Extension commands are implicitly appended to this table. Method URI Template Command POST /session New Session DELETE /session/{ session id } Delete Session GET /status Status GET /session/{ session id }/timeouts Get Timeouts POST /session/{ session id }/timeouts Set Timeouts POST /session/{ session id }/url Navigate To GET /session/{ session id }/url Get Current URL POST /session/{ session id }/back Back POST /session/{ session id }/forward Forward POST /session/{ session id }/refresh Refresh GET /session/{ session id }/title Get Title GET /session/{ session id }/window Get Window Handle DELETE /session/{ session id }/window Close Window POST /session/{ session id }/window Switch To Window GET /session/{ session id }/window/handles Get Window Handles POST /session/{ session id }/window/new New Window POST /session/{ session id }/frame Switch To Frame POST /session/{ session id }/frame/parent Switch To Parent Frame GET /session/{ session id }/window/rect Get Window Rect POST /session/{ session id }/window/rect Set Window Rect POST /session/{ session id }/window/maximize Maximize Window POST /session/{ session id }/window/minimize Minimize Window POST /session/{ session id }/window/fullscreen Fullscreen Window GET /session/{ session id }/element/active Get Active Element GET /session/{ session id }/element/{ element id }/shadow Get Element Shadow Root POST /session/{ session id }/element Find Element POST /session/{ session id }/elements Find Elements POST /session/{ session id }/element/{element id}/element Find Element From Element POST /session/{ session id }/element/{element id}/elements Find Elements From Element POST /session/{ session id }/shadow/ {shadow id} /element Find Element From Shadow Root POST /session/{ session id }/shadow/ {shadow id} /elements Find Elements From Shadow Root GET /session/{ session id }/element/{ element id }/selected Is Element Selected GET /session/{ session id }/element/{ element id }/attribute/{ name } Get Element Attribute GET /session/{ session id }/element/{ element id }/property/{ name } Get Element Property GET /session/{ session id }/element/{ element id }/css/{ property name } Get Element CSS Value GET /session/{ session id }/element/{ element id }/text Get Element Text GET /session/{ session id }/element/{ element id }/name Get Element Tag Name GET /session/{ session id }/element/{ element id }/rect Get Element Rect GET /session/{ session id }/element/{ element id }/enabled Is Element Enabled GET /session/{ session id }/element/{ element id }/computedrole Get Computed Role GET /session/{ session id }/element/{ element id }/computedlabel Get Computed Label POST /session/{ session id }/element/{ element id }/click Element Click POST /session/{ session id }/element/{ element id }/clear Element Clear POST /session/{ session id }/element/{ element id }/value Element Send Keys GET /session/{ session id }/source Get Page Source POST /session/{ session id }/execute/sync Execute Script POST /session/{ session id }/execute/async Execute Async Script GET /session/{ session id }/cookie Get All Cookies GET /session/{ session id }/cookie/{ name } Get Named Cookie POST /session/{ session id }/cookie Add Cookie DELETE /session/{ session id }/cookie/{ name } Delete Cookie DELETE /session/{ session id }/cookie Delete All Cookies POST /session/{ session id }/actions Perform Actions DELETE /session/{ session id }/actions Release Actions POST /session/{ session id }/alert/dismiss Dismiss Alert POST /session/{ session id }/alert/accept Accept Alert GET /session/{ session id }/alert/text Get Alert Text POST /session/{ session id }/alert/text Send Alert Text GET /session/{ session id }/screenshot Take Screenshot GET /session/{ session id }/element/{ element id }/screenshot Take Element Screenshot POST /session/{ session id }/print Print Page 6.6 Errors Errors are represented in the WebDriver protocol by an HTTP response with an HTTP status in the 4xx or 5xx range, and a JSON body containing details of the error . The body is a JSON Object and has a field named " value " whose value is an object bearing three, and sometimes four, fields: " error ", containing a string indicating the error code . " message ", containing an implementation-defined string with a human readable description of the kind of error that occurred. " stacktrace ", containing an implementation-defined string with a stack trace report of the active stack frames at the time when the error occurred. Optionally " data ", which is a JSON Object with additional error data helpful in diagnosing the error. Example 3 A GET request to /session/1234/url , where 1234 is not the session id of a session would return an HTTP response with the status 404 and a body of the form: { "value" : { "error" : "invalid session id" , "message" : "No active session with ID 1234" , "stacktrace" : "" } } Certain commands may also annotate errors with additional error data . Notably, this is the case for commands which invoke the user prompt handler , where the user prompt message may be included in a " text " field: { "value": { "error": "unexpected alert open" , "message" : "" , "stacktrace" : "" , "data" : { " text ": "Message from window.alert" } } } The following table lists each error code , its associated HTTP status , JSON error code, and a non-normative description of the error. The error response data for a particular error code is the values of the HTTP Status and JSON Error Code columns for the row corresponding to that error code . Error Code HTTP Status JSON Error Code Description element click intercepted 400 element click intercepted The Element Click command could not be completed because the element receiving the events is obscuring the element that was requested clicked. element not interactable 400 element not interactable A command could not be completed because the element is not pointer - or keyboard interactable . insecure certificate 400 insecure certificate Navigation caused the user agent to hit a certificate warning, which is usually the result of an expired or invalid TLS certificate. invalid argument 400 invalid argument The arguments passed to a command are either invalid or malformed. invalid cookie domain 400 invalid cookie domain An illegal attempt was made to set a cookie under a different domain than the current page. invalid element state 400 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 both editable and resettable . invalid selector 400 invalid selector Argument was an invalid selector. invalid session id 404 invalid session id Occurs if the given session id is not in the list of active sessions , meaning the session either does not exist or that it's not active. javascript error 500 javascript error An error occurred while executing JavaScript supplied by the user. move target out of bounds 500 move target out of bounds The target for mouse interaction is not in the browser's viewport and cannot be brought into that viewport. no such alert 404 no such alert An attempt was made to operate on a modal dialog when one was not open. no such cookie 404 no such cookie No cookie matching the given path name was found amongst the associated cookies of session 's current browsing context 's active document . no such element 404 no such element An element could not be located on the page using the given search parameters. no such frame 404 no such frame A command to switch to a frame could not be satisfied because the frame could not be found. no such window 404 no such window A command to switch to a window could not be satisfied because the window could not be found. no such shadow root 404 no such shadow root The element does not have a shadow root. script timeout error 500 script timeout A script did not complete before its timeout expired. session not created 500 session not created A new session could not be created. stale element reference 404 stale element reference A command failed because the referenced element is no longer attached to the DOM. detached shadow root 404 detached shadow root A command failed because the referenced shadow root is no longer attached to the DOM. timeout 500 timeout An operation did not complete before its timeout expired. unable to set cookie 500 unable to set cookie A command to set a cookie's value could not be satisfied. unable to capture screen 500 unable to capture screen A screen capture was made impossible. unexpected alert open 500 unexpected alert open A modal dialog was open, blocking this operation. unknown command 404 unknown command A command could not be executed because the remote end is not aware of it. unknown error 500 unknown error An unknown error occurred in the remote end while processing the command . unknown method 405 unknown method The requested command matched a known URL but did not match any method for that URL. unsupported operation 500 unsupported operation Indicates that a command that should have executed properly cannot be supported for some reason. An error data dictionary is a mapping of string keys to JSON serializable values that can optionally be included with error objects. 6.7 Extensions Using the terminology defined in this section, others may define additional commands that seamlessly integrate with the standard protocol. This allows vendors to expose functionality that is specific to their user agent, and it also allows other web standards to define commands for automating new platform features. Commands defined in this way are called extension commands and behave no differently than other commands ; each has a dedicated HTTP endpoint and a set of remote end steps . Each extension command has an associated extension command URI Template that is a URI Template string, and which should bear some resemblance to what the command performs. This value, along with the HTTP method and extension command , is added to the table of endpoints and thus follows the same rules for request routing 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 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 ], notably in section 4.1.2.2 on vendor keywords , as the name for this path element, and include a vendor-chosen UA identifier. Note If the extension command URI Template includes a variable named session id , the value of this variable will be used to define the session during command processing. Example 4 This might lead to a URL of the form /session/5d376174-36f0-11e5-9b9a-6bdf200a3f7f/ ms / edge / context , where session/{ session id } associates the request with the specified session, ms/edge identifies the command as specific to the Edge browser distributed by Microsoft, and context describes the functionality that, in the context of Edge, allows a local end to switch between browser-specific contexts. Requesting this URL will call the extension command 's 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, an additional capability deserialization algorithm which is a set of steps taking a single argument value which has a JSON type, returning either success wrapping the deserialized capability value or error . An additional WebDriver capability may also define a matched capability serialization algorithm , which is a set of steps used to determine if a capability is matched by the current implementation and provide any computed value to return to the user. This set of steps takes a single argument value , which is the output of the corresponding additional capability deserialization algorithm , and returns 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 algorithms are called with session representing the WebDriver session that will be established, and capabilities , 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 that are extra capabilities used to provide configuration or fulfill other vendor-specific needs. Extension capabilities' key must contain a " : " (colon) character, denoting an implementation specific namespace. The value can be arbitrary JSON types. As with extension commands , it is suggested that the key used to denote the extension capability namespace is based on the vendor keywords listed in [ CSS21 ] and precedes the first " : " character in the string. Example 5 Extension capabilities are typically used to provide UA or intermediary node specific configuration that is not handled by the table of standard capabilities . An example new session request body might look like this: { "capabilities" : { "alwaysMatch" : { // browser specific configuration "<prefix>:browserOptions" : { "binary" : "/usr/bin/browser-binary" , "args" : [ "--start-page=https://example.com" ] , } } } } 7. 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 to satisfy when creating a new session . Likewise, the remote end uses capabilities to describe the full feature set for a session . The following table of standard capabilities enumerates the capabilities each implementation must support. An implementation may define additional extension capabilities . Example 6 As an example, Mozilla could elect to hide new features behind capabilities with a " moz: " prefix: { "browserName" : "firefox" , "browserVersion" : "1234" , "moz:experimental-webdriver" : true } Capability Key Value Type Description Browser name " browserName " string Identifies the user agent. Browser version " browserVersion " string Identifies the version of the user agent. Platform name " platformName " string Identifies the operating system of the endpoint node . Accept insecure TLS certificates " acceptInsecureCerts " boolean Indicates whether untrusted and self-signed TLS certificates are implicitly trusted on navigation for the duration of the session . Page load strategy " pageLoadStrategy " string Defines the session 's page load strategy . Proxy configuration " proxy " JSON Object Defines the session 's proxy configuration . Window dimensioning/positioning " setWindowRect " boolean Indicates whether the remote end supports all of the resizing and repositioning commands . Session timeouts " timeouts " JSON Object Describes the timeouts imposed on certain session operations. Strict file interactability " strictFileInteractability " boolean Defines the session 's strict file interactability . Unhandled prompt behavior " unhandledPromptBehavior " string Describes the session 's user prompt handler . Defaults to " dismiss and notify ". User Agent " userAgent " string Identifies the default User-Agent value of the endpoint node . 7.1 Proxy The proxy configuration capability is a JSON Object nested within the primary capabilities . Implementations may define additional proxy configuration options, but they must not alter the semantics of those listed below. Key Value Type Description Valid values proxyType string Indicates the type of proxy configuration. " pac ", " direct ", " autodetect ", " system ", or " manual ". proxyAutoconfigUrl string Defines the URL for a proxy autoconfiguration file if proxyType is equal to " pac ". Any URL . httpProxy string Defines the proxy host for HTTP traffic when the proxyType is " manual ". A host and optional port for scheme " http ". noProxy array Lists the address for which the proxy should be bypassed when the proxyType is " manual ". A List containing any number of String s. sslProxy string Defines the proxy host for encrypted TLS traffic when the proxyType is " manual ". A host and optional port for scheme " https ". socksProxy string Defines the proxy host for a SOCKS proxy when the proxyType is " manual ". A host and optional port with an undefined scheme. socksVersion number Defines the SOCKS proxy version when the proxyType is " manual ". Any integer between 0 and 255 inclusive. 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 port is omitted and scheme has a default port , this is the implied port. Otherwise, the port is left undefined. A proxyType of " direct " indicates that the browser should not use a proxy at all. A proxyType of " system " indicates that the browser should use the various proxies configured for the underlying Operating System. A proxyType of " autodetect " indicates that the proxy to use should be detected in an implementation-specific way. The remote end steps to deserialize as a proxy argument parameter are: If parameter is not a JSON Object return an error with error code invalid argument . Let proxy be a new, empty proxy configuration object . For each enumerable own property in parameter run the following substeps: Let key be the name of the property. Let value be the result of getting a property named name from parameter . If there is no matching key for key in the proxy configuration table return an error with error code invalid argument . If value is not one of the valid values for that key , return an error with error code invalid argument . Set a property key to value on proxy . If proxy does not have an own property for " proxyType " return an error with error code invalid argument . If the result of getting a property named " proxyType " from proxy equals " pac ", and proxy does not have an own property for " proxyAutoconfigUrl " return an error with error code invalid argument . If proxy has an own property for " socksProxy " and does not have an own property for " socksVersion " return an error with error code invalid argument . Return success with data proxy . A proxy configuration object is a JSON Object where each of its own properties matching keys in the proxy configuration meets the validity criteria for that key. 7.2 Processing capabilities To process capabilities given parameters , and session configuration flags flags , the endpoint node must take the following steps: Let capabilities request be the result of getting the property " capabilities " from parameters . If capabilities request is not a JSON Object , return error with error code invalid argument . Let required capabilities be the result of getting the property " alwaysMatch " from capabilities request . If required capabilities is undefined , set the value to an empty JSON Object . Let required capabilities be the result of trying to validate capabilities with arguments required capabilities and flag . Let all first match capabilities be the result of getting the property " firstMatch " from capabilities request . If all first match capabilities is undefined , set the value to a List with a single entry of an empty JSON Object . If all first match capabilities is not a List with one or more entries, return error with error code invalid argument . Let validated first match capabilities be an empty List . For each first match capabilities corresponding to an indexed property in all first match capabilities : Let validated capabilities be the result of trying to validate capabilities with arguments first match capabilities and flags . Append validated capabilities to validated first match capabilities . Let merged capabilities be an empty List . For each first match capabilities corresponding to an indexed property in validated first match capabilities : Let merged be the result of trying to merge capabilities with required capabilities and first match capabilities as arguments. Append merged to merged capabilities . For each capabilities corresponding to an indexed property in merged capabilities : Let matched capabilities be the result of trying to match capabilities with capabilities as an argument. If matched capabilities is not null , return success with data matched capabilities . Return success with data null . When required to validate capabilities with argument capabilities : If capabilities is not a JSON Object return an error with error code invalid argument . Let result be an empty JSON Object . For each enumerable own property in capabilities , run the following substeps: Let name be the name of the property. Let value be the result of getting a property named name from capabilities . Run the substeps of the first matching condition: value is null Let deserialized be set to null . name equals " acceptInsecureCerts " If value is not a boolean return an error with error code invalid argument . Otherwise, let deserialized be set to value . name equals " browserName " name equals " browserVersion " name equals " platformName " If value is not a string return an error with error code invalid argument . Otherwise, let deserialized be set to value . name equals " pageLoadStrategy " Let deserialized be the result of trying to deserialize as a page load strategy with argument value . name equals " proxy " Let deserialized be the result of trying to deserialize as a proxy with argument value . name equals " strictFileInteractability " If value is not a boolean return an error with error code invalid argument . Otherwise, let deserialized be set to value name equals " timeouts " Let deserialized be the result of trying to deserialize as timeouts configuration with value . name equals " unhandledPromptBehavior " Let deserialized be the result of trying to deserialize as an unhandled prompt behavior with argument value . name is the name of an additional WebDriver capability Let deserialized be the result of trying to run the additional capability deserialization algorithm for the extension capability corresponding to name , with argument value . name is the key of an extension capability If name is known to the implementation, let deserialized be the result of trying to deserialize value in an implementation-specific way. Otherwise, let deserialized be set to value . The remote end is an endpoint node Return an error with error code invalid argument . If deserialized is not null , set a property on result with name name and value deserialized . Return success with data result . When merging capabilities with JSON Object arguments primary and secondary , an endpoint node must take the following steps: Let result be a new JSON Object . For each enumerable own property in primary , run the following substeps: Let name be the name of the property. Let value be the result of getting a property named name from primary . Set a property on result with name name and value value . If secondary is undefined , return result . For each enumerable own property in secondary , run the following substeps: Let name be the name of the property. Let value be the result of getting a property named name from secondary . Let primary value be the result of getting the property name from primary . If primary value is not undefined , return an error with error code invalid argument . Set a property on result with name name and value value . Return result . Note The algorithm outlined in matching capabilities blithely ignores real-world problems that make implementation less than perfectly straightforward, particularly since capabilities can interact in unforeseen ways. As an example, an implementation could have a capability that gives the path to the browser binary to use. This could cause both browserName and browserVersion to be impossible to match against until the browser process is started. When matching capabilities given JSON Object capabilities , and a session configuration flags flags , an endpoint node must take the following steps: Let matched capabilities be a JSON Object with the following entries: " browserName " ASCII Lowercase name of the user agent as a string . " browserVersion " The user agent version, as a string . " platformName " ASCII Lowercase name of the current platform as a string . " acceptInsecureCerts " Boolean initially set to false, indicating the session will not implicitly trust untrusted or self-signed TLS certificates on navigation . " strictFileInteractability " Boolean initially set to false, indicating that interactability checks will be applied to <input type=file>. " setWindowRect " Boolean indicating whether the remote end supports all of the resizing and positioning commands . " userAgent " String containing the default User-Agent value . If flags contains " http ", add the following entries to matched capabilities : " strictFileInteractability " Boolean initially set to false, indicating that interactabilty checks will be applied to <input type=file>. Optionally add extension capabilities as entries to matched capabilities . The values of these may be elided, and there is no requirement that all extension capabilities be added. Note This allows a remote end to add information that might be useful to a local end without unnecessarily bloating the response sent back to the user with (e.g.) an entire browser profile. For example, an implementation could choose to indicate that a screenshot will be taken when returning an error by setting the capability se:screenshot-on-error to true . For each name and value corresponding to capabilities 's own properties : Let match value equal value . Run the substeps of the first matching name : " browserName " If value is not a string equal to the " browserName " entry in matched capabilities , return success with data null . Note There is a chance the remote end will need to start a browser process to correctly determine the browserName . Lightweight checks are preferred before this is done. " browserVersion " Compare value to the " browserVersion " entry in matched capabilities using an implementation-defined comparison algorithm. The comparison is to accept a value that places constraints on the version using the " < ", " <= ", " > ", and " >= " operators. If the two values do not match, return success with data null . Note Version comparison is left as an implementation detail since each user agent will likely have conflicting methods of encoding the user agent version, and standardizing these schemes is beyond the scope of this standard. Note There is a chance the remote end will need to start a browser process to correctly determine the browserVersion . Lightweight checks are preferred before this is done. " platformName " If value is not a string equal to the " platformName " entry in matched capabilities , return success with data null . Note The following platform names are in common usage with well-understood semantics and, when matching capabilities for platform name , greatest interoperability can be achieved by honoring them as valid synonyms for well-known Operating Systems: Key System " linux " Any server or desktop system based upon the Linux kernel. " mac " Any version of Apple's macOS. " windows " Any version of Microsoft Windows, including desktop and mobile versions. This list is not exhaustive. When returning capabilities from New Session , it is valid to return a more specific platformName , allowing users to correctly identify the Operating System the WebDriver implementation is running on. " acceptInsecureCerts " If accept insecure TLS flag is set and not equal to value , return success with data null . Note If the endpoint node does not support insecure TLS certificates and this is the reason no match is ultimately made, it is useful to provide this information to the local end . " proxy " If the has proxy configuration flag is set, or if the proxy configuration defined in value is not one that passes the endpoint node 's implementation-specific validity checks, return success with data null . Note A local end would only send this capability if it expected it to be honored and the configured proxy used. The intent is that if this is not possible a new session will not be established. " unhandledPromptBehavior " If check user prompt handler matches with value is false, return success with data null . Otherwise If name is the name of an additional WebDriver capability which defines a matched capability serialization algorithm , let match value be the result of running the matched capability serialization algorithm for capability name with arguments value , and flags . Otherwise, if name is the key of an extension capability , let match value be the result of trying implementation-specific steps to match on name with value . If the match is not successful, return success with data null . If match value is not null, set a property on matched capabilities with name name and value match value . Return success with data matched capabilities . 8. Sessions A WebDriver session represents the logical connection between a local end and a specific remote end . The session object holds state specific to that connection. An intermediary node will maintain an associated session for each active session . This is the session on the upstream neighbor that is created when the intermediary node executes the New Session command . Closing a session on an intermediary node will also close the session of the associated session . A session has a session ID , which is the string representation of a UUID used to uniquely identify the session. This is set when creating the session. A session has a boolean HTTP flag which is set when the session is created. A session with this flag set is an HTTP session . A remote end has an associated list of active sessions , which is a list of all session s that are currently started. A remote end has an associated list of active HTTP sessions , which is a list of all HTTP session s that are currently started. Note The limitation of a single HTTP session for endpoint node s means that the first entry in the list of active HTTP sessions will be the only entry. A HTTP session has an associated current browsing context , which is the browsing context against which commands will run, an associated current parent browsing context , which is set to the parent of the current browsing context when changing browsing contexts, and an associated current top-level browsing context , which is set to the top-browsing context ancestor of the current browsing context , when changing browsing contexts. An HTTP session has an associated session timeouts which is a timeouts configuration . This is initially set to a new timeouts configuration . An HTTP session has an associated page loading strategy , which is one of the keywords from the table of page load strategies . This is initially set to normal . An HTTP session has an associated strict file interactability state which is a boolean. This is initially set to false. A session has an associated browsing context input state map , which is a weak map with top-level browsing contexts as keys, and input state objects as values. This is initially set to an empty map. An HTTP session has an associated request queue which is a queue of requests that are currently awaiting processing. When a session is created, a set of session configuration flags are provided that define the features of the session. This specification always creates sessions with " http " in session configuration flags , which corresponds to the HTTP flag . External specifications may define additional flags, or create sessions without the HTTP flag . 8.1 Global State In addition to per-session state, a remote end that is an endpoint node also has additional state that is global across all sessions. An endpoint node has an associated accept insecure TLS flag that indicates whether untrusted or self-signed TLS certificates are treated as trusted. The default value of the flag is false if the endpoint doesn't support accepting insecure TLS connections, or unset otherwise. An endpoint node has an associated has proxy configuration flag that indicates whether the proxy is already configured. The default value of the flag is true if the endpoint doesn't support proxy configuration, or false otherwise. To create a session , given a JSON Object capabilites , and session configuration flags flags : Let session id be the result of generating a UUID . Let session be a new session with session ID session id , and HTTP flag flags contains " http ". Let proxy be the result of getting property " proxy " from capabilities and run the substeps of the first matching statement: proxy is a proxy configuration object Take implementation-defined steps to set the user agent proxy using the extracted proxy configuration. If the defined proxy cannot be configured return error with error code session not created . Otherwise set the has proxy configuration flag to true. Otherwise Set a property of capabilities with name " proxy " and a value that is a new JSON Object . If capabilites has a property named " acceptInsecureCerts ", set the endpoint node 's accept insecure TLS flag to the result of getting a property named " acceptInsecureCerts " from capabilities . Let user prompt handler capability be the result of getting property " unhandledPromptBehavior " from capabilities . If user prompt handler capability is not undefined, update the user prompt handler with user prompt handler capability . Let serialized user prompt handler be serialize the user prompt handler . Set a property on capabilities with the name " unhandledPromptBehavior ", and the value serialized user prompt handler . If flags contains " http ": Let strategy be the result of getting property " pageLoadStrategy " from capabilities . If strategy is a string, set the session 's page loading strategy to strategy . Otherwise, set the page loading strategy to normal and set a property of capabilities with name " pageLoadStrategy " and value " normal ". Let strictFileInteractability be the result of getting property " strictFileInteractability " from capabilities . If strictFileInteractability is a boolean, set session 's strict file interactability to strictFileInteractability . Let timeouts be the result of getting a property " timeouts " from capabilities . If timeouts is not undefined, set session 's session timeouts to timeouts . Set a property on capabilities with name " timeouts " and value serialize the timeouts configuration with session 's session timeouts . Process any extension capabilities in capabilities in an implementation-defined manner. Run any WebDriver new session algorithm defined in external specifications, with arguments session , capabilities , and flags . Append session to active sessions . If flags contains " http ", append session to active HTTP sessions . Set the webdriver-active flag to true. To close the session , given session a remote end must take the following steps: If session 's HTTP flag is set, remove session from active HTTP sessions . Remove session from active sessions . Perform the following substeps based on the remote end 's type: Remote end is an endpoint node If the list of active sessions is empty: Set the webdriver-active flag to false Set the user prompt handler to null. Unset the accept insecure TLS flag. Reset the has proxy configuration flag to its default value. Optionally, close all top-level browsing contexts , without prompting to unload . Remote end is an intermediary node Close the associated session . If this causes an error to occur, complete the remainder of this algorithm before returning the error . Perform any implementation-specific cleanup steps. If an error has occurred in any of the steps above, return the error , otherwise return success with data null . Closing a session might cause the associated browser process to be killed. It is assumed that any implementation-specific cleanup steps are performed after the response has been sent back to the client so that the connection is not prematurely closed. 8.2 New Session HTTP Method URI Template POST /session The New Session command creates a new WebDriver session with the endpoint node . If the creation fails, a session not created error is returned. If the remote end is an intermediary node , it may use the result of the capabilities processing algorithm to route the new session request to the appropriate endpoint node . An intermediary node is free to define extension capabilities to assist in this process, however, these specific capabilities must not be forwarded to the endpoint node . If the intermediary node requires additional information unrelated to user agent features, it is recommended that this information be passed as top-level parameters, and not as part of the requested capabilities . An intermediary node must forward custom, top-level parameters (i.e. non- capabilities ) to subsequent remote end nodes. Example 7 An intermediary node might require authentication on creating a new session . This authentication is an argument to the New Session command itself and not the user agent's capabilities . Therefore, the authentication should be passed as a top-level parameter and not embedded in capabilities : { "user": "alice" , "password" : "hunter2" , "capabilities" : {…} } However, because an intermediary node cannot forward extension capabilities specific to that implementation to an endpoint node , the following is also permitted by this specification: { "capabilities" : { "alwaysMatch" : { "cloud:user" : "alice" , "cloud:password" : "hunter2" , "platformName" : "linux" } , "firstMatch" : [ { "browserName" : "chrome" } , { "browserName" : "edge" } ] } } Once all capabilities are merged from this example, an endpoint node would receive New Session capabilities identical to: [ { "browserName" : "chrome" , "platformName" : "linux" } , { "browserName" : "edge" , "platformName" : "linux" } ] The remote end steps , given session , URL variables and parameters are: If the implementation is an endpoint node , and the list of active HTTP sessions is not empty, or otherwise if the implementation is unable to start an additional session, return error with error code session not created . If the remote end is an intermediary node , take implementation-defined steps that either result in returning an error with error code session not created , or in returning a success with data that is isomorphic to that returned by remote ends according to the rest of this algorithm. If an error is not returned, the intermediary node must retain a reference to the session created on the upstream node as the associated session such that commands may be forwarded to this associated session on subsequent commands. Note How this is done is entirely up to the implementation, but typically the sessionId , and URL and URL prefix of the upstream remote end will need to be tracked. Let flags be a set containing " http ". Let capabilities be the result of trying to process capabilities with parameters and flags . If capabilities 's is null , return error with error code session not created . Let session be the result of create a session , with capabilities , and flags . Let body be a JSON Object initialized with: " sessionId " session 's session ID . " capabilities " capabilities Set session ' current top-level browsing context to one of the endpoint node 's top-level browsing context s, preferring the top-level browsing context that has system focus , or otherwise preferring any top-level browsing context whose visibility state is visible . Note WebDriver implementations typically start a completely new browser instance, but there is no requirement in this specification (or for WebDriver only to be used to automate only web browsers). Implementations might choose to use an existing browser instance, eg. by selecting the window that currently has focus. Set the request queue to a new queue . Return success with data body . 8.3 Delete Session HTTP Method URI Template DELETE /session/{ session id } The remote end steps , given session , URL variables and parameters are: If session is an active HTTP session , try to close the session with session . Return success with data null . 8.4 Status HTTP Method URI Template GET /status Note Status returns information about whether a remote end is in a state in which it can create new sessions , but may additionally include arbitrary meta information that is specific to the implementation. The remote end 's readiness state is represented by the ready property of the body, which is false if an attempt to create a session at the current time would fail. However, the value true does not guarantee that a New Session command will succeed. Implementations may optionally include additional meta information as part of the body, but the top-level properties ready and message are reserved and must not be overwritten. The remote end steps , given session , URL variables and parameters are: Let body be a new JSON Object with the following properties: " ready " The remote end 's readiness state . " message " An implementation-defined string explaining the remote end 's readiness state . Return success with data body . 9. Timeouts A timer is a struct . It has a timeout fired flag , which is a boolean, initially false. To start the timer given timer and timeout Assert: timeout is not null. Run the following steps in parallel : Wait for at least timeout milliseconds to pass. Set timer 's timeout fired flag to true. A timeouts configuration is a struct representing the timeouts for script evaluation , navigation , and element retrieval . It has a script timeout item which is an integer or null and is initially set to 30,000, a page load timeout item which is an integer or null and is initially set to 300,000, and an implicit wait timeout item which is an integer or null and is initially set to 0.
To deserialize as timeouts configuration given timeouts : Set timeouts to the result of converting a JSON-derived JavaScript value to an Infra value with timeouts . Let configuration be a new timeouts configuration . For each key → value in timeouts : If «" script ", " pageLoad ", " implicit "» does not contain key , then continue. If value is neither null nor a number greater than or equal to 0 and less than or equal to the maximum safe integer return error with error code invalid argument . Run the substeps matching key : " script " Set configuration 's script timeout to value . " pageLoad " Set configuration 's page load timeout to value . " implicit " Set configuration 's implicit wait timeout to value . Return success with data configuration . To serialize the timeouts configuration given timeouts : Let serialized be an empty map . Set serialized [" script "] to timeouts ' script timeout . Set serialized [" pageLoad "] to timeouts ' page load timeout . Set serialized [" implicit "] to timeouts ' implicit wait timeout . Return convert an Infra value to a JSON-compatible JavaScript value with serialized . MDN Commands/GetTimeouts Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 9.1 Get Timeouts HTTP Method URI Template GET /session/{ session id }/timeouts The remote end steps , given session , URL variables and parameters are: Let timeouts be serialize the timeouts configuration with session 's timeouts configuration Return success with data timeouts . MDN Commands/SetTimeouts Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 9.2 Set Timeouts HTTP Method URI Template POST /session/{ session id }/timeouts The remote end steps , given session , URL variables and parameters are: Let timeouts be the result of trying to deserialize as timeouts configuration with parameters . Set session 's timeouts configuration to timeouts . Return success with data null . 10. Navigation The commands in this section allow navigation of the session 's current top-level browsing context to new URLs and introspection of the document currently loaded in this browsing context . For commands that cause a new document to load, the point at which the command returns is determined by the session's page loading strategy . The normal state causes it to return after the load event fires on the new page, eager causes it to return after the DOMContentLoaded event fires , and none causes it to return immediately. Navigation actions are also affected by the value of the page load timeout , which determines the maximum time that commands will block before returning with a timeout error . The following is the table of page load strategies that links the pageLoadStrategy capability keyword to a page loading strategy state, and shows which document readiness state that corresponds to it: Keyword Page load strategy state Document readiness state " none " none " eager " eager " interactive " " normal " normal " complete " When asked to deserialize as a page load strategy with argument value : If value is not a string return an error with error code invalid argument . If there is no entry in the table of page load strategies with keyword value return an error with error code invalid argument . Return success with data value . To wait for navigation to complete , given session and optional timer (default null): If session 's page loading strategy is none , return success with data null . If session 's current browsing context is no longer open , return success with data null . Let timeout be session timeouts ' page load timeout . If timer is null: Set timer to a new timer . If timeout is not null: Start the timer with timer and timeout . Run these steps, but abort when timer 's timeout fired flag is set: If there is an ongoing attempt to navigate session 's current browsing context that has not yet matured , wait for navigation to mature . Let readiness target be the document readiness state associated with the session 's page loading strategy , which can be found in the table of page load strategies . Wait for session 's current browsing context 's document readiness state to reach readiness target . If aborted return an error with error code timeout . Return success with data null . When asked to run the post-navigation checks , run the substeps of the first matching statement: response is a network error Return error with error code unknown error . Note A "network error" in this case is not an HTTP response with a status code indicating an unsuccessful result, but could be a problem occurring lower in the OSI model, or a failed DNS lookup. response is blocked by content security policy If the remote end 's accept insecure TLS state is true, take implementation specific steps to ensure the navigation is not aborted and that the untrusted or invalid TLS certificate error that would normally occur under these circumstances, are suppressed. Otherwise return error with error code insecure certificate . response 's HTTP status is 401 Otherwise Irrespective of how a possible authentication challenge is handled, return success with data null . 10.1 Navigate To HTTP Method URI Template POST /session/{ session id }/url Note The command causes the user agent to navigate the session 's current top-level browsing context to a new location. If the remote end 's accept insecure TLS flag is true, no certificate errors that would normally cause the user agent to abort and show a security warning are to hinder navigation to the requested address. Example 8 To navigate the current top-level browsing context of the session with ID 1 to https://example.com , the local end would POST to /session/1/url with the body: { "url" : "https://example.com" } The remote end steps , given session , URL variables and parameters are: Let URL be the result of getting a property named " url " from parameters . If session 's current top-level browsing context is no longer open , return error with error code no such window . If URL is not an absolute URL or is not an absolute URL with fragment or not a local scheme , return error with error code invalid argument . Try to handle any user prompts with session . Let timeout be session 's session timeouts page load timeout . Let current URL be session 's current top-level browsing context 's active document 's URL . If current URL and URL do not have the same absolute URL and timeout is not null: Set timer to a new timer . Start the timer with timer and timeout . Run these steps, but abort when timer 's timeout fired flag is set: Navigate session 's current top-level browsing context to URL . If URL is special except for file and current URL and URL do not have the same absolute URL : Try to wait for navigation to complete with session and timer . Try to run the post-navigation checks . Set the current browsing context with session and current top-level browsing context . While session 's current top-level browsing context contains a refresh state pragma directive of time 1 second or less, run the following steps: Set current URL to session 's current top-level browsing context 's active document 's URL . Wait until the refresh timeout has elapsed and new navigate of session 's current top-level browsing context has begun. Set URL to the destination URL of session 's current top-level browsing context 's active document 's ongoing navigation. If URL is special except for file and current URL and URL do not have the same absolute URL : Try to wait for navigation to complete with session and timer . Try to run the post-navigation checks . If aborted return an error with error code timeout . Return success with data null . 10.2 Get Current URL HTTP Method URI Template GET /session/{ session id }/url The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let URL be the serialization of session 's current top-level browsing context 's active document 's URL . Return success with data URL . 10.3 Back HTTP Method URI Template POST /session/{ session id }/back Note This command causes the browser to traverse one step backward in the joint session history of session 's current top-level browsing context . This is equivalent to pressing the back button in the browser chrome or invoking window.history.back . The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let timeout be session ' session timeouts page load timeout . Let timer be a new timer . If timeout is not null: Start the timer with timer and timeout . Traverse the history by a delta –1 for session 's current browsing context . If the previous step completed results in a pageHide event firing , wait until pageShow event fires or timer ' timeout fired flag to be set, whichever occurs first. If timer ' timeout fired flag is set: Handle any user prompts . Return error with error code timeout . Return success with data null . 10.4 Forward HTTP Method URI Template POST /session/{ session id }/forward Note This command causes the browser to traverse one step forwards in the joint session history of session 's current top-level browsing context . This is equivalent to pressing the forward button in the browser chrome or invoking window.history.forward . The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let timeout be session ' session timeouts page load timeout . Let timer be a new timer . If timeout is not null: Start the timer with timer and timeout . Traverse the history by a delta 1 for session 's current browsing context . If the previous step completed results in a pageHide event firing, wait until pageShow event fires or timer ' timeout fired flag to be set, whichever occurs first. If timer ' timeout fired flag is set: Handle any user prompts . Return error with error code timeout . Return success with data null . 10.5 Refresh HTTP Method URI Template POST /session/{ session id }/refresh Note This command causes the browser to reload the page in session 's current top-level browsing context . The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Initiate an overridden reload of session 's current top-level browsing context 's active document . If URL is special except for file : Try to wait for navigation to complete with session . Try to run the post-navigation checks . Set the current browsing context with session and session 's current top-level browsing context . Return success with data null . 10.6 Get Title HTTP Method URI Template GET /session/{ session id }/title Note This command returns the document title of session 's current top-level browsing context , equivalent to calling document.title . The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let title be the session 's current top-level browsing context 's active document 's title . Return success with data title . 11. Contexts Many WebDriver commands happen in the context of either session 's current browsing context or current top-level browsing context . session 's current top-level browsing context is represented in the protocol by its associated window handle . When a top-level browsing context is selected using the Switch To Window command, a specific browsing context can be selected using the Switch to Frame command. Note The use of the term “window” to refer to a top-level browsing context is legacy and doesn't correspond with either the operating system notion of a “window” or the DOM Window object. A browsing context is said to be no longer open if its navigable has been destroyed. Each browsing context has an associated window handle which uniquely identifies it. This must be a String and must not be " current ". A web frame is an abstraction used to identify a frame or iframe when it is transported via the protocol , between remote and local ends. The web frame identifier is the string constant " frame-075b-4da1-b6ba-e579c2d3230a ". An ECMAScript Object represents a web frame if it has a web frame identifier own property . A web window is an abstraction used to identify a window when it is transported via the protocol , between remote and local ends. The web window identifier is the string constant " window-fcc6-11e5-b4f8-330a88ab9d7f ". An ECMAScript Object represents a web window if it has a web window identifier own property . The WindowProxy reference object with WindowProxy object window is given by: Let identifier be the web window identifier if the associated browsing context of window is a top-level browsing context . Otherwise let it be the web frame identifier . Return a JSON Object initialized with the following properties: identifier Associated window handle of the window 's browsing context . To deserialize a web frame by a JSON Object object that represents a web frame : If object has no own property web frame identifier , return error with error code invalid argument . Let reference be the result of getting the web frame identifier property from object . If reference is not a String , return an error with error code invalid argument . Let browsing context be the browsing context whose window handle is reference , or null if no such browsing context exists. If browsing context is null or a top-level browsing context , return error with error code no such frame . Return success with data browsing context 's associated window. To deserialize a web window by a JSON Object object that represents a web window : If object has no own property web window identifier , return error with error code invalid argument . Let reference be the result of getting the web window identifier property from object . If reference is not a String , return an error with error code invalid argument . Let browsing context be the browsing context whose window handle is reference , or null if no such browsing context exists. If browsing context is null or not a top-level browsing context , return error with error code no such window . Return success with data browsing context 's associated window. When required to set the current browsing context given session and context , an implementation must follow the following steps: Set session 's current browsing context to context . Set the session 's current parent browsing context to the parent browsing context of context , if that context exists, or null otherwise. When required to set the current top-level browsing context given session and context , an implementation must: Assert: context is a top-level browsing context . Set session 's current top-level browsing context to context . Set the current browsing context with session and context . Note In accordance with the focus section of the [ HTML ] specification, commands are unaffected by whether the operating system window has focus or not. 11.1 Get Window Handle HTTP Method URI Template GET /session/{ session id }/window The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Return success with data being the window handle associated with session 's current top-level browsing context . MDN Commands/CloseWindow Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 11.2 Close Window HTTP Method URI Template DELETE /session/{ session id }/window The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Close session 's current top-level browsing context . If there are no more open top-level browsing contexts , then try to close the session . Return the result of running the remote end steps for the Get Window Handles command , with session , URL variables and parameters . 11.3 Switch To Window HTTP Method URI Template POST /session/{ session id }/window Note Switching window will select session 's current top-level browsing context used as the target for all subsequent commands . In a tabbed browser, this will typically make the tab containing the browsing context the selected tab. The remote end steps , given session , URL variables and parameters are: Let handle be the result of getting the property " handle " from parameters . If handle is undefined , return error with error code invalid argument . If there is an active user prompt , that prevents the focusing of another top-level browsing context , return error with error code unexpected alert open . If handle is equal to the associated window handle for some top-level browsing context , let context be the that browsing context, and set the current top-level browsing context with session and context . Otherwise, return error with error code no such window . Update any implementation-specific state that would result from the user selecting session 's current browsing context for interaction, without altering OS-level focus. Return success with data null . MDN Commands/GetWindowHandles Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 11.4 Get Window Handles HTTP Method URI Template GET /session/{ session id }/window/handles The order in which the window handles are returned is arbitrary. The remote end steps , given session , URL variables and parameters are: Let handles be a List . For each top-level browsing context in the remote end , push the associated window handle onto handles . Return success with data handles . Example 9 In order to determine whether or not a particular interaction with the browser opens a new window, one can obtain the set of window handles before the interaction is performed and compare it with the set after the action is performed. MDN 🚫 Commands/New_Window This feature has limited support. Chrome No Chrome Android ? Edge ? Edge Mobile ? Firefox 66+ Firefox Android ? Opera ? Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 11.5 New Window HTTP Method URI Template POST /session/{ session id }/window/new Create a new top-level browsing context . The remote end steps , given session , URL variables and parameters are: If the implementation does not support creating new top-level browsing contexts, return error with error code unsupported operation . If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let type hint be the result of getting the property " type " from parameters . 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 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 ", and the implementation supports multiple browsing context in the same OS window, the new browsing context should share an OS window with session 's current browsing context . If type hint is " window ", and the implementation supports multiple browsing contexts in separate OS windows, the created browsing context should be in a new OS window. In all other cases the details of how the browsing context is presented to the user are implementation defined. Let handle be the associated window handle of the newly created window. Let type be " tab " if the newly created window shares an OS-level window with session 's current browsing context , or " window " otherwise. Let result be a new JSON Object initialized with: " handle " The value of handle . " type " The value of type . Return success with data result . 11.6 Switch To Frame HTTP Method URI Template POST /session/{ session id }/frame Note The Switch To Frame command is used to select session 's current top-level browsing context or a child browsing context of session 's current browsing context to use as session 's current browsing context for subsequent commands .
The remote end steps , given session , URL variables and parameters are: Let id be the result of getting the property " id " from parameters . If id is not null , a Number object, or an Object that represents a web element , return error with error code invalid argument . Run the substeps of the first matching condition: id is null If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Set the current browsing context with session and session 's current top-level browsing context . id is a Number object If id is less than 0 or greater than 2 16 – 1, return error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let window be the associated window of session 's current browsing context 's active document . If id is not a supported property index of window , return error with error code no such frame . Let child window be the WindowProxy object obtained by calling window . [[GetOwnProperty]] ( id ). Set the current browsing context with session and child window 's browsing context . id represents a web element If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and id . If element is not a frame or iframe element, return error with error code no such frame . Set the current browsing context with session and element 's content navigable 's active browsing context . Update any implementation-specific state that would result from the user selecting session 's current browsing context for interaction, without altering OS-level focus. Return success with data null . Note WebDriver is not bound by the same origin policy, so it is always possible to switch into child browsing contexts, even if they are different origin to the current browsing context. 11.7 Switch To Parent Frame HTTP Method URI Template POST /session/{ session id }/frame/parent Note The Switch to Parent Frame command sets session 's current browsing context for future commands to the parent of session 's current browsing context . The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is already the top-level browsing context : If session 's current browsing context is no longer open , return error with error code no such window . Return success with data null . If session 's current parent browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . If session 's current parent browsing context is not null , set the current browsing context with session and current parent browsing context . Update any implementation-specific state that would result from the user selecting session 's current browsing context for interaction, without altering OS-level focus. Return success with data null . 11.8 Resizing and positioning windows WebDriver provides commands for interacting with the operating system window containing session 's current top-level browsing context . Because different operating systems' window managers provide different abilities, not all of the commands in this section can be supported by all remote ends . Support for these commands is determined by the window dimensioning/positioning capability . Where a command is not supported, an unsupported operation error is returned. The top-level browsing context 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: State Keyword Default Description Maximized window state " maximized " The window is maximized. Minimized window state " minimized " The window is iconified. Normal window state " normal " ✓ The window is shown normally. Fullscreen window state " fullscreen " The window is in full screen mode. If for whatever reason 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 WindowRect object for a WindowProxy , window is an Object initialized with the following properties: " x " window 's screenX attribute. " y " window 's screenY attribute. " width " windows 's outerWidth attribute. " height " window 's outerHeight attribute. To maximize the window , given an operating system level window with an associated top-level browsing context , run the implementation-specific steps to transition the operating system level window into the maximized window state . If the window manager supports window resizing but does not have a concept of window maximization, the window dimensions must be increased to the maximum available size permitted by the window manager for the current screen. Return when the window has completed the transition, or within an implementation-defined timeout. To iconify the window , given an operating system level window with an associated top-level browsing context , run implementation-specific steps to transition the operating system level window into the minimized window state . Do not return from this operation until the visibility state of the top-level browsing context 's active document has reached the hidden state, or until the operation times out. To restore the window , given an operating system level window with an associated top-level browsing context , run implementation-specific steps to restore or unhide the window to the visible screen. Do not return from this operation until the visibility state of the top-level browsing context 's active document has reached the visible state, or until the operation times out. MDN Commands/GetWindowRect Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 11.8.1 Get Window Rect HTTP Method URI Template GET /session/{session id}/window/rect Note The Get Window Rect command returns the size and position on the screen of the operating system window corresponding to session 's current top-level browsing context . The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Return success with data set to the WindowRect object for the session 's current top-level browsing context . MDN Commands/SetWindowRect Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 11.8.2 Set Window Rect HTTP Method URI Template POST /session/{ session id }/window/rect Note The Set Window Rect command alters the size and the position of the operating system window corresponding to session 's current top-level browsing context . The remote end steps , given session , URL variables and parameters are: Let width be the result of getting a property named " width " from parameters . If width is undefined , let width be null. Let height be the result of getting a property named " height " from parameters . If height is undefined , let height be null. Let x be the result of getting a property named " x " from parameters . If x is undefined , let x be null. Let y be the result of getting a property named " y " from parameters . If y is undefined , let y be null. If width or height is neither null, nor a Number from 0 to 2 31 − 1, return error with error code invalid argument . If x or y is neither null, nor a Number from −(2 31 ) to 2 31 − 1, return error with error code invalid argument . If the remote end does not support the Set Window Rect command for session 's current top-level browsing context for any reason, return error with error code unsupported operation . Note In case the Set Window Rect command is partially supported (i.e. some combinations of arguments are supported but not others), the implmentation is expected to continue with the remaining steps. If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Fully exit fullscreen . Restore the window . Let window be the operating system window containing session 's current top-level browsing context If the implementation is able to set the dimensions of window : If width is not null, set the width, in CSS pixels , of window , including any browser chrome and externally drawn window decorations, to a value that is as close as possible to width . If height is not null, set the height, in CSS pixels , of window , including any browser chrome and externally drawn window decorations, to a value that is as close as possible to height . Note The specification does not guarantee that the resulting window size will exactly match that which was requested. In particular the implementation is expected to clamp values that are larger than the physical screen dimensions, or smaller than the minimum window size. Particular implementations may have other limitations such as not being able to resize in single-pixel increments. This is intended to mutate the value of session 's current top-level browsing context 's WindowProxy 's outerWidth and outerHeight properties. Specifically, the value of outerWidth should be as close as possible to width and the value of outerHeight should be as close as possible to height . If the implementation is able to set the position of window : If x is not null, set the x-coordinate of the left edge of window to a value that is as close as possible to x . If y is not null, set the y-coordinate of the top edge of window to a value that is as close as possible to y . Note The specification does not guarantee that the resulting window position will match that which was requested. This step is similar to calling the moveTo(x, y) method on the WindowProxy object associated with session 's current top-level browsing context , but without the security restrictions that you cannot move a window or tab that was not created by window.open . cannot move a window or tab when it is in a window with more than one tab. Return success with data set to the WindowRect object for the session 's current top-level browsing context . 11.8.3 Maximize Window HTTP Method URI Template POST /session/{ session id }/window/maximize Note The Maximize Window command invokes the window manager-specific “maximize” operation, if any, on the window containing session 's current top-level browsing context . This typically increases the window to the maximum available size without going full-screen. The remote end steps , given session , URL variables and parameters are: If the remote end does not support the Maximize Window command for session 's current top-level browsing context for any reason, return error with error code unsupported operation . If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Fully exit fullscreen . Restore the window . Maximize the window of session 's current top-level browsing context . Return success with data set to the WindowRect object for the session 's current top-level browsing context . 11.8.4 Minimize Window HTTP Method URI Template POST /session/{ session id }/window/minimize Note The Minimize Window command invokes the window manager-specific “minimize” operation, if any, on the window containing session 's current top-level browsing context . This typically hides the window in the system tray. The remote end steps , given session , URL variables and parameters are: If the remote end does not support the Minimize Window command for session 's current top-level browsing context for any reason, return error with error code unsupported operation . If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Fully exit fullscreen . Iconify the window . Return success with data set to the WindowRect object for the session 's current top-level browsing context . 11.8.5 Fullscreen Window HTTP Method URI Template POST /session/{ session id }/window/fullscreen The remote end steps , given session , URL variables and parameters are: If the remote end does not support fullscreen return error with error code unsupported operation . If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Restore the window . Call fullscreen an element with session 's current top-level browsing context 's active document 's document element . Note The window is now in the Fullscreen window state . Return success with data set to the WindowRect object for the session 's current top-level browsing context . 12. Elements A web element is an abstraction used to identify an element when it is transported via the protocol , between remote and local ends. The web element identifier is the string constant " element-6066-11e4-a52e-4f735466cecf ". An ECMAScript Object represents a web element if it has a web element identifier own property . The WebDriver node id is a globally unique string representing a handle to a DOM node in a specific WebDriver session . A weak map is a map in which keys are held weakly i.e. items are removed if the key object is garbaged collected, and presence in the map does not prevent garbage collection. This acts as an alternative to defining properties directly on the key objects. Note Unlike the ECMAScript WeakMap , a weak map can participate in the full set of operations available for a Map. A WebDriver session has a browsing context group node map , which is a weak map between a browsing context group and a node id map . A node id map is weak map between nodes and their corresponding WebDriver node id . A WebDriver session has a navigable seen nodes map which is a weak map between a navigable and a set. To get a node given session , browsing context , and reference : Let browsing context group node map be session 's browsing context group node map . Let browsing context group be browsing context 's browsing context group . If browsing context group node map does not contain browsing context group , return null. Let node id map be browsing context group node map [ browsing context group ]. Let node be the entry in node id map whose value is reference , if such an entry exists, or null otherwise. Return node . To get or create a node reference given session , browsing context , and node : Let browsing context group node map be session 's browsing context group node map . Let browsing context group be browsing context 's browsing context group . If browsing context group node map does not contain browsing context group , set browsing context group node map [ browsing context group ] to a new weak map . Let node id map be browsing context group node map [ browsing context group ]. If node id map does not contain node : Let node id be a new globally unique string. Set node id map [ node ] to node id . Let navigable be browsing context 's active document 's node navigable . Let navigable seen nodes map be session 's navigable seen nodes map . If navigable seen nodes map does not contain navigable , set navigable seen nodes map [ navigable ] to an empty set. Append node id to navigable seen nodes map [ navigable ]. Return node id map [ node ]. A node reference is known given session , browsing context , and reference if the following steps return true: Let navigable be browsing context 's active document 's node navigable . Let navigable seen nodes map be session 's navigable seen nodes map . If navigable seen nodes map contains navigable and navigable seen nodes map [ navigable ] contains reference , return true, otherwise return false. To get a known element given session and reference : If not node reference is known with session , session 's current browsing context , and reference return error with error code no such element . Let node be the result of get a node with session , session 's current browsing context , and reference . If node is not null and node does not implement Element return error with error code no such element . If node is null or node is stale return error with error code stale element reference . Return success with data node . To get or create a web element reference given session and element : Assert: element implements Element . Return the result of trying to get or create a node reference given session , session 's current browsing context , and element . The web element reference object for session and element is: Let identifier be the web element identifier . Let reference be the result of get or create a web element reference with session and element . Return a JSON Object initialized with a property with name identifier and value reference . To deserialize a web element by a JSON Object object that represents a web element : If object has no own property web element identifier , return error with error code invalid argument . Let reference be the result of getting the web element identifier property from object . If reference is not a String , return an error with error code invalid argument . Let element be the result of trying to get a known element with session and reference . Return success with data element . An element is stale if its node document is not the active document or if it is not connected . To scroll into view an element perform the following steps only if the element is not already in view : Let options be the following ScrollIntoViewOptions : " behavior " " instant " Logical scroll position " block " " end " Logical scroll position " inline " " nearest " Run Function.[[Call]] ( scrollIntoView , options ) with element as the this value. Editable elements are those that can be used for typing and clearing , and they fall into two subcategories: 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: Text and Search URL Telephone Email Password Date Month Week Time Local Date and Time Number Range Color File Upload And the textarea element. Mutable elements Denotes elements that are editing hosts or content editable . An element is said to have pointer events disabled if the resolved value of its " pointer-events " style property is " none ". An element is to be considered read only if it is an input element whose readonly attribute is set. 12.1 Interactability In order to determine if an element can be interacted with using pointer actions, WebDriver performs hit-testing to find if the interaction will be able to reach the requested element. An interactable element is an element which is either pointer-interactable or keyboard-interactable . 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 is any element that has a focusable area , is a body element, or is the document element . An element 's in-view center point is the origin position of the rectangle that is the intersection between the element's first DOMRect of getClientRects () and the initial viewport . It can be calculated this way: Let rectangle be the first object of the DOMRect collection returned by calling getClientRects () on element . Let left be max (0, min ( x coordinate , x coordinate + width dimension )). Let right be min ( innerWidth , max ( x coordinate , x coordinate + width dimension )). Let top be max (0, min ( y coordinate , y coordinate + height dimension )). Let bottom be min ( innerHeight , max ( y coordinate , y coordinate + height dimension )). Let x be floor (( left + right ) ÷ 2.0). Let y be floor (( top + bottom ) ÷ 2.0). Return the pair of ( x , y ). An element element is disabled if the following steps return true: If element is an option element or element is an optgroup element: For each inclusive ancestor ancestor of element : If ancestor is an optgroup element or ancestor is a select element, and ancestor is actually disabled , return true. Return false. Return element is actually disabled . An element is in view 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 if the pointer-interactable paint tree at its center point is empty, or the first element in this tree is not an inclusive descendant of itself. Example 10 This ascertains if the element 's in-view center point would be possible to interact with. For example, the paint tree at this button's center point , the red square, is not itself the button or a descendant of the button. In other words, it is not an inclusive descendant . This makes the button obscured : foobar On the other hand, the center point of the following select list is the third option element, because unlike a drop-down list, <select multiple> 's options are individually visible and painted. Because the option is a descendant of the select element, it is not obscured : first second third fourth An element element 's pointer-interactable paint tree is produced this way: If element is not in the same tree as session 's current browsing context 's active document , return an empty sequence. Let rectangles be the DOMRect sequence returned by calling getClientRects () on element . If rectangles has the length of 0, return an empty sequence. Let center point be the in-view center point of element . Return the elements from point given the coordinates center point . 12.2 Shadow Roots A shadow root is an abstraction used to identify a shadow root when it is transported via the protocol , between remote and local ends. The shadow root identifier is the string constant " shadow-6066-11e4-a52e-4f735466cecf ". An ECMAScript Object represents a shadow root if it has a shadow root identifier own property . To get a known shadow root given session and reference : If not node reference is known with session , session 's current browsing context , and reference return error with error code no such shadow root . Let node be the result of get a node with session , session 's current browsing context , and reference . If node is not null and node does not implement ShadowRoot return error with error code no such shadow root . If node is null or node is detached return error with error code detached shadow root . Return success with data node . To get or create a shadow root reference given session and shadow root : Assert: element implements ShadowRoot . Return the result of trying to get or create a node reference with session , session 's current browsing context , and element . The shadow root reference object for session and shadow root is given by: Let identifier be the shadow root identifier . Let reference be the result of get or create a shadow root reference with session and shadow root . Return a JSON Object initialized with a property with name identifier and value reference . When required to deserialize a shadow root by a JSON Object object that represents a shadow root : If object has no own property shadow root identifier , return error with error code invalid argument . Let reference be the result of getting the shadow root identifier property from object . If reference is not a String , return an error with error code invalid argument . Let shadow be the result of trying to get a known shadow root with session and reference . Return success with data shadow . A shadow root is detached if its node document is not the active document or if the element node referred to as its host is stale . 12.3 Retrieval The Find Element , Find Elements , Find Element From Element , Find Elements From Element , Find Element From Shadow Root , and Find Elements From Shadow Root commands allow lookup of individual elements and collections of elements. Element retrieval searches are performed using pre-order traversal of the document's nodes that match the provided selector's expression. When required to find given session , start node , using and value , a remote end must run the following steps: Let location strategy be equal to using . Let selector be equal to value . Let timeout be session 's session timeouts ' implicit wait timeout . Let timer be a new timer . If timeout is not null: Start the timer with timer and timeout . Let elements returned be an empty List . While elements returned is empty and timer 's timeout fired flag is not set: Set elements returned to the result of trying to call the relevant element location strategy with arguments start node , and selector . If a DOMException , SyntaxError , XPathException , or other error occurs during the execution of the element location strategy , return error invalid selector . Let result be an empty List . For each element in elements returned , append the web element reference object for session and element , to result . Return success with data result . 12.3.1 Locator strategies An element location strategy is an enumerated attribute deciding what technique should be used to search for elements in session 's current browsing context . The following table of location strategies lists the keywords and states defined for this attribute: State Keyword CSS selector " css selector " Link text selector " link text " Partial link text selector " partial link text " Tag name " tag name " XPath selector " xpath " 12.3.1.1 CSS selectors To find a web element with the CSS Selector strategy the following steps need to be completed: Let elements be the result of calling querySelectorAll () with start node as this and selector as the argument. If this causes an exception to be thrown, return error with error code invalid selector . Return success with data elements . 12.3.1.2 Link text To find a web element with the Link Text strategy the following steps need to be completed: Let elements be the result of calling querySelectorAll () with start node as this and " a " as the argument. If this throws an exception, return error with error code unknown error . Let result be an empty NodeList . For each element in elements : Let rendered text be the value that would be returned via a call to Get Element Text for element . Let trimmed text be the result of removing all whitespace from the start and end of the string rendered text . If trimmed text equals selector , append element to result . Return success with data result . 12.3.1.3 Partial link text The Partial link text strategy is very similar to the Link Text strategy , but rather than matching the entire string, only a substring needs to match. That is, return all a elements with rendered text that contains the selector expression. To find a web element with the Partial Link Text strategy the following steps need to be completed: Let elements be the result of calling querySelectorAll () with start node as this and " a " as the argument. If this throws an exception, return error with error code unknown error . Let result be an empty NodeList . For each element in elements : Let rendered text be the value that would be returned via a call to Get Element Text for element . If rendered text contains selector , append element to result . Return success with data result . 12.3.1.4 Tag name To find a web element with the Tag Name strategy return success with data set to the result of calling getElementsByTagName () with start node as this and selector as the argument. 12.3.1.5 XPath To find a web element with the XPath Selector strategy the following steps need to be completed: Let evaluateResult be the result of calling evaluate , with arguments selector , start node , null , ORDERED_NODE_SNAPSHOT_TYPE , and null . Note A snapshot is used to promote operation atomicity. Let index be 0. Let length be the result of getting the property " snapshotLength " from evaluateResult . If this throws an XPathException return error with error code invalid selector , otherwise if this throws any other exception return error with error code unknown error . Let result be an empty NodeList . Repeat, while index is less than length : Let node be the result of calling snapshotItem with evaluateResult as this and index as the argument. If node is not an element return an error with error code invalid selector . Append node to result . Increment index by 1. Return success with data result . 12.3.2 Find Element HTTP Method URI Template POST /session/{ session id }/element Note The Find Element command is used to find an element in session 's current browsing context that can be used as the web element context for future element-centric commands . For example, consider this pseudo code which retrieves an element with the #toremove ID and uses this as the argument for a script it injects to remove it from the HTML document: let body = session. find . css ( "#toremove" ); session. execute ( "arguments[0].remove()" , [body]); The remote end steps , given session , URL variables and parameters are: Let location strategy be the result of getting a property named " using " from parameters . If location strategy is not present as a keyword in the table of location strategies , return error with error code invalid argument . Let selector be the result of getting a property named " value " from parameters . If selector is undefined , return error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let start node be session 's current browsing context 's document element . If start node is null , return error with error code no such element . Let result be the result of trying to Find with session , start node , location strategy , and selector . If result is empty, return error with error code no such element . Otherwise, return the first element of result . 12.3.3 Find Elements HTTP Method URI Template POST /session/{ session id }/elements The remote end steps , given session , URL variables and parameters are: Let location strategy be the result of getting a property named " using " from parameters . If location strategy is not present as a keyword in the table of location strategies , return error with error code invalid argument . Let selector be the result of getting a property named " value " from parameters . If selector is undefined , return error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let start node be session 's current browsing context 's document element . If start node is null , return error with error code no such element . Return the result of trying to Find with session , start node , location strategy , and selector . 12.3.4 Find Element From Element HTTP Method URI Template POST /session/{ session id }/element/{ element id }/element The remote end steps , given session , URL variables and parameters are: Let location strategy be the result of getting a property named " using " from parameters . If location strategy is not present as a keyword in the table of location strategies , return error with error code invalid argument . Let selector be the result of getting a property named " value " from parameters . If selector is undefined , return error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let start node be the result of trying to get a known element with session and URL variables [" element id "]. Let result be the value of trying to Find with session , start node , location strategy , and selector . If result is empty, return error with error code no such element . Otherwise, return the first element of result . 12.3.5 Find Elements From Element HTTP Method URI Template POST /session/{ session id }/element/{ element id }/elements The remote end steps , given session , URL variables and parameters are: Let location strategy be the result of getting a property named " using " from parameters . If location strategy is not present as a keyword in the table of location strategies , return error with error code invalid argument . Let selector be the result of getting a property named " value " from parameters . If selector is undefined , return error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let start node be the result of trying to get a known element with session and URL variables [" element id "]. Return the result of trying to Find with session , start node , location strategy , and selector . 12.3.6 Find Element From Shadow Root HTTP Method URI Template POST /session/{ session id }/shadow/{ shadow id }/element The remote end steps , given session , URL variables and parameters are: Let location strategy be the result of getting a property called " using ". If location strategy is not present as a keyword in the table of location strategies , return error with error code invalid argument . Let selector be the result of getting a property called " value ". If selector is undefined , return error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Handle any user prompts and return its value if it is an error . Let start node be the result of trying to get a known shadow root with session and URL variables [" shadow id "]. Let result be the value of trying to Find with session , start node , location strategy , and selector . If result is empty, return error with error code no such element . Otherwise, return the first element of result . 12.3.7 Find Elements From Shadow Root HTTP Method URI Template POST /session/{ session id }/shadow/{ shadow id }/elements The remote end steps , given session , URL variables and parameters are: Let location strategy be the result of getting a property called " using ". If location strategy is not present as a keyword in the table of location strategies , return error with error code invalid argument . Let selector be the result of getting a property called " value ". If selector is undefined , return error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Handle any user prompts and return its value if it is an error . Let start node be the result of trying to get a known shadow root with session and URL variables [" shadow id "]. Return the result of trying to Find with session , start node , location strategy , and selector . 12.3.8 Get Active Element HTTP Method URI Template GET /session/{ session id }/element/active The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let active element be the active element of session 's current browsing context 's document element . If active element is a non-null element , return success with data set to web element reference object for session and active element . Otherwise, return error with error code no such element . 12.3.9 Get Element Shadow Root HTTP Method URI Template GET /session/{ session id }/element/{ element id }/shadow The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Handle any user prompts and return its value if it is an error . Let element be the result of trying to get a known element with session and URL variables [ element id ]. Let shadow root be element 's shadow root . If shadow root is null, return error with error code no such shadow root . Let serialized be the shadow root reference object for session and shadow root . Return success with data serialized . 12.4 State To calculate the absolute position given session and element : Let rect be the value returned by calling getBoundingClientRect () . Let window be the associated window of session 's current top-level browsing context . Let x be ( scrollX of window + rect 's x coordinate ). Let y be ( scrollY of window + rect 's y coordinate ). Return a pair of ( x , y ). To determine if a Node node is not in the same tree as a Node other , run the following substeps: If node 's node document is not other 's node document , return true. Return true if the result of calling node 's compareDocumentPosition () with other as argument is DOCUMENT_POSITION_DISCONNECTED (1), otherwise return false. An element 's container is: option element in a valid element context optgroup element in a valid element context The element 's element context , which is determined by: Let datalist parent be the first datalist element reached by traversing the tree in reverse order from element , or undefined if the root of the tree is reached. Let select parent be the first select element reached by traversing the tree in reverse order from element , or undefined if the root of the tree is reached. If datalist parent is undefined , the element context is select parent . Otherwise, the element context is datalist parent . option element in an invalid element context The element does not have a container. Otherwise The container is the element itself. 12.4.1 Is Element Selected HTTP Method URI Template GET /session/{ session id }/element/{ element id }/selected Note The Is Element Selected command determines if the referenced element is selected or not. This operation only makes sense on input elements of the Checkbox - and Radio Button states, or on option elements. The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables [ element id ]. Let selected be the value corresponding to the first matching statement: element is an input element with a type attribute in the Checkbox - or Radio Button state The result of element 's checkedness . element is an option element The result of element 's selectedness . Otherwise False. Return success with data selected . MDN Commands/GetElementAttribute Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 12.4.2 Get Element Attribute HTTP Method URI Template GET /session/{ session id }/element/{ element id }/attribute/{ name } The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables ' element id. Let name be URL variables [" name "]. Let result be the result of the first matching condition: If name is a boolean attribute " true " (string) if the element hasAttribute () with name , otherwise null . Otherwise The result of getting an attribute by name name . Return success with data result . Note Please note that the behavior of this command deviates from the behavior of getAttribute () in [ DOM ], which in the case of a set boolean attribute would return an empty string. The reason this command returns true as a string is because this evaluates to true in most dynamically typed programming languages, but still preserves the expected type information. MDN Commands/GetElementProperty Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 12.4.3 Get Element Property HTTP Method URI Template GET /session/{ session id }/element/{ element id }/property/{ name } The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables ' element id. Let name URL variables [" name "]. Let property be the result of calling the Object.[[GetProperty]] ( name ) on element . Let result be the value of property if not undefined , or null . Return success with data result . 12.4.4 Get Element CSS Value HTTP Method URI Template GET /session/{ session id }/element/{ element id }/css/{ property name } The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with URL variables [" element id "]. Let computed value be the result of the first matching condition: session 's current browsing context 's active document 's type is not " xml " computed value of parameter URL variables [" property name "] from element 's style declarations. Otherwise "" (empty string) Return success with data computed value . 12.4.5 Get Element Text HTTP Method URI Template GET /session/{ session id }/element/{ element id }/text Note The Get Element Text command intends to return an element 's text “as rendered”. An element 's rendered text is also used for locating a elements by their link text and partial link text . One of the major inputs to this specification was the open source Selenium project . This was in wide-spread use before this specification written, and so had set user expectations of how the Get Element Text command should work. As such, the approach presented here is known to be flawed, but provides the best compatibility with existing users. When processing text, whitespace is defined as characters from the Unicode Character Database with the Unicode character property " WSpace=Y " or " WS ". [ UAX44 ] The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables [ element id ]. Let rendered text be the result of performing implementation-specific steps whose result is exactly the same as the result of a Function.[[Call]] ( null , element ) with bot.dom.getVisibleText as the this value. Return success with data rendered text . MDN Commands/GetElementTagName Chrome 65+ Chrome Android No Edge ? Edge Mobile ? Firefox 55+ Firefox Android No Opera No Opera Android ? Safari No Safari iOS ? Samsung Internet No WebView Android ? 12.4.6 Get Element Tag Name HTTP Method URI Template GET /session/{ session id }/element/{ element id }/name The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with URL variables [" element id "]. Let qualified name be the result of getting element 's tagName IDL attribute. Return success with data qualified name . 12.4.7 Get Element Rect HTTP Method URI Template GET /session/{ session id }/element/{ element id }/rect Note The Get Element Rect command returns the dimensions and coordinates of the given web element . The returned value is an object with the following properties: " x " X axis position of the top-left corner of the web element relative to session 's current browsing context 's document element in CSS pixels . " y " Y axis position of the top-left corner of the web element relative to session 's current browsing context 's document element in CSS pixels . " height " Height of the web element 's bounding rectangle in CSS pixels . " width " Width of the web element 's bounding rectangle in CSS pixels . The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables [" element id "]. Let coordinates be calculate the absolute position with session and element . Let rect be element 's bounding rectangle . Let body be a new JSON Object initialized with: " x " The first value of coordinates . " y " The second value of coordinates . " width " Value of rect 's width dimension . " height " Value of rect 's height dimension . Return success with data body . 12.4.8 Is Element Enabled HTTP Method URI Template GET /session/{ session id }/element/{ element id }/enabled The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables [ element id ]. Let enabled be a boolean initially set to true if session 's current browsing context 's active document 's type is not " xml ". Otherwise, let enabled to false and jump to the last step of this algorithm. Set enabled to false if a form control is disabled . Return success with data enabled . 12.4.9 Get Computed Role HTTP Method URI Template GET /session/{ session id }/element/{ element id }/computedrole The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with URL variables [" element id "]. Let role be the result of computing the WAI-ARIA role of element . Return success with data role . 12.4.10 Get Computed Label HTTP Method URI Template GET /session/{ session id }/element/{ element id }/computedlabel The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables [" element id "]. Let label be the result of a Accessible Name and Description Computation for the Accessible Name of the element . Return success with data label . 12.5 Interaction The element interaction commands provide a high-level instruction set for manipulating form controls. Unlike Actions , they will implicitly scroll elements into view and check that it is an interactable element . Some resettable elements define their own clear algorithm . Unlike their associated reset algorithms , changes made to form controls as part of these algorithms do count as changes caused by the user (and thus, e.g. do cause input events to fire). When the clear algorithm is invoked for an element that does not define its own clear algorithm , its reset algorithm must be invoked instead. The clear algorithm for input elements is to set the dirty value flag and dirty checkedness flag back to false, set the value of the element to an empty string, set the checkedness of the element to true if the element has a checked content attribute and false if it does not, empty the list of selected files , and then invoke the value sanitization algorithm iff the type attribute's current state defines one. The clear algorithm for textarea elements is to set the dirty value flag back to false, and set the raw value of element to an empty string. The clear algorithm for output elements is set the element's value mode flag to default and then to set the element's textContent IDL attribute to an empty string (thus clearing the element's child nodes). 12.5.1 Element Click HTTP Method URI Template POST /session/{ session id }/element/{ element id }/click Note The Element Click command scrolls into view the element if it is not already pointer-interactable , and clicks its in-view center point . If the element's center point is obscured by another element, an element click intercepted error is returned. If the element is outside the viewport , an element not interactable error is returned. The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and element id . If the element is an input element in the file upload state return error with error code invalid argument . Scroll into view the element 's container . If element 's container is still not in view , return error with error code element not interactable . If element 's container is obscured by another element , return error with error code element click intercepted . Matching on element : option element Let parent node be the element 's container . Fire a mouseOver event at parent node . Fire a mouseMove event at parent node . Fire a mouseDown event at parent node . Run the focusing steps on parent node . If element is not disabled : Fire an input event at parent node . Let previous selectedness be equal to element selectedness . If element 's container has the multiple attribute , toggle the element 's selectedness state by setting it to the opposite value of its current selectedness . Otherwise, set the element 's selectedness state to true. If previous selectedness is false, fire a change event at parent node . Fire a mouseUp event at parent node . Fire a click event at parent node . Otherwise Let input state be the result of get the input state given session and session 's current top-level browsing context . Let actions options be a new actions options with the is element origin steps set to represents a web element , and the get element origin steps set to get a WebElement origin . Let input id be a the result of generating a UUID . Let source be the result of create an input source with input state , and " pointer ". Add an input source with input state , input id and source . Let click point be the element 's in-view center point . Let pointer move action be an action object constructed with arguments input id , " pointer ", and " pointerMove ". Set a property x to 0 on pointer move action . Set a property y to 0 on pointer move action . Set a property origin to element on pointer move action . Let pointer down action be an action object constructed with arguments input id , " pointer ", and " pointerDown ". Set a property button to 0 on pointer down action . Let pointer up action be an action object constructed with arguments input id , " pointer ", and " pointerUp " as arguments. Set a property button to 0 on pointer up action . Let actions be the list « pointer move action , pointer down action , pointer up action ». Dispatch a list of actions with input state , actions , session 's current browsing context , and actions options . Remove an input source with input state and input id . Wait until the user agent event loop has spun enough times to process the DOM events generated by the previous step. Perform implementation-defined steps to allow any navigations triggered by the click to start. Note It is not always clear how long this will cause the algorithm to wait, and it is acknowledged that some implementations may have unavoidable race conditions. The intention is to allow a new attempt to navigate to begin so that the next step in the algorithm is meaningful. It is possible the click does not cause an attempt to navigate , in which case the implementation-defined steps can return immediately, and the next step will also return immediately. Try to wait for navigation to complete with session . Try to run the post-navigation checks . Return success with data null . 12.5.2 Element Clear HTTP Method URI Template POST /session/{ session id }/element/{ element id }/clear To clear a content editable element : If element 's innerHTML IDL attribute is an empty string do nothing and return. Run the focusing steps for element . Set element 's innerHTML IDL attribute to an empty string. Run the unfocusing steps for the element . To clear a resettable element : Let empty be the result of the first matching condition: element is an input element whose type attribute is in the File Upload state True if the list of selected files has a length of 0, and false otherwise. Otherwise True if its value IDL attribute is an empty string, and false otherwise. If element is a candidate for constraint validation it satisfies its constraints , and empty is true, abort these substeps. Invoke the focusing steps for element . Invoke the clear algorithm for element . Invoke the unfocusing steps for the element . The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and element id . If element is not editable , return an error with error code invalid element state . Scroll into view the element . Let timeout be session 's session timeouts ' implicit wait timeout . Let timer be a new timer . If timeout is not null: Start the timer with timer and timeout . Wait for element to become interactable , or timer 's timeout fired flag to be set, whichever occurs first. If element is not interactable , return error with error code element not interactable . Run the substeps of the first matching statement: element is a mutable form control element Invoke the steps to clear a resettable element . element is a mutable element Invoke the steps to clear a content editable element . Otherwise Return error with error code invalid element state . Return success with data null . 12.5.3 Element Send Keys HTTP Method URI Template POST /session/{ session id }/element/{ element id }/value Note The Element Send Keys command scrolls into view the form control element and then sends the provided keys to the element . In case the element is not keyboard-interactable , an element not interactable error is returned. A non-typeable form control is an input element whose type attribute state causes the primary input mechanism not to be through means of a keyboard, whether virtual or physical. Non-typeable form controls means to refer to form control elements rendered by the user agent as something other than as a text input control. When targetting an input element in the color state being presented as a color wheel, interaction with it will be simulated, rather than typed using key emulation with actions . Other examples of non-typeable form controls include form controls interacted with via system-native widgets, such as a scrolled option list for select elements and a number keypad for input elements in the number state on non-desktop devices. The key input source used for input may be cleared mid-way through “typing” by sending the null key , which is U+E000 (NULL). To clear the modifier key state given input state , input id , source , undo actions , and browsing context : If source is not a key input source return error with error code invalid argument . Let actions options be a new actions options with the is element origin steps set to represents a web element , and the get element origin steps set to get a WebElement origin . For each entry key in the lexically sorted keys of undo actions : Let action be the value of undo actions equal to the key entry key . If action is not an action object with type " key " and subtype " keyUp ", return error with error code invalid argument . Let actions be the list « action » Dispatch a list of actions with input state , actions , browsing context , and actions options . An extended grapheme cluster is typeable if it consists of a single unicode code point and the code is not undefined . The shifted state for keyboard is the value of keyboard 's shift property. To dispatch the events for a typeable string given input state , input id , source , text , and browsing context : Let actions options be a new actions options with the is element origin steps set to represents a web element , and the get element origin steps set to get a WebElement origin . For each char of text : Let global key state be the result of get the global key state with input state . If char is a shifted character , and the shifted state of source is false: Let action be an action object constructed with input id , " key ", and " keyDown ", and set its value property to U+E008 ("left shift"). Let actions be the list « action ». Dispatch a list of actions with input state , actions , and browsing context . If char is not a shifted character and the shifted state of source is true: Let action be an action object constructed with input id , " key ", and " keyUp ", and set its value property to U+E008 ("left shift"). Let tick actions be the list « action ». Dispatch a list of actions with input state , actions , browsing context , and actions options . Let keydown action be an action object constructed with arguments input id , " key ", and " keyDown ". Set the value property of keydown action to char . Let keyup action be a copy of keydown action with the subtype property changed to " keyUp ". Let actions be the list « keydown action , keyup action ». Dispatch a list of actions with input state , actions , browsing context , and actions options . When required to dispatch a composition event given type and cluster , and browsing context , the remote end must perform implementation-specific action dispatch steps on browsing context equivalent to sending composition events in accordance with the requirements of [ UI-EVENTS ], and producing the following event with the specified properties. composition event with properties: Attribute Value type type data cluster To dispatch actions for a string given input state , input id , source , text , browsing context , and actions options : Let clusters be an array created by breaking text into extended grapheme clusters . Let undo actions be an empty map. Let current typeable text be an empty list. For each cluster corresponding to an indexed property in clusters run the substeps of the first matching statement: cluster is the null key Dispatch the events for a typeable string with input state , input id , source , current typeable text , and browsing context . Empty current typeable text . Try to clear the modifier key state with input state , input id , source , undo actions and browsing context . Clear undo actions . cluster is a modifier key Dispatch the events for a typeable string with input state , input id , source , current typeable text , and browsing context . Empty current typeable text . Let keydown action be an action object constructed with arguments input id , " key ", and " keyDown ". Set the value property of keydown action to cluster . Let actions be the list « keydown action » Dispatch a list of actions with input state , actions , browsing context , and actions options . Add an entry to undo actions with key cluster and value being a copy of keydown action with the subtype property modified to " keyUp ". cluster is typeable Append cluster to current typeable text . Otherwise Dispatch the events for a typeable string with input state , input id , source , current typeable text , and browsing context . Empty current typeable text . Dispatch a composition event with arguments " compositionstart ", undefined , and browsing context . Dispatch a composition event with arguments " compositionupdate ", cluster , and browsing context . Dispatch a composition event with arguments " compositionend ", cluster , and browsing context . Dispatch the events for a typeable string with input state , input id and source , current typeable text , and browsing context . Try to clear the modifier key state with input state , input id , source , undo actions , and browsing context . The remote end steps , given session , URL variables and parameters are: Let text be the result of getting a property named " text " from parameters . If text is not a String , return an error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables [ element id ]. Let file be true if element is input element in the file upload state , or false otherwise. If file is false or the session 's strict file interactability , is true run the following substeps: Scroll into view the element . Let timeout be session 's session timeouts ' implicit wait timeout . Let timer be a new timer . If timeout is not null: Start the timer with timer and timeout . Wait for element to become keyboard-interactable , or timer 's timeout fired flag to be set, whichever occurs first. If element is not keyboard-interactable , return error with error code element not interactable . If element is not the active element run the focusing steps for the element . Run the substeps of the first matching condition: file is true Let files be the result of splitting text on the newline ( \n ) character. If files is of 0 length, return an error with error code invalid argument . Let multiple equal the result of calling hasAttribute () with "multiple" on element . if multiple is false and the length of files is not equal to 1, return an error with error code invalid argument . Verify that each file given by the user exists. If any do not, return error with error code invalid argument . Complete implementation specific steps equivalent to setting the selected files on the input element. If multiple is true files are be appended to element 's selected files . Fire these events in order on element : input change Return success with data null . element is a non-typeable form control If element does not have an own property named value return an error with error code element not interactable If element is not mutable return an error with error code element not interactable . Set a property value to text on element . If element is suffering from bad input return an error with error code invalid argument . Return success with data null . element is content editable If element does not currently have focus, set the text insertion caret after any child content. Otherwise If element does not currently have focus, let current text length be the length of element 's API value . Set the text insertion caret using set selection range using current text length for both the start and end parameters. Let input state be the result of get the input state with session and session 's current top-level browsing context . Let input id be a the result of generating a UUID . Let source be the result of create an input source with input state , and " key ". Add an input source with input state , input id and source . Dispatch actions for a string with arguments input state , input id , and source , text , and session 's current browsing context . Remove an input source with input state and input id . Return success with data null . 13. Document 13.1 Get Page Source HTTP Method URI Template GET /session/{ session id }/source Note The Get Page Source command returns a string serialization of the DOM of session 's current browsing context active document . The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let source be the result of invoking the fragment serializing algorithm on a fictional node whose only child is the document element providing true for the require well-formed flag. If this causes an exception to be thrown, let source be null . Let source be the result of serializing to string session 's current browsing context 's active document , if source is null . Return success with data source . 13.2 Executing Script A collection is an Object that implements the Iterable interface, and whose: initial value of the toString own property is " Arguments " instance of Array instance of DOMTokenList instance of FileList instance of HTMLAllCollection instance of HTMLCollection instance of HTMLFormControlsCollection instance of HTMLOptionsCollection instance of NodeList To JSON deserialize given session , value and optional argument seen , a remote end must run the following steps: If seen is not provided, let seen be an empty List . Jump to the first appropriate step below: Matching on value : undefined null type Boolean type Number type String Return success with data value . Object that represents a web element Return the deserialized web element of value . Object that represents a shadow root Return the deserialized shadow root of value . Object that represents a web frame Return the deserialized web frame of value . Object that represents a web window Return the deserialized web window of value . instance of Array instance of Object Return clone an object algorithm with session , value and seen , and the JSON deserialize algorithm as the clone algorithm. To JSON clone given session and value , return the result of internal JSON clone with session , value and an empty List . To internal JSON clone given session , value and seen , return the value of the first matching statement, matching on value : undefined null Return success with data null . type Boolean type Number type String Return success with data value . instance of Element If the element is stale , return error with error code stale element reference . Otherwise: Let reference be the web element reference object for session and value . Return success with data reference . instance of ShadowRoot If the shadow root is detached , return error with error code detached shadow root . Otherwise: Let reference be the shadow root reference object for session and value . Return success with data reference . a WindowProxy object If the associated browsing context of the WindowProxy object in value has been destroyed, return error with error code stale element reference . Otherwise: Let reference be the WindowProxy reference object for value . Return success with data reference . has an own property named " toJSON " that is a Function Return success with the value returned by Function.[[Call]] ( toJSON ) with value as the this value. Otherwise Let result be clone an object with session value and seen , and internal JSON clone as the clone algorithm . Return success with data result . To clone an object , given session , value , seen , and clone algorithm : If value is in seen , return error with error code javascript error . Append value to seen . Let result be the value of the first matching statement, matching on value : a collection A new Array which length property is equal to the result of getting the property length of value . Otherwise A new Object . For each enumerable property in value , run the following substeps: Let name be the name of the property. Let source property value be the result of getting a property named name from value . If doing so causes script to be run and that script throws an error, return error with error code javascript error . Let cloned property result be the result of calling the clone algorithm with session , source property value and seen . If cloned property result is a success , set a property of result with name name and value equal to cloned property result 's data. Otherwise, return cloned property result . Remove the last element of seen . Return success with data result . When required to extract the script arguments from a request with argument parameters the implementation must: Let script be the result of getting a property named " script " from parameters . If script is not a String , return error with error code invalid argument . Let args be the result of getting a property named " args " from parameters . If args is not an Array return error with error code invalid argument . Let arguments be JSON deserialize with session and args . Return success with data script and arguments . The rules to execute a function body are as follows. The algorithm returns an ECMAScript completion record . If at any point during the algorithm a user prompt appears, immediately return Completion { [[Type]]: normal , [[Value]]: null , [[Target]]: empty }, but continue to run the other steps of this algorithm in parallel . Let window be the associated window of session 's current browsing context 's active document . Let environment settings be window 's relevant settings object . Let global scope be environment settings realm 's global environment . If body is not parsable as a FunctionBody or if parsing detects an early error , return Completion { [[Type]]: normal , [[Value]]: null , [[Target]]: empty }. If body begins with a directive prologue that contains a use strict directive then let strict be true, otherwise let strict be false. Prepare to run script with environment settings . Prepare to run a callback with environment settings . Let function be the result of calling FunctionCreate , with arguments: kind Normal. list An empty List . body The result of parsing body above. global scope The result of parsing global scope above. strict The result of parsing strict above. Let completion be Function.[[Call]] ( window , parameters ) with function as the this value. Clean up after running a callback with environment settings . Clean up after running script with environment settings . Return completion . Note The above algorithm is not associated with any particular element, and is therefore not subject to the document CSP directives . 13.2.1 Execute Script HTTP Method URI Template POST /session/{ session id }/execute/sync The remote end steps , given session , URL variables and parameters are: Let body and arguments be the result of trying to extract the script arguments from a request with argument parameters . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let timeout be session 's session timeouts ' script timeout . Let timer be a new timer . If timeout is not null: Start the timer with timer and timeout . Let promise be a new Promise . Run the following substeps in parallel : Let scriptPromise be the result of promise-calling execute a function body , with arguments body and arguments . Upon fulfillment of scriptPromise with value v , resolve promise with value v . Upon rejection of scriptPromise with value r , reject promise with value r . Wait until promise is resolved, or timer 's timeout fired flag is set, whichever occurs first. If promise is still pending and timer 's timeout fired flag is set, return error with error code script timeout . If promise is fulfilled with value v , let result be JSON clone with session and v , and return success with data result . If promise is rejected with reason r , let result be JSON clone with session and r , and return error with error code javascript error and data result . 13.2.2 Execute Async Script HTTP Method URI Template POST /session/{ session id }/execute/async Note The Execute Async Script command causes JavaScript to execute as an anonymous function. An additional value is provided as the final argument to the function. This is a function that may be invoked to signal the completion of the asynchronous operation. The first argument provided to the function will be serialized to JSON and returned by Execute Async Script . The remote end steps , given session , URL variables and parameters are: Let body and arguments by the result of trying to extract the script arguments from a request with argument parameters . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let timeout be session 's session timeouts ' script timeout . Let timer be a new timer . If timeout is not null: Start the timer with timer and timeout . Let promise be a new Promise . Run the following substeps in parallel : Let resolvingFunctions be CreateResolvingFunctions ( promise ). Append resolvingFunctions .[[Resolve]] to arguments . Let scriptResult be the result of calling execute a function body , with arguments body and arguments . If scriptResult .[[Type]] is not normal , then reject promise with value scriptResult .[[Value]], and abort these steps. Note Prior revisions of this specification did not recognize the return value of the provided script. In order to preserve legacy behavior, the return value only influences the command if it is a "thenable" object or if determining this produces an exception. If Type ( scriptResult .[[Value]]) is not Object , then abort these steps. Let then be Get ( scriptResult .[[Value]], "then"). If then .[[Type]] is not normal , then reject promise with value then .[[Value]], and abort these steps. If IsCallable ( then .[[Type]]) is false , then abort these steps. Let scriptPromise be PromiseResolve ( Promise , scriptResult .[[Value]]). Upon fulfillment of scriptPromise with value v , resolve promise with value v . Upon rejection of scriptPromise with value r , reject promise with value r . Wait until promise is resolved, or timer 's timeout fired flag is set, whichever occurs first. If promise is still pending and timer 's timeout fired flag is set, return error with error code script timeout . If promise is fulfilled with value v , let result be JSON clone with session and v , and return success with data result . If promise is rejected with reason r , let result be JSON clone with session and r , and return error with error code javascript error and data result . 14. Cookies This section describes the interaction with cookies as described in [ RFC6265 ]. A cookie is described in [ RFC6265 ] by a name-value pair holding the cookie's data, followed by zero or more attribute-value pairs describing its characteristics. The following table for cookie conversion defines the cookie concepts relevant to WebDriver, how these are referred to in [ RFC6265 ], what keys they map to in a serialized cookie , as well as the attribute-value keys needed when constructing a list of arguments for creating a cookie . For informational purposes, the table includes a legend of whether the field is optional in the serialized cookie provided to Add Cookie , and a brief non-normative description of the field and the expected input type of its associated value. Concept RFC 6265 Field JSON Key Attribute Key Optional Description Cookie name name " name " The name of the cookie. Cookie value value " value " The cookie value. Cookie path path " path " " Path " ✓ The cookie path. Defaults to " / " if omitted when adding a cookie . Cookie domain domain " domain " " Domain " ✓ The domain the cookie is visible to. Defaults to session 's current browsing context 's active document 's URL domain if omitted when adding a cookie . Cookie secure only secure-only-flag " secure " " Secure " ✓ Whether the cookie is a secure cookie. Defaults to false if omitted when adding a cookie . Cookie HTTP only http-only-flag " httpOnly " " HttpOnly " ✓ Whether the cookie is an HTTP only cookie. Defaults to false if omitted when adding a cookie . Cookie expiry time expiry-time " expiry " " Max-Age " ✓ When the cookie expires, specified in seconds since Unix Epoch . Must not be set if omitted when adding a cookie . Cookie same site samesite " sameSite " " SameSite " ✓ Whether the cookie applies to a SameSite policy. Defaults to None if omitted when adding a cookie . Can be set to either Lax or Strict . A serialized cookie is a JSON Object where a cookie 's [ RFC6265 ] fields listed in the table for cookie conversion are mapped using the JSON Key and the associated field's value from the cookie store . The optional fields may be omitted. To get all associated cookies to a document , the user agent must return the enumerated set of cookies that meet the requirements set out in the first step of the algorithm in [ RFC6265 ] to compute cookie-string for an ‘HTTP API', from the cookie store of the given document 's address . The returned cookies must include HttpOnly cookies . When the remote end is instructed to create a cookie , this is synonymous to carrying out the steps described in [ RFC6265 ] section 5.3 , under receiving a cookie , except the user agent may not ignore the received cookie in its entirety (disregard step 1). To delete cookies given an optional filter argument name that is a string: For each cookie among all associated cookies of session 's current browsing context 's active document , run the substeps of the first matching condition: name is undefined name is equal to cookie name Set the cookie expiry time to a Unix timestamp in the past. Otherwise Do nothing. 14.1 Get All Cookies HTTP Method URI Template GET /session/{ session id }/cookie The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let cookies be a new List . For each cookie in all associated cookies of session 's current browsing context 's active document : Let serialized cookie be the result of serializing cookie . Append serialized cookie to cookies Return success with data cookies . 14.2 Get Named Cookie HTTP Method URI Template GET /session/{ session id }/cookie/{ name } The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . If the URL variables [" name " is equal to a cookie 's cookie name amongst all associated cookies of session 's current browsing context 's active document , return success with the serialized cookie as data. Otherwise, return error with error code no such cookie . 14.3 Add Cookie HTTP Method URI Template POST /session/{ session id }/cookie The remote end steps , given session , URL variables and parameters are: Let data be the result of getting a property named " cookie " from parameters . If data is not a JSON Object with all the required (non-optional) JSON keys listed in the table for cookie conversion , return error with error code invalid argument . If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . If cookie name or cookie value is null , cookie secure only or cookie HTTP only are not boolean types, or cookie expiry time is not an integer type, or it less than 0 or greater than the maximum safe integer , return error with error code invalid argument . If session 's current browsing context 's document element is a cookie-averse Document object or cookie domain is not equal to session 's current browsing context 's active document 's domain , return error with error code invalid cookie domain . Create a cookie in the cookie store associated with the active document 's address using cookie name name , cookie value value , and an attribute-value list of the following cookie concepts listed in the table for cookie conversion from data : Cookie path The value if the entry exists, otherwise " / ". Cookie domain The value if the entry exists, otherwise session 's current browsing context 's active document 's URL domain . Cookie secure only The value if the entry exists, otherwise false. Cookie HTTP only The value if the entry exists, otherwise false. Cookie expiry time The value if the entry exists, otherwise leave unset to indicate that this is a session cookie. Note The cookie's expiry value might be limited by the remote end in accordance with the Cookie Lifetime Limits . Cookie same site The value if the entry exists, otherwise leave unset to indicate that no same site policy is defined. If there is an error during this step, return error with error code unable to set cookie . Return success with data null . 14.4 Delete Cookie HTTP Method URI Template DELETE /session/{ session id }/cookie/{ name } The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Delete cookies using the URL variables [" name "] as the filter argument. Return success with data null . 14.5 Delete All Cookies HTTP Method URI Template DELETE /session/{ session id }/cookie The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Delete cookies , giving no filtering argument. Return success with data null . 15. Actions The Actions API provides a low-level interface for providing virtualized device input to the web browser. Conceptually, the Actions commands divide time into a series of ticks . The local end sends a series of actions which correspond to the change in state, if any, of each input device during each tick . For example, pressing a key is represented by an action sequence consisting of a single key input device and two ticks , the first containing a keyDown action, and the second a keyUp action, whereas a pinch-zoom input is represented by an action sequence consisting of three ticks and two pointer input devices of type touch, each performing a sequence of actions pointerDown , followed by pointerMove , and then pointerUp . Example 11 Imagine we have two fingers acting on a touchscreen. One finger will press down on element1 at the same moment that another finger presses down on element2. Once these actions are done, the first finger will wait 5 seconds while the other finger moves to element3. Then both fingers release from the touchscreen. When the remote end receives this, it will look at each input source 's action lists. It will dispatch the first action of each source together, then the second actions together, and lastly, the final actions together. The diagram below displays when each action gets executed. "Source 1" is the first finger, and "source 2" is the second. There is no limit to the number of input sources , and there is no restriction regarding the length of each input's action list. This means, there is no requirement that all action lists have to be the same length. It is possible for one input source 's action list may have more actions than another. In this case, the action list for the first finger contains 2 actions ( pointerDown , pointerUp ), and the action list for the second finger contains 3 ( pointerDown , pointerMove , pointerUp ). And the execution of each action will be done as follows: Specific timing for the actions can also be expressed. The pause action can be used to either (a) indicate a specific amount of time an input source must wait, or (b) can be used to signify that the current input source must wait until all other actions in the tick are completed. For the former case, the current tick being executed must wait for the longest pause to complete. For example, in this diagram: The remote end will dispatch the pointerDown action in the first tick . In the second tick , since source 1 declares a pause of 5 seconds, the remote end will dispatch the pointerUp event for source 2, and will wait 5 seconds before moving on to executing the third tick . In the event that one tick contains multiple pause durations, the remote end will wait the maximum duration before moving on to executing the next tick . As noted before, pause can be used to signify inaction during a tick . If pause is declared without a time period, then the input source will not have any actions executed in the containing tick . As an example: During tick 2, source 1 will have its pointerMove action dispatched, while source 2 will do nothing. 15.1 Actions Options Configuration of actions dispatch is controlled by a actions options object. This is a struct that has a fields named is element origin , which is a set of steps that validate if a protocol object represents an element origin, and get element origin , which is a set of steps used to deserialize an element. To get a WebElement origin given session , origin and browsing context :, Assert: browsing context is the current browsing context . Let element be equal to the result of trying to get a known element with session and origin . Return success with data element . 15.2 Input sources An input source is a virtual device providing input events. Each input source is represented by an struct specific to the type of the input source. Each input source has an input id which is stored as a key in the input state map . To create an input source given input state , type and optional subtype : Run the substeps matching the first matching value of type : " none " Let source be the result of create a null input source . " key " Let source be the result of create a key input source . " pointer " Let source be the result of create a pointer input source with input state and subtype . " wheel " Let source be the result of create a wheel input source . Otherwise: Return error with error code invalid argument . Return success with data source . 15.2.1 Null input source A null input source is an input source that is not associated with a specific physical device. a null input source has no type-specific items, and supports the following actions: Action Non-normative Description pause Used with an integer argument to specify the duration of a tick , or as a placeholder to indicate that an input source does nothing during a particular tick . To create a null input source , return a new null input source . 15.2.2 Key input source A key input source is an input source that is associated with a keyboard-type device. A key input source has the following items: Item Non-normative Description Default Value pressed A set of strings representing currently pressed keys. Empty set alt A boolean indicating whether the alt modifier is depressed. False ctrl A boolean indicating whether the ctrl modifier is depressed. False meta A boolean indicating whether the meta modifier is depressed. False shift A boolean indicating whether the shift modifier is depressed. False A key input source supports the same pause action as a null input source plus the following actions: Action Non-normative Description keyDown Used to indicate that a particular key should be held down. keyUp Used to indicate that a depressed key should be released. To create a key input source , return a new key input source with the items initalized to their default values. 15.2.3 Pointer input source A pointer input source is an input source that is associated with a pointer-type input device. A pointer input source has the following items: Item Non-normative Description Default Value subtype The type of pointing device. This can be " mouse ", " pen ", or " touch ". pointerId The numeric id of the pointing device. This is a positive integer, with the values 0 and 1 reserved for mouse-type pointers. pressed A set of unsigned integers representing the pointer buttons that are currently depressed. Empty set x An unsigned integer representing the pointer x location in viewport coordinates. 0 y An unsigned integer representing the pointer y location in viewport coordinates. 0 A pointer input source supports the same pause action as a null input source plus the following actions: Action Non-normative Description pointerDown Used to indicate that a pointer should be depressed in some way e.g. by holding a button down (for a mouse) or by coming into contact with the active surface (for a touch or pen device). pointerUp Used to indicate that a pointer should be released in some way e.g. by releasing a mouse button or moving a pen or touch device away from the active surface. pointerMove Used to indicate a location on the screen that a pointer should move to, either in its active (pressed) or inactive state. pointerCancel Used to cancel a pointer action. To create a pointer input source object given input state , and subtype , return a new pointer input source with subtype set to subtype , pointerId set to get a pointer id with input state and subtype , and the other items set to their default values. 15.2.4 Wheel input source A wheel input source is an input source that is associated with a wheel-type input device. A wheel input source has no type specific items, and supports the same pause action as a null input source plus the following actions: Action Non-normative Description scroll Used to indicate that the scroll wheel is rolled down, up, right or left to scroll the page down, up, right or left. To create a wheel input source return a new wheel input source . 15.3 Input state An input state represents the overall state of a collection of input sources .
An input state has the following items: A input state map which is a map where keys are input ids , and the values are input sources . An input cancel list , which is a list of action objects . This list is used to manage dispatching events when resetting the state of the input source An actions queue which is a queue that ensures that access to the input state is serialized. To get the input state given session and browsing context : Assert: browsing context is a top-level browsing context . Let input state map be session 's browsing context input state map . If input state map does not contain browsing context , set input state map [ browsing context ] to create an input state . Return input state map [ browsing context ]. To reset the input state given session and browsing context : Assert: browsing context is a top-level browsing context . Let input state map be session 's browsing context input state map . If input state map [ browsing context ] exists , then remove input state map [ browsing context ]. To create an input state : Let input state be an input state with the input state map set to an empty map, and the input cancel list set to an empty list. Return input state . To add an input source given input state , input id , and source : Let input state map be input state 's input state map . Set input state map [ input id ] to source . To remove an input source given input state , and input id : Assert: None of the items in input state 's input cancel list has id equal to input id . Let input state map be input state 's input state map . Remove input state map [ input id ]. To get an input source given input state and input id : Let input state map be input state 's input state map . If input state map [ input id ] exists, return input state map [ input id ]. Return undefined. To get or create an input source given input state , type , input id , and optional subtype : Let source be get an input source with input state and input id . If source is not undefined and source 's type is not equal to type , or source is a pointer input source , return error with error code invalid argument . If source is undefined, set source to the result of trying to create an input source with input state and type . Return success with data source . A global key state is a struct with items pressed, altKey, ctrlKey, metaKey, and shiftKey. To get the global key state given input state : Let input state map be input state 's input state map . Let sources be the result of getting the values with input state map . Let key state be a new global key state with pressed set to an empty set, altKey , ctrlKey , metaKey , and shiftKey set to false. For each source in sources : If source is not a key input source , continue to the first step of this loop. Set key state 's pressed item to the union of its current value and source 's pressed item. If source 's alt item is true, set key state 's altKey item to true. If source 's ctrl item is true, set key state 's ctrlKey item to true. If source 's meta item is true, set key state 's metaKey item to true. If source 's shift item is true, set key state 's shiftKey item to true. Return key state . To get a pointer id given input state and subtype : Let minimum id be 0 if subtype is " mouse ", or 2 otherwise. Let pointer ids be an empty set. Let sources be the result of getting the values with input state 's input state map . For each source in sources .: If source is a pointer input source , append source 's pointerId to pointer ids . Return the smallest integer that is greater than or equal to minimum id and that is not contained in pointer ids . 15.4 Ticks A tick is the basic unit of time over which actions can be performed. During a tick , each input source has an assigned action — possibly a noop pause action — which may result in changes to the user agent internal state and eventually cause DOM events to be fired at the page. The next tick begins after the user agent has had a chance to process all DOM events generated in the current tick . Waiting asynchronously means waiting for something to occur whilst allowing the browser to continue processing the event loop . At the lowest level, the behavior of actions is intended to mimic the remote end 's behavior with an actual input device as closely as possible, and the implementation strategy may involve e.g. injecting synthesized events into a browser event loop. Therefore the steps to dispatch an action will inevitably end up in implementation-specific territory. However there are certain content observable effects that must be consistent across implementations. To accommodate this, the specification requires that remote ends perform implementation-specific action dispatch steps on a browsing context context , and a list of events and their properties. These steps must be equivalent to performing the given input device manipulations on context , such that trusted events corresponding to the entries in list of events are dispatched. Note The list of events is not comprehensive; in particular the default action of the input source may cause additional events to be generated depending on the implementation and the state of the browser (e.g. input events relating to key actions when the focus is on an editable element , scroll events, etc.). Note An activation trigger generated by WebDriver needs to be indistinguishable from those generated by a real user interacting with the browser. In particular, the dispatched events will have the isTrusted attribute set to true. The most robust way to dispatch these events is by creating them in the browser implementation itself. Sending operating system specific input messages to the browser's window has the disadvantage that the browser being automated may not be properly isolated from a user accidentally modifying an input source . Use of an operating system level accessibility API has the disadvantage that the browser's window must be focused, and as a result, multiple WebDriver instances cannot run in parallel. The advantage of an operating system level accessibility API is that it guarantees that inputs correctly mirror user input, and allows interaction with the host system if necessary. This might, however, have performance penalties from a machine utilisation perspective. 15.5 Processing actions The algorithm for extracting an action sequence from a request takes the JSON Object representing an action sequence, validates the input, and returns a data structure that is the transpose of the input JSON, such that the actions to be performed in a single tick are grouped together. To get coordinates relative to an origin given source , x offset , y offset , origin , browsing context , and actions options : Run the substeps of the first matching value of origin " viewport " Let x equal x offset and y equal y offset . " pointer " Let start x be equal to the x property of source . Let start y be equal to the y property of source . Let x equal start x + x offset and y equal start y + y offset . Otherwise Let element be the result of trying to run actions options ' get element origin steps with origin and browsing context . If element is null, return error with error code no such element . Let x element and y element be the result of calculating the in-view center point of element . Let x equal x element + x offset , and y equal y element + y offset . Return ( x , y ) To extract an action sequence given input state , parameters , and actions options : Let actions be the result of getting a property named " actions " from parameters . If actions is undefined or is not an Array , return error with error code invalid argument . Let actions by tick be an empty List . For each value action sequence corresponding to an indexed property in actions : Let source actions be the result of trying to process an input source action sequence given input state , action sequence , and actions options . For each action in source actions : Let i be the zero-based index of action in source actions . If the length of actions by tick is less than i + 1, append a new List to actions by tick . Append action to the List at index i in actions by tick . Return success with data actions by tick . When required to process an input source action sequence , given input state , action sequence , and actions options , a remote end must: Let type be the result of getting a property named " type " from action sequence . If type is not " key ", " pointer ", " wheel ", or " none ", return an error with error code invalid argument . Let id be the result of getting the property " id " from action sequence . If id is undefined or is not a String , return error with error code invalid argument . If type is equal to " pointer ", let parameters data be the result of getting the property " parameters " from action sequence . Then let parameters be the result of trying to process pointer parameters with argument parameters data . Let source be the result of trying to get or create an input source given input state , type and id . If parameters is not undefined , then if its pointerType property is not equal to source 's subtype property, return an error with error code invalid argument . Let action items be the result of getting a property named " actions " from action sequence . If action items is not an Array , return error with error code invalid argument . Let actions be a new list. For each action item in action items : If action item is not an Object return error with error code invalid argument . If type is " none " let action be the result of trying to process a null action with parameters id , and action item . Otherwise, if type is " key " let action be the result of trying to process a key action with parameters id , and action item . Otherwise, if type is " pointer " let action be the result of trying to process a pointer action with parameters id , parameters , action item , and actions options . Otherwise, if type is " wheel " let action be the result of trying to process a wheel action with parameters id , and action item , and actions options . Append action to actions . Return success with data actions . The default pointer parameters consist of an object with property pointerType set to mouse . To process pointer parameters given parameters data : Let parameters be the default pointer parameters . If parameters data is undefined , return success with data parameters . If parameters data is not an Object , return error with error code invalid argument . Let pointer type be the result of getting a property named " pointerType " from parameters data . If pointer type is not undefined : If pointer type does not have one of the values " mouse ", " pen ", or " touch ", return error with error code invalid argument . Set the pointerType property of parameters to pointer type . Return success with data parameters . An action object constructed with arguments id , type , and subtype is an object with property id set to id , type set to type and subtype set to subtype . Specific action objects have further properties added by other algorithms in this specification. To process a null action given id and action item : Let subtype be the result of getting a property named " type " from action item . If subtype is not " pause ", return error with error code invalid argument . Let action be an action object constructed with arguments id , "none" , and subtype . Let result be the result of trying to process a pause action with arguments action item and action . Return result . To process a key action given id and action item : Let subtype be the result of getting a property named " type " from action item . If subtype is not one of the values " keyUp ", " keyDown ", or " pause ", return an error with error code invalid argument . Let action be an action object constructed with arguments id , " key ", and subtype . If subtype is " pause ", let result be the result of trying to process a pause action with arguments action item and action , and return result . Let key be the result of getting a property named " value " from action item . If key is not a String containing a single unicode code point or grapheme cluster? return error with error code invalid argument . Set the value property on action to key . Return success with data action . To process a pointer action given id , parameters , action item , and action options : Let subtype be the result of getting a property named " type " from action item . If subtype is not one of the values " pause ", " pointerUp ", " pointerDown ", " pointerMove ", or " pointerCancel ", return an error with error code invalid argument . Let action be an action object constructed with arguments id , " pointer ", and subtype . If subtype is " pause ", let result be the result of trying to process a pause action with arguments action item , action , and actions options , and return result . Set the pointerType property of action equal to the pointerType property of parameters . If subtype is " pointerUp " or " pointerDown ", process a pointer up or pointer down action with arguments action item and action . If doing so results in an error , return that error . If subtype is " pointerMove " process a pointer move action with arguments action item , action , and actions options . If doing so results in an error , return that error . If subtype is " pointerCancel " process a pointer cancel action . If doing so results in an error , return that error . Return success with data action . To process a wheel action given id , action item , and actions options : Let subtype be the result of getting a property named " type " from action item . If subtype is not the value " pause ", or " scroll ", return an error with error code invalid argument . Let action be an action object constructed with arguments id , " wheel ", and subtype . If subtype is " pause ", let result be the result of trying to process a pause action with arguments action item and action , and return result . Let duration be the result of getting a property named " duration " from action item . If duration is not undefined and duration is not an Integer greater than or equal to 0, return error with error code invalid argument . Set the duration property of action to duration . Let origin be the result of getting the property origin from action item . If origin is undefined let origin equal " viewport ". If origin is not equal to " viewport ", or actions options ' is element origin steps given origin return false, return error with error code invalid argument . Set the origin property of action to origin . Let x be the result of getting the property x from action item . If x is not an Integer , return error with error code invalid argument . Set the x property of action to x . Let y be the result of getting the property y from action item . If y is not an Integer , return error with error code invalid argument . Set the y property of action to y . Let deltaX be the result of getting the property deltaX from action item . If deltaX is not an Integer , return error with error code invalid argument . Set the deltaX property of action to deltaX . Let deltaY be the result of getting the property deltaY from action item . If deltaY is not an Integer , return error with error code invalid argument . Set the deltaY property of action to deltaY . Return success with data action . To process a pause action given action item , and action : Let duration be the result of getting the property " duration " from action item . If duration is not undefined and duration is not an Integer greater than or equal to 0, return error with error code invalid argument . Set the duration property of action to duration . Return success with data action . To process a pointer up or pointer down action given action item , and action : Let button be the result of getting the property button from action item . If button is not an Integer greater than or equal to 0 return error with error code invalid argument . Set the button property of action to button . Let width be the result of getting the property width from action item . If width is not undefined and width is not a Number greater than or equal to 0 return error with error code invalid argument . Set the width property of action to width . Let height be the result of getting the property height from action item . If height is not undefined and height is not a Number greater than or equal to 0 return error with error code invalid argument . Set the height property of action to height . Let pressure be the result of getting the property pressure from action item . If pressure is not undefined and pressure is not a Number greater than or equal to 0 and less than or equal to 1 return error with error code invalid argument . Set the pressure property of action to pressure . Let tangentialPressure be the result of getting the property tangentialPressure from action item . If tangentialPressure is not undefined and tangentialPressure is not a Number greater than or equal to -1 and less than or equal to 1 return error with error code invalid argument . Set the tangentialPressure property of action to tangentialPressure . Let tiltX be the result of getting the property tiltX from action item . If tiltX is not undefined and tiltX is not an Integer greater than or equal to -90 and less than or equal to 90 return error with error code invalid argument . Set the tiltX property of action to tiltX . Let tiltY be the result of getting the property tiltY from action item . If tiltY is not undefined and tiltY is not an Integer greater than or equal to -90 and less than or equal to 90 return error with error code invalid argument . Set the tiltY property of action to tiltY . Let twist be the result of getting the property twist from action item . If twist is not undefined and twist is not an Integer greater than or equal to 0 and less than or equal to 359 return error with error code invalid argument . Set the twist property of action to twist . Let altitudeAngle be the result of getting the property altitudeAngle from action item . If altitudeAngle is not undefined and altitudeAngle is not a Number greater than or equal to 0 and less than or equal to π/2 return error with error code invalid argument . Set the altitudeAngle property of action to altitudeAngle . Let azimuthAngle be the result of getting the property azimuthAngle from action item . If azimuthAngle is not undefined and azimuthAngle is not a Number greater than or equal to 0 and less than or equal to 2π return error with error code invalid argument . Set the azimuthAngle property of action to azimuthAngle . Return success with data null . To process a pointer move action given action item , action , and actions options : Let duration be the result of getting the property duration from action item . If duration is not undefined and duration is not an Integer greater than or equal to 0, return error with error code invalid argument . Set the duration property of action to duration . Let origin be the result of getting the property origin from action item . If origin is undefined let origin equal " viewport ". If origin is not equal to " viewport " or " pointer ", and actions options is element origin steps given origin return false, return error with error code invalid argument . Set the origin property of action to origin . Let x be the result of getting the property x from action item . If x is not a Number , return error with error code invalid argument . Set the x property of action to x . Let y be the result of getting the property y from action item . If y is not a Number , return error with error code invalid argument . Set the y property of action to y . Let width be the result of getting the property width from action item . If width is not undefined and width is not a Number greater than or equal to 0 return error with error code invalid argument . Set the width property of action to width . Let height be the result of getting the property height from action item . If height is not undefined and height is not a Number greater than or equal to 0 return error with error code invalid argument . Set the height property of action to height . Let pressure be the result of getting the property pressure from action item . If pressure is not undefined and pressure is not a Number greater than or equal to 0 and less than or equal to 1 return error with error code invalid argument . Set the pressure property of action to pressure . Let tangentialPressure be the result of getting the property tangentialPressure from action item . If tangentialPressure is not undefined and tangentialPressure is not a Number greater than or equal to -1 and less than or equal to 1 return error with error code invalid argument . Set the tangentialPressure property of action to tangentialPressure . Let tiltX be the result of getting the property tiltX from action item . If tiltX is not undefined and tiltX is not an Integer greater than or equal to -90 and less than or equal to 90 return error with error code invalid argument . Set the tiltX property of action to tiltX . Let tiltY be the result of getting the property tiltY from action item . If tiltY is not undefined and tiltY is not an Integer greater than or equal to -90 and less than or equal to 90 return error with error code invalid argument . Set the tiltY property of action to tiltY . Let twist be the result of getting the property twist from action item . If twist is not undefined and twist is not an Integer greater than or equal to 0 and less than or equal to 359 return error with error code invalid argument . Set the twist property of action to twist . Let altitudeAngle be the result of getting the property altitudeAngle from action item . If altitudeAngle is not undefined and altitudeAngle is not a Number greater than or equal to 0 and less than or equal to π/2 return error with error code invalid argument . Set the altitudeAngle property of action to altitudeAngle . Let azimuthAngle be the result of getting the property azimuthAngle from action item . If azimuthAngle is not undefined and azimuthAngle is not a Number greater than or equal to 0 and less than or equal to 2π return error with error code invalid argument . Set the azimuthAngle property of action to azimuthAngle . Return success with data null . 15.6 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 appropriate point in the sequence. To wait for an action queue token given input state : Let token be a new unique identifier. Enqueue token in input state 's actions queue . Wait for token to be the first item in input state 's actions queue . Note This ensures that only one set of actions can be run at a time, and therefore different actions commands using the same underlying state don't race. In a session that is only a HTTP session only one command can run at a time, so this will never block. But other session types can allow running multiple commands in parallel, in which case this is necessary to ensure sequential access. To dispatch actions given input state , actions by tick , browsing context , and actions options : Wait for an action queue token with input state . Let actions result be the result of dispatch actions inner with input state , actions by tick , browsing context , and actions options . Dequeue input state 's actions queue . Assert: this returns token Return actions result . To dispatch actions inner given input state , actions by tick , browsing context , and actions options : For each item tick actions in actions by tick : If browsing context is no longer open , return error with error code no such window . Let tick duration be the result of computing the tick duration with argument tick actions . Try to dispatch tick actions with input state , tick actions , tick duration , browsing context , and actions options . Wait until the following conditions are all met: There are no pending asynchronous waits arising from the last invocation of the dispatch tick actions steps. The user agent event loop has spun enough times to process the DOM events generated by the last invocation of the dispatch tick actions steps. At least tick duration milliseconds have passed. Return success with data null . To compute the tick duration given tick actions : Let max duration be 0. For each action object in tick actions : let duration be undefined . If action object has subtype property set to " pause " or action object has type property set to " pointer " and subtype property set to " pointerMove ", or action object has type property set to " wheel " and subtype property set to " scroll ", let duration be equal to the duration property of action object . If duration is not undefined , and duration is greater than max duration , let max duration be equal to duration. Return max duration . To dispatch tick actions given input state , tick actions , tick duration , browsing context , and actions options : For each action object in tick actions : Let input id be equal to the value of action object 's id property. Let source type be equal to the value of action object 's type property. Let source be the result of get an input source given input state and input id . Assert: source is not undefined. Let global key state be the result of get the global key state with input state . Let subtype be action object 's subtype. Let algorithm be the value of the column dispatch action algorithm from the following table where the source type column is source type and the subtype column is equal to subtype . source type subtype Dispatch action algorithm " none " " pause " Dispatch a pause action " key " " pause " Dispatch a pause action " key " " keyDown " Dispatch a keyDown action " key " " keyUp " Dispatch a keyUp action " pointer " " pause " Dispatch a pause action " pointer " " pointerDown " Dispatch a pointerDown action " pointer " " pointerUp " Dispatch a pointerUp action " pointer " " pointerMove " Dispatch a pointerMove action " pointer " " pointerCancel " Dispatch a pointerCancel action " wheel " " pause " Dispatch a pause action " wheel " " scroll " Dispatch a scroll action Try to run algorithm with arguments action object , source , global key state , tick duration , browsing context , and actions options . If subtype is " keyDown ", append a copy of action object with the subtype property changed to " keyUp " to input state 's input cancel list . If subtype is " pointerDown ", append a copy of action object with the subtype property changed to " pointerUp " to input state 's input cancel list . Return success with data null . To dispatch a list of actions given input state , actions , browsing context , and actions options : Note This is an entry point for other commands that are written in terms of a sequence of actions of a single input source in a single tick. Let tick actions be the list « actions » Let actions by tick be the list « tick actions ». Return the result of dispatch actions with input state , actions by tick , browsing context , and actions options . 15.6.1 General actions To dispatch a pause action given action object , source , global key state , tick duration , browsing context , and actions options : Return success with data null . 15.6.2 Keyboard actions The normalized key value for a raw key key is, if key appears in the table below, the string value in the second column on the row containing key 's unicode code point in the first column, otherwise it is key . key 's codepoint Normalized key value \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" The code for key is the value in the last column of the following table on the row with key in either the first or second column, if any such row exists, otherwise it is undefined . A shifted character is one that appears in the second column of the following table. Key Alternate Key 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" The key location for key is the value in the last column in the table below on the row with key appears in the first column, if such a row exists, otherwise it is 0 . key 's codepoint Description Location \uE007 Enter 1 \uE008 Left Shift 1 \uE009 Left Control 1 \uE00A Left Alt 1 \uE019 Numpad = 3 \uE01A Numpad 0 3 \uE01B Numpad 1 3 \uE01C Numpad 2 3 \uE01D Numpad 3 3 \uE01E Numpad 4 3 \uE01F Numpad 5 3 \uE020 Numpad 6 3 \uE021 Numpad 7 3 \uE022 Numpad 8 3 \uE023 Numpad 9 3 \uE024 Numpad * 3 \uE025 Numpad + 3 \uE026 Numpad , 3 \uE027 Numpad - 3 \uE028 Numpad . 3 \uE029 Numpad / 3 \uE03D Left Meta 1 \uE050 Right Shift 2 \uE051 Right Control 2 \uE052 Right Alt 2 \uE053 Right Meta 2 \uE054 Numpad PageUp 3 \uE055 Numpad PageDown 3 \uE056 Numpad End 3 \uE057 Numpad Home 3 \uE058 Numpad ArrowLeft 3 \uE059 Numpad ArrowUp 3 \uE05A Numpad ArrowRight 3 \uE05B Numpad ArrowDown 3 \uE05C Numpad Insert 3 \uE05D Numpad Delete 3 To dispatch a keyDown action given action object , source , global key state , tick duration , browsing context , and actions options : Let raw key be equal to the action object 's value property. Let key be equal to the normalized key value for raw key . If the source 's pressed property contains key , let repeat be true, otherwise let repeat be false. Let code be the code for raw key . Let location be the key location for raw key . Let charCode , keyCode and which be the implementation-specific values of the charCode , keyCode and which properties appropriate for a key with key key and location location on a 102 key US keyboard, following the guidelines in [ UI-EVENTS ]. If key is "Alt" , let source 's alt property be true. If key is "Shift" , let source 's shift property be true. If key is "Control" , let source 's ctrl property be true. If key is "Meta" , let source 's meta property be true. Add key to source 's pressed property. Perform implementation-specific action dispatch steps on browsing context equivalent to pressing a key on the keyboard in accordance with the requirements of [ UI-EVENTS ], and producing the following events, as appropriate, with the specified properties. This will always produce events including at least a keyDown event. keyDown with properties: Attribute Value key key code code location location altKey source 's alt property shiftKey source 's shift property ctrlKey source 's ctrl property metaKey source 's meta property repeat repeat isComposing false charCode charCode keyCode keyCode which which keyPress with properties: Attribute Value key key code code location location altKey source 's alt property shiftKey source 's shift property ctrlKey source 's ctrl property metaKey source 's meta property repeat repeat isComposing false charCode charCode keyCode keyCode which which Return success with data null . Note A single keyDown action produces a single key input, irrespective of how long the key is held down; there is no implicit key repetition. To dispatch a keyUp action given, action object , source , global key state , tick duration , browsing context , and actions options : Let raw key be equal to action object 's value property. Let key be equal to the normalized key value for raw key . If the source 's pressed item does not contain key , return. Let code be the code for raw key . Let location be the key location for raw key . Let charCode , keyCode and which be the implementation-specific values of the charCode , keyCode and which properties appropriate for a key with key key and location location on a 102 key US keyboard, following the guidelines in [ UI-EVENTS ]. If key is " Alt ", let source 's alt property be false. If key is " Shift ", let source 's shift property be false. If key is "Control" , let source 's ctrl property be false. If key is "Meta" , let source 's meta property be false. Remove key from sources 's pressed property. Perform implementation-specific action dispatch steps on browsing context equivalent to releasing a key on the keyboard in accordance with the requirements of [ UI-EVENTS ], and producing at least the following events with the specified properties: keyup , with properties: Attribute Value key key code code location location altKey source 's altKey property shiftKey source 's shift property ctrlKey source 's ctrl property metaKey source 's meta property repeat false isComposing false charCode charCode keyCode keyCode which which Return success with data null . 15.6.3 Pointer actions To dispatch a pointerDown action given action object , source , global key state , tick duration , browsing context , and actions options : Let pointerType be equal to action object 's pointerType property. Let button be equal to action object 's button property. If the source 's pressed property contains button return success with data null . Let x be equal to source 's x property. Let y be equal to source 's y property. Add button to the set corresponding to source 's pressed property, and let buttons be the resulting value of that property. Let width be equal to action object 's width property. Let height be equal to action object 's height property. Let pressure be equal to action object 's pressure property. Let tangentialPressure be equal to action object 's tangentialPressure property. Let tiltX be equal to action object 's tiltX property. Let tiltY be equal to action object 's tiltY property. Let twist be equal to action object 's twist property. Let altitudeAngle be equal to action object 's altitudeAngle property. Let azimuthAngle be equal to action object 's azimuthAngle property. Perform implementation-specific action dispatch steps on browsing context equivalent to pressing the button numbered button on the pointer with pointerId equal to source 's pointerId, having type pointerType at viewport x coordinate x , viewport y coordinate y , width , height , pressure , tangentialPressure , tiltX , tiltY , twist , altitudeAngle , azimuthAngle , with buttons buttons depressed in accordance with the requirements of [ UI-EVENTS ] and [ POINTER-EVENTS ]. set ctrlKey , shiftKey , altKey , and metaKey equal to the corresponding items in global key state . Type specific properties for the pointer that are not exposed through the webdriver API must be set to the default value specified for hardware that doesn't support that property. Return success with data null . To dispatch a pointerUp action given, action object , source , global key state , tick duration , browsing context , and actions options : Let pointerType be equal to action object 's pointerType property. Let button be equal to action object 's button property. If the source 's pressed property does not contain button , return success with data null . Let x be equal to source 's x property. Let y be equal to source 's y property. Remove button from the set corresponding to source 's pressed property, and let buttons be the resulting value of that property. Perform implementation-specific action dispatch steps on browsing context equivalent to releasing the button numbered button on the pointer with pointerId equal to input source 's pointerId, having type pointerType at viewport x coordinate x , viewport y coordinate y , with buttons buttons depressed, in accordance with the requirements of [ UI-EVENTS ] and [ POINTER-EVENTS ]. The generated events must set ctrlKey , shiftKey , altKey , and metaKey equal to the corresponding items in global key state . Type specific properties for the pointer that are not exposed through the webdriver API must be set to the default value specified for hardware that doesn't support that property. Return success with data null . To dispatch a pointerMove action given action object , source , global key state , tick duration , browsing context , and actions options : Let x offset be equal to the x property of action object . Let y offset be equal to the y property of action object . Let origin be equal to the origin property of action object . Let ( x , y ) be the result of trying to get coordinates relative to an origin with source , x offset , y offset , origin , browsing context , and actions options . If x is less than 0 or greater than the width of the viewport in CSS pixels , then return error with error code move target out of bounds . If y is less than 0 or greater than the height of the viewport in CSS pixels , then return error with error code move target out of bounds . Let duration be equal to action object 's duration property if it is not undefined , or tick duration otherwise. If duration is greater than 0 and inside any implementation-defined bounds, asynchronously wait for an implementation defined amount of time to pass. This wait allows the implementation to model the overall pointer move as a series of small movements occurring at an implementation defined rate (e.g. one movement per vsync). Let width be equal to action object 's width property. Let height be equal to action object 's height property. Let pressure be equal to action object 's pressure property. Let tangentialPressure be equal to action object 's tangentialPressure property. Let tiltX be equal to action object 's tiltX property. Let tiltY be equal to action object 's tiltY property. Let twist be equal to action object 's twist property. Let altitudeAngle be equal to action object 's altitudeAngle property. Let azimuthAngle be equal to action object 's azimuthAngle property. Perform a pointer move with arguments source , global key state , duration , start x , start y , x , y , width , height , pressure , tangentialPressure , tiltX , tiltY , twist , altitudeAngle , azimuthAngle . Return success with data null . To perform a pointer move given source , global key state , duration , start x , start y , target x , target y , width , height , pressure , tangentialPressure , tiltX , tiltY , twist , altitudeAngle , and azimuthAngle : Let time delta be the time since the beginning of the current tick , measured in milliseconds on a monotonic clock. Let duration ratio be the ratio of time delta and duration , if duration is greater than 0, or 1 otherwise. If duration ratio is 1, or close enough to 1 that the implementation will not further subdivide the move action, let last be true. Otherwise let last be false . If last is true, let x equal 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 an approximation to duration ratio × ( target y - start y ) + start y . Let current x equal the x property of input state . Let current y equal the y property of input state . If x is not equal to current x or y is not equal to current y , run the following steps: Let buttons be equal to input state's buttons property. Perform implementation-specific action dispatch steps on browsing context equivalent to moving the pointer with pointerId equal to input source 's pointerId, having type pointerType from viewport x coordinate current x , viewport y coordinate current y to viewport x coordinate x and viewport y coordinate y , width , height , pressure , tangentialPressure , tiltX , tiltY , twist , altitudeAngle , azimuthAngle , with buttons buttons depressed, in accordance with the requirements of [ UI-EVENTS ] and [ POINTER-EVENTS ]. The generated events must set ctrlKey , shiftKey , altKey , and metaKey equal to the corresponding items in global key state . Type specific properties for the pointer that are not exposed through the WebDriver API must be set to the default value specified for hardware that doesn't support that property. In the case where the pointerType is " pen " or " touch ", and buttons is empty, this may be a no-op. For a pointer of type " mouse " this will always produce events including at least a pointerMove event. Let input state 's x property equal x and y property equal y . If last is true, return. Run the following substeps in parallel : Note This algorithm may trigger multiple events spread across some duration. Parallelism is applied intentionally in order to manage the scheduling of these events relative to the events triggered by other actions in the same tick. The initial pointer movement is performed synchronously. This ensures determinism in the sequence of the first event triggered by each action in the tick. Subsequent movements (if any) are performed asynchronously. This allows events from two pointerMove actions in the tick to be interspersed. Asynchronously wait for an implementation defined amount of time to pass. This wait allows the implementation to model the overall pointer move as a series of small movements occurring at an implementation defined rate (e.g. one movement per vsync). Perform a pointer move with arguments input state , duration , start x , start y , target x , target y . To dispatch a pointerCancel action given action object , source , global key state , tick duration , browsing context , and actions options : Perform implementation-specific action dispatch steps on browsing context equivalent to cancelling the any action of the pointer with pointerId equal to source 's pointerId item. having type pointerType , in accordance with the requirements of [ UI-EVENTS ] and [ POINTER-EVENTS ]. Return success with data null . 15.6.4 Wheel actions To dispatch a scroll action given action object , source , global key state , tick duration , browsing context , and actions options : Let x offset be equal to the x property of action object . Let y offset be equal to the y property of action object . Let origin be equal to the origin property of action object . Let ( x , y ) be the result of trying to get coordinates relative to an origin with source , x offset , y offset , origin , browsing context , and actions options . If x is less than 0 or greater than the width of the viewport in CSS pixels , then return error with error code move target out of bounds . If y is less than 0 or greater than the height of the viewport in CSS pixels , then return error with error code move target out of bounds . Let delta x be equal to the deltaX property of action object . Let delta y be equal to the deltaY property of action object . Let duration be equal to action object 's duration property if it is not undefined , or tick duration otherwise. If duration is greater than 0 and inside any implementation-defined bounds, asynchronously wait for an implementation defined amount of time to pass. This wait allows the implementation to model the overall wheel scroll as a series of small scroll occurring at an implementation defined rate (e.g. one scroll per vsync). Perform a scroll with arguments global key state , duration , x , y , delta x , delta y , 0 , 0 . Return success with data null . To perform a scroll given duration , x , y , target delta x , target delta y , current delta x and current delta y : Let time delta be the time since the beginning of the current tick , measured in milliseconds on a monotonic clock. Let duration ratio be the ratio of time delta and duration , if duration is greater than 0, or 1 otherwise. If duration ratio is 1, or close enough to 1 that the implementation will not further subdivide the move action, let last be true. Otherwise let last be false . If last is true, let delta x equal target delta x - current delta x and delta y equal target delta y - current delta y . Otherwise let delta x equal an approximation to duration ratio × target delta x - current delta x , and delta y equal an approximation to duration ratio × target delta y - current delta y . If delta x is not equal to 0 or delta y is not equal to 0 , run the following steps: Perform implementation-specific action dispatch steps on browsing context equivalent to wheel scroll at viewport x coordinate x , viewport y coordinate y , deltaX value delta x , deltaY value delta y , in accordance with the requirements of [ UI-EVENTS ]. The generated events must set ctrlKey , shiftKey , altKey , and metaKey equal to the corresponding items in global key state . Let current delta x property equal delta x + current delta x and current delta y property equal delta y + current delta y . If last is true, return. Run the following substeps in parallel : Note This algorithm may trigger multiple events spread across some duration. Parallelism is applied intentionally in order to manage the scheduling of these events relative to the events triggered by other actions in the same tick. The initial scroll is performed synchronously. This ensures determinism in the sequence of the first event triggered by each action in the tick. Subsequent scrolls (if any) are performed asynchronously. This allows events from two scroll actions in the tick to be interspersed. Asynchronously wait for an implementation defined amount of time to pass. This wait allows the implementation to model the overall scroll as a series of small scrolls occurring at an implementation defined rate (e.g. one scroll per vsync). Perform a scroll with arguments duration , x , y , target delta x , target delta y , current delta x , current delta y . 15.7 Perform Actions HTTP Method URI Template POST /session/{ session id }/actions The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let input state be the result of get the input state with session and session 's current top-level browsing context . Let actions options be a new actions options with the is element origin steps set to represents a web element , and the get element origin steps set to get a WebElement origin . Let actions by tick be the result of trying to extract an action sequence with input state , parameters , and actions options . Dispatch actions with input state , actions by tick , current browsing context , and actions options . If this results in an error return that error. Return success with data null . 15.8 Release Actions HTTP Method URI Template DELETE /session/{ session id }/actions Note The Release Actions command is used to release all the keys and pointer buttons that are currently depressed. This causes events to be fired as if the state was released by an explicit series of actions. It also clears all the internal state of the virtual devices. The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let input state be the result of get the input state with session and current top-level browsing context . Let actions options be a new actions options with the is element origin steps set to represents a web element , and the get element origin steps set to get a WebElement origin . Wait for an action queue token with input state . Let undo actions be input state 's input cancel list in reverse order. Try to dispatch actions with input state , undo actions , current browsing context , and actions options . Reset the input state with session and session 's current top-level browsing context . Return success with data null . 16. User prompts This chapter describes interaction with various types of user prompts . The common denominator for user prompts is that they are modal windows requiring users to interact with them before the event loop is unpaused and control is returned to session 's current top-level browsing context . By default user prompts are not handled automatically unless a user prompt handler has been defined. When a user prompt appears, it is the task of the subsequent command to handle it. If the subsequent requested command is not one listed in this chapter, an unexpected alert open error will be returned. Whenever active sessions is a list containing exactly one item, and that item is a HTTP session , but is not a BiDi session , then in the steps to fire beforeunload , implementations must act as if showing an unload prompt is likely to be annoying, deceptive, or pointless. Note This means that beforeunload prompts are never shown when there's an active HTTP-only session. A user prompt has an associated user prompt message that is the string message shown to the user, or null if the message length is 0 . To get the active user prompt given browsing context: Let agent be browsing context 's active document 's relevant agent . If agent 's event loop is not currently paused , return null. Return the user prompt which handles the input required to meet the condition passed when event loop was paused . The current user prompt is the result of get the active user prompt with current browsing context . To dismiss a user prompt , act as if the user clicked the Cancel button on that prompt, if present, or otherwise accept the prompt. To accept a user prompt , act as if the user clicked the OK button on that prompt. 16.1 User Prompt Handler A remote end has a user prompt handler which defines how a WebDriver session will react when a user prompt is displayed. It is either null or a map between strings and prompt handler configuration values. Initially it is null. A prompt handler configuration is a struct with two items; a handler , which is a string, and a notify , which is a boolean. To serialize a prompt handler configuration given configuration : Let serialized be configuration 's handler . If «" dismiss ", " accept "» contains serialized , and configuration 's notify is true, append " and notify " to serialized . Return serialized . The known prompt handlers are: Handler key Description (non-normative). " dismiss " All simple dialogs encountered should be dismissed . " accept " All simple dialogs encountered should be accepted . " dismiss and notify " All simple dialogs encountered should be dismissed , and an error returned that the dialog was handled. " accept and notify " All simple dialogs encountered should be accepted , and an error returned that the dialog was handled. " ignore " All simple dialogs encountered should be left to the user to handle. The valid prompt types are «" alert ", " beforeUnload ", " confirm ", " default ", " file ", " prompt "». Note The " default " type represents a fallback when no specific handler is defined for a given prompt type, including the " beforeUnload " prompt type. It can only be set if the unhandled prompt behavior is a map which contains " default ". For HTTP-only sessions setting unhandled prompt behavior as a string value, the value will be assigned to the internal type " fallbackDefault ". The " fallbackDefault " value is not used for the " beforeUnload " prompt type, instead it falls back to the " accept " handler. This is because HTTP-only sessions do not allow the " beforeUnload " handler to be customized, and enabling other protocols isn't expected to change the user prompt handling as a side effect. Note The " file " prompt type is respected only in [ WebDriver-BiDi ] sessions. To deserialize as an unhandled prompt behavior given argument value : Set value to the result of converting a JSON-derived JavaScript value to an Infra value with value . If value is not a string, an implementation that does not also support [ WebDriver-BiDi ] may return error with error code invalid argument . Note This is to avoid [ WebDriver-BiDi ] monkey-patching the current spec. Let is string value be false. If value is a string set value to the map «[" fallbackDefault " → value ]» and set is string value to true. If value is not a map return error with error code invalid argument . Let user prompt handler be an empty map . For each prompt type → handler in value : If is string value is false and valid prompt types does not contain prompt type return error with error code invalid argument . If known prompt handlers does not contain an entry with handler key handler return error with error code invalid argument . Let notify be false. If handler is " accept and notify ", set handler to " accept " and notify to true. If handler is " dismiss and notify ", set handler to " dismiss " and notify to true. If handler is " ignore ", set notify to true. Let configuration be a prompt handler configuration with handler handler and notify notify . Set user prompt handler [ prompt type ] to configuration . Return success with data user prompt handler . To check user prompt handler matches given requested prompt handler : If the user prompt handler is null, return true. For each request prompt type → request handler in requested prompt handler : If the user prompt handler contains request prompt type : If the requested prompt handler 's handler is not equal to the user prompt handler 's handler , return false. Return true Note This does not check the requested prompt handler 's notify matches the handler , because the notify component only affects the HTTP session , if any. To update the user prompt handler given requested prompt handler : If the user prompt handler is null, set the user prompt handler to an empty map. For each request prompt type → request handler in requested prompt handler : Set user prompt handler [ request prompt type ] to request handler . To serialize the user prompt handler : If the user prompt handler is null, return " dismiss and notify ". If the user prompt handler has size 1, and user prompt handler contains " fallbackDefault ", return the result of serialize a prompt handler configuration with user prompt handler [" fallbackDefault "]. Let serialized be an empty map . For each key → value of user prompt handler : Set serialized [ key ] to serialize a prompt handler configuration with value . Return convert an Infra value to a JSON-compatible JavaScript value with serialized . An annotated unexpected alert open error is an error with error code unexpected alert open and an optional error data dictionary with the following entries: " text " The current user prompt 's message . To get the prompt handler type : If the user prompt handler is null, let handlers be an empty map. Otherwise let handlers be user prompt handler . If handlers contains type return handlers [ type ]. If handlers contains " default " return handlers [" default "]. If type is " beforeUnload ", return a prompt handler configuration with handler " accept " and notify false. If handlers contains " fallbackDefault " return handlers [" fallbackDefault "]. Return a prompt handler configuration with handler " dismiss " and notify true. To handle any user prompts : If the current browsing context is not blocked by a dialog return success . Let type be " default ". If the current user prompt is an alert dialog, set type to " alert ". Otherwise, if the current user prompt is a beforeunload dialog, set type to " beforeUnload ". Otherwise, if the current user prompt is a confirm dialog, set type to " confirm ". Otherwise, if the current user prompt is a prompt dialog, set type to " prompt ". Let handler be get the prompt handler with type . Perform the following substeps based on handler 's handler : " accept " Accept the current user prompt . " dismiss " Dismiss the current user prompt . " ignore " Do nothing. If handler 's notify is true, return annotated unexpected alert open error . Return success . Example 12 When returning an error with unexpected alert open , a remote end may choose to return the user prompt message as part of an additional " data " Object on the error representation : { "error": "unexpected alert open" , "message" : "implementation defined" , "stacktrace" : "" , "data" : { " text ": "the text from the alert" } } 16.2 Dismiss Alert HTTP Method URI Template POST /session/{ session id }/alert/dismiss Note The Dismiss Alert command dismisses a simple dialog if present . A request to dismiss an alert user prompt , which may not necessarily have a dismiss button, has the same effect as accepting it. The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . If the current user prompt is null, return error with error code no such alert . Dismiss the current user prompt . Return success with data null . 16.3 Accept Alert HTTP Method URI Template POST /session/{ session id }/alert/accept The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . If the current user prompt is null, return error with error code no such alert . Accept the current user prompt . Return success with data null . 16.4 Get Alert Text HTTP Method URI Template GET /session/{ session id }/alert/text The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . If the current user prompt is null, return error with error code no such alert . Let message be the text message associated with the current user prompt , or otherwise be null . Return success with data message . 16.5 Send Alert Text HTTP Method URI Template POST /session/{ session id }/alert/text Note The Send Alert Text command sets the text field of a window. prompt user prompt to the given value. The remote end steps , given session , URL variables and parameters are: Let text be the result of getting the property " text " from parameters . If text is not a String , return error with error code invalid argument . If session 's current top-level browsing context is no longer open , return error with error code no such window . If the current user prompt is null, return error with error code no such alert . Run the substeps for the API that created the current user prompt : window.alert window.confirm Return error with error code element not interactable . window.prompt Do nothing. Otherwise Return error with error code unsupported operation . Perform user agent dependent steps to set the value of current user prompt 's text field to text . Return success with data null . 17. Screen capture Screenshots are a mechanism for providing additional visual diagnostic information. They work by dumping a snapshot of the visual viewport 's framebuffer as a lossless PNG image. It is returned to the local end as a Base64 encoded string. WebDriver provides the Take Screenshot command to capture the top-level browsing context 's visual viewport , and a command Take Element Screenshot for doing the same with the visible region of an element 's bounding rectangle after it has been scrolled into view . In order to draw a bounding box from the framebuffer , given a rectangle : If either the visual viewport 's width or height is 0 CSS pixels , return error with error code unable to capture screen . Let paint width be the visual viewport 's width – min ( rectangle x coordinate , rectangle x coordinate + rectangle width dimension ). Let paint height be the visual viewport 's height – min ( rectangle y coordinate , rectangle y coordinate + rectangle height dimension ). Let canvas be a new canvas element, and set its width and height to paint width and paint height , respectively. Let context , a canvas context mode , be the result of invoking the 2D context creation algorithm given canvas as the target. Complete implementation specific steps equivalent to drawing the region of the framebuffer specified by the following coordinates onto context : X coordinate rectangle x coordinate Y coordinate rectangle y coordinate Width paint width Height paint height Return success with canvas . To encode a canvas as Base64 a canvas element : If the canvas element's bitmap's origin-clean flag is set to false, return error with error code unable to capture screen . If the canvas element's bitmap has no pixels (i.e. either its horizontal dimension or vertical dimension is zero) then return error with error code unable to capture screen . Let file be a serialization of the canvas element's bitmap as a file , using " image/png " as an argument. Let data URL be a data: URL representing file . [ RFC2397 ] Let index be the index of " , " in data URL . Let encoded string be a substring of data URL using ( index + 1) as the start argument. Return success with data encoded string . 17.1 Take Screenshot HTTP Method URI Template GET /session/{ session id }/screenshot The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . When the user agent is next to run the animation frame callbacks : Let root rect be session 's current top-level browsing context 's document element 's rectangle . Let screenshot result be the result of trying to call draw a bounding box from the framebuffer , given root rect as an argument. Let canvas be a canvas element of screenshot result 's data. Let encoding result be the result of trying encoding a canvas as Base64 canvas . Let encoded string be encoding result 's data. Return success with data encoded string . 17.2 Take Element Screenshot HTTP Method URI Template GET /session/{ session id }/element/{ element id }/screenshot Note The Take Element Screenshot command takes a screenshot of the visible region encompassed by the bounding rectangle of an element . The remote end steps , given session , URL variables and parameters are: If session 's current browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let element be the result of trying to get a known element with session and URL variables [" element id "]. Scroll into view the element . When the user agent is next to run the animation frame callbacks : Let element rect be element 's rectangle . Let screenshot result be the result of trying to call draw a bounding box from the framebuffer , given element rect as an argument. Let canvas be a canvas element of screenshot result 's data. Let encoding result be the result of trying encoding a canvas as Base64 canvas . Let encoded string be encoding result 's data. Return success with data encoded string . 18. 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 encoded string containing a PDF representation of the paginated document. When required to parse a page range with arguments pageRanges and totalPages , an implementation must: Let pages be an empty Set For each range in pageRanges , run the following steps: If range is not either a Number or a String , return error with error code invalid argument . If range is a Number : If range is not an integer or is less than 0, return error with error code invalid argument Append range to pages Otherwise: Let rangeParts be the result of splitting range on a " - " character. If rangeParts has fewer than 1 or more than 2 elements, return error with error code invalid argument . If rangeParts has one element, append the result of trying to parse as an integer the first element of rangeParts to pages . Otherwise: If the first element of rangeParts is equivalent to an empty string , let lowerBound be 1 . Otherwise let lowerBound be the result of trying to parse as an integer the first element of rangeParts . If the second element of rangeParts is equivalent to an empty string let upperBound be totalPages . Otherwise let upperBound be the result of trying to parse as an integer the second element of rangeParts . If lowerBound is greater than upperBound , return error with error code invalid argument . Append all integers in the inclusive range lowerBound to upperBound to pages Return success with data pages . A String is equivalent to an empty string if it has zero length after removing all whitespace characters. When required to parse as an integer with argument input an implementation must: Let stripped be the result of stripping all leading and trailing whitespace characters from input . If stripped has zero length, return error with status invalid argument . If stripped contains any characters outside the range U+0030 - U+0039 (i.e. 0 - 9) inclusive, return error with status invalid argument . Let output be the result of calling parseInt with string stripped and radix 10 . Return success with data output . 18.1 Print Page HTTP Method URI Template POST /session/{ session id }/print The remote end steps , given session , URL variables and parameters are: If session 's current top-level browsing context is no longer open , return error with error code no such window . Try to handle any user prompts with session . Let orientation be the result of getting a property with default named " orientation " and with default " portrait " from parameters . If orientation is not a String or does not have one of the values " landscape " or " portrait ", return error with error code invalid argument . Let scale be the result of getting a property with default named " scale " and with default 1 from parameters . If scale is not a Number , or is less than 0.1 or greater than 2 return error with error code invalid argument . Let background be the result of getting a property with default named " background " and with default false from parameters . If background is not a Boolean return error with error code invalid argument . Let page be the result of getting a property with default named " page " and with a default of an empty Object from parameters . Let pageWidth be the result of getting a property with default named " width " and with a default of 21.59 from page . Let pageHeight be the result of getting a property with default named " height " and with a default of 27.94 from page . If either of pageWidth or pageHeight is not a Number , or is less than (2.54 / 72) , return error with error code invalid argument . Note The minimum page size is 1 point, which is (2.54 / 72) as per absolute lengths . Let margin be the result of getting a property with default named " margin " and with a default of an empty Object from parameters . Let marginTop be the result of getting a property with default named " top " and with a default of 1 from margin . Let marginBottom be the result of getting a property with default named " bottom " and with a default of 1 from margin . Let marginLeft be the result of getting a property with default named " left " and with a default of 1 from margin . Let marginRight be the result of getting a property with default named " right " and with a default of 1 from margin . If any of marginTop , marginBottom , marginLeft , or marginRight is not a Number , or is less then 0, return error with error code invalid argument . Let shrinkToFit be the result of getting a property with default named " shrinkToFit " and with default true from parameters . If shrinkToFit is not a Boolean return error with error code invalid argument . Let pageRanges be the result of getting a property with default named " pageRanges " from parameters with default of an empty Array . If pageRanges is not an Array return error with error code invalid argument . When the user agent is next to run the animation frame callbacks , let pdfData be the result of trying to take UA-specific steps to generate a paginated representation of session 's current browsing context , with the CSS media type set to print , encoded as a PDF, with the following paper settings: Property Value Width in cm pageWidth if orientation is " portrait " otherwise pageHeight Height in cm pageHeight if orientation is " portrait " otherwise pageWidth Top margin, in cm marginTop Bottom margin, in cm marginBottom Left margin, in cm marginLeft Right margin, in cm marginRight In addition, the following formatting hints should be applied by the UA: If scale is not equal to 1 Zoom the size of the content by a factor scale If background is false Suppress output of background images If shrinkToFit is true Resize the content to match the page width, overriding any page width specified in the content If pageRanges is not an empty Array , Let pages be the result of trying to parse a page range with arguments pageRanges and the number of pages contained in pdfData , then remove any pages from pdfData whose one-based index is not contained in pages Let encoding result be the result of calling Base64 Encode on pdfData . Let encoded string be encoding result 's data. Return success with data encoded string 19. Appendices This section is non-normative. 19.1 External Specifications Note The list is not exhaustive and might not be up to date. The following external specifications define additional WebDriver modules: Compute Pressure Custom Scheme Handlers Device Posture API Federated Credential Management API Generic Sensor API Global Privacy Control Permissions Reporting API Secure Payment Confirmation Storage Access API Web Authentication A. Privacy It is advisable that remote ends create a new profile when creating a new session . This prevents potentially sensitive session data from being accessible to new sessions , ensuring both privacy and preventing state from bleeding through to the next session. B. Security A user agent can rely on a command-line flag or a configuration option to test whether to enable WebDriver, or alternatively make the user agent initiate or confirm the connection through a privileged content document or control widget, in case the user agent does not directly implement the HTTP endpoints. It is strongly suggested that user agents require users to take explicit action to enable WebDriver, and that WebDriver remains disabled in publicly consumed versions of the user agent. To prevent arbitrary machines on the network from connecting and creating sessions , it is suggested that only connections from loopback devices are allowed by default. The remote end can include a configuration option to limit the accepted IP range allowed to connect and make requests. The default setting for this might be to limit connections to the IPv4 localhost CIDR range 127.0.0.0/8 and the IPv6 localhost address ::1 . [ RFC4632 ] It is also suggested that user agents make an effort to visually distinguish a user agent session that is under control of WebDriver from those used for normal browsing sessions. This can be done through a browser chrome element such as a “door hanger”, colorful decoration of the OS window, or some widget element that is prevalent in the window so that it easy to identify automation windows. C. Element displayedness Although WebDriver does not define a primitive to ascertain the visibility of an element in the viewport , we acknowledge that it is an important feature for many users. Here we include a recommended approach which will give a simplified approximation of an element 's visibility, but please note that it relies only on tree-traversal, and only covers a subset of visibility checks. The visibility of an element is guided by what is perceptually visible to the human eye. In this context, an element 's displayedness does not relate to the visibility or display style properties. The approach recommended to implementors to ascertain an element 's visibility was originally developed by the Selenium project, and is based on crude approximations about an element 's nature and relationship in the tree. An element is in general to be considered visible if any part of it is drawn on the canvas within the boundaries of the viewport. The element displayed state is a boolean representing whether an element is currently visible. To get the element displayed state using the bot.dom.isShown Selenium atoms, given element : Let function be the bot.dom.isShown function. Let result be the result of calling function 's [[Call]] internal method with arguments null and element . If this raises an exception, return an error with error code unknown error . Return success with data result . The element displayed state is typically exposed as an endpoint for GET requests with a URI Template of /session/{session id}/element/{element id}/displayed . D. Acknowledgements There have been a lot of people that have helped make browser automation possible over the years and thereby furthered the goals of this standard. In particular, thanks goes to the Selenium Open Source community, without which this standard would never have been possible. This standard is authored by
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.
The work is coordinated and edited by David Burns and Simon Stewart . Thanks to 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 for proofreading and suggesting areas for improvement. E. Index This specification relies on several other underlying specifications. ARIA and related specifications The following terms are defined in the Accessible Rich Internet Applications (WAI-ARIA) 1.2 specification: [ wai-aria-1.2 ] WAI-ARIA role The following terms are defined in the Accessible Name and Description Computation 1.1 specification: [ accname-1.1 ] Accessible Name Accessible Name and Description Computation Web App Security The following terms are defined in the Content Security Policy Level 3 specification: [ CSP3 ] Directives Should block navigation response Base16, Base32, and Base64 Data Encodings The following terms are defined in The Base16, Base32, and Base64 Data Encodings specification: [ RFC4648 ] Base64 Encode DOM The following terms are defined in the DOM Parsing and Serialization specification: [ DOM-PARSING ] fragment serializing algorithm innerHTML IDL attribute serializeToString method The following attributes are defined in the UI Events specification: [ UI-EVENTS ] Activation trigger click event mouseDown event mouseMove event mouseOver event mouseUp event The following attributes are defined in the UI Events Code specification: [ UIEVENTS-KEY ] Keyboard modifier keys ECMAScript The following terms are defined in the ECMAScript Language Specification: [ ECMA-262 ] Iterable Completion CreateResolvingFunctions Directive prologue Early error Function FunctionBody FunctionCreate Get Global environment IsCallable Own property Promise PromiseResolve Type Use strict directive parseInt realm This specification also presumes that you are able to call some of the internal methods from the ECMAScript Language Specification [ ECMAScript ]: [[Call]] [[GetOwnProperty]] [[GetProperty]] Index of [[Put]] Substring The ECMAScript Language Specification also defines the following types, values, and operations that are used throughout this specification: Array Boolean type List maximum safe integer null Number Object parse String stringify ToInteger Undefined Encoding The following terms are defined in the WHATWG Encoding specification: [ ENCODING ] UTF-8 Encode Fetch The following terms are defined in the WHATWG Fetch specification: [ FETCH ] Body default User-Agent value Header Header Name Header Value Local scheme Method Response Request Set Header HTTP Status Status message Fullscreen The following terms are defined in the WHATWG Fullscreen specification: [ FULLSCREEN ] Fullscreen an element Fullscreen is supported fully exit fullscreen HTML The following terms are defined in the HTML specification: [ HTML ] 2D context creation algorithm A serialization of the bitmap as a file API value active document Active element being the activeElement attribute on Document Associated window Boolean attribute Browsing context Browsing context group Candidate for constraint validation Canvas context mode Checkbox state Checkedness Child browsing context Close a browsing context Cookie-averse Document object Dirty checkedness flag Dirty value flag Actually disabled Document readiness Element contexts Enumerated attribute Event loop File upload state Focusing steps Focusable area [[GetOwnProperty]] of a Window object Selected Files Joint session history Mature navigation. Mutable Navigate Origin-clean An overridden reload Parent browsing context HTML Pause Prompt to unload a document Radio Button state Raw value Refresh state pragma directive Reset algorithm Resettable element Run the animation frame callbacks Satisfies its constraints Selectedness Simple dialogs Steps to fire beforeunload Suffering from bad input Traverse the history by a delta unfocusing steps User prompt Value Value mode flag Value sanitization algorithm Window object Window open steps WindowProxy exotic object setSelectionRange window. confirm window. alert window. prompt The HTML specification also defines states of the input element: Color state Date state Email state Local Date and Time state Month state Number state Password state Range state Telephone state Text and Search state Time state URL state Week state The HTML specification also defines a range of different attributes: Checked multiple attribute The HTML Editing APIs specification defines the following terms: [ EDITING ] Content editable Editing host The following events are also defined in the HTML specification: change DOMContentLoaded input load pageHide pageShow The “data” URL scheme specification defines the following terms: [ RFC2397 ] data: URL HTTP and related specifications To be HTTP compliant , it is supposed that the implementation supports the relevant subsets of [ RFC7230 ], [ RFC7231 ], [ RFC7232 ], [ RFC7234 ], and [ RFC7235 ]. The following terms are defined in the Cookie specification: [ RFC6265 ] Compute cookie-string Cookie Cookie store Receives a cookie The following terms are defined in the Same Site Cookie specification: [ RFC6265bis ] Cookie Lifetime Limits Lax Strict The following terms are defined in the Hypertext Transfer Protocol (HTTP) Status Code Registry: Status code registry Infra The following terms are defined in the Infra specification: [ INFRA ] convert an Infra value to a JSON-compatible JavaScript value converting a JSON-derived JavaScript value to an Infra value The following terms are defined in the Netscape Navigator Proxy Auto-Config File Format: Proxy autoconfiguration The specification uses URI Templates . [ URI-TEMPLATE ] Interaction The following terms are defined in the Page Visibility Specification [ PAGE-VISIBILITY ] Visibility state hidden Visibility state being the visibilityState attribute on Document Visibility state visible Selenium The following functions are defined within the Selenium project, at revision 775cfb33b193eb8832cd5488f298006f45254685 . bot.dom.getVisibleText bot.dom.isShown Styling The following terms are defined in the CSS Values and Units Module Level 3 specification: [ CSS3-VALUES ] absolute lengths CSS pixels The following properties are defined in the CSS Basic Box Model Level 3 specification: [ CSS3-BOX ] The visibility property The following terms are defined in the CSS Device Adaptation Module Level 1 specification: [ CSS-DEVICE-ADAPT ] Initial viewport , sometimes here referred to as the viewport . The following properties are defined in the CSS Display Module Level 3 specification: [ CSS3-DISPLAY ] The display property The following terms are defined in the Geometry Interfaces Module Level 1 specification: [ GEOMETRY-1 ] Rectangle Rectangle height dimension Rectangle width dimension Rectangle x coordinate Rectangle y coordinate The following terms are defined in the CSS Cascading and Inheritance Level 4 specification: [ CSS-CASCADE-4 ] Computed value The following terms are defined in the CSS Object Model: [ CSSOM ]: Resolved value The following functions are defined in the CSSOM View Module: [ CSSOM-VIEW ]: Elements from point as elementsFromPoint() innerHeight innerWidth moveTo(x, y) outerHeight outerWidth screenX screenY scrollX scrollY scrollIntoView ScrollIntoViewOptions Logical scroll position " block " Logical scroll position " inline " visual viewport The following terms are defined in [ mediaqueries-4 ]: media type SOCKS Proxy: The following terms are defined in the standard: [ RFC1928 ] SOCKS Proxy Unicode The following terms are defined in the standard: [ Unicode ] Code Point Extended grapheme cluster Unicode Standard Annex #29 The following terms are defined in the standard: [ UAX29 ] Grapheme cluster boundaries Unicode Standard Annex #44 The following terms are defined in the standard: [ UAX44 ] Unicode character property URLs The following terms are defined in the WHATWG URL standard: [ URL ] Absolute URL Absolute URL with fragment Default port Domain Host Includes credentials Is special Path-absolute URL Path Port URL URL serializer Web IDL The IDL fragments in this specification must be interpreted as required for conforming IDL fragments, as described in the Web IDL specification. [ WEBIDL ] DOMException Supported property indices SyntaxError this Promises Guide The following terms are defined in the Promises Guide. [ PROMISES-GUIDE ] Promise-calling XPATH The following terms are defined in the Document Object Model XPath standard [ XPATH ] evaluate ORDERED_NODE_SNAPSHOT_TYPE snapshotItem XPathException E.1 Terms defined by this specification 2D context creation algorithm §E. A serialization of the bitmap as a file §E. absolute lengths §E. Absolute URL §E. Absolute URL with fragment §E. accept §16. Accept Alert §16.3 accept insecure TLS §8.1 Accept insecure TLS certificates §7. Accessible Name §E. Accessible Name and Description Computation §E. action object §15.5 Actions §15. actions options §15.1 actions queue §15.3 Activation trigger §E. active document §E. Active element §E. active HTTP sessions §8. active sessions §8. Actually disabled §E. add an input source §15.3 Add Cookie §14.3 additional capability deserialization algorithm §6.7 additional WebDriver capabilities §6.7 all associated cookies §14. An overridden reload §E. annotated unexpected alert open error §16.1 API value §E. Array §E. associated session §8. Associated window §E. Back §10.3 Base64 Encode §E. Body §E. Boolean §E. Boolean attribute §E. bot.dom.getVisibleText §E. bot.dom.isShown §E. browser chrome §3. browser chrome elements §3. Browsing context §E. Browsing context group §E. browsing context group node map §12. browsing context input state map §8. calculate the absolute position §12.4 [[Call]] internal slot for Function §E. Candidate for constraint validation §E. Canvas context mode §E. capabilities §7. capability name §6.7 change §E. check user prompt handler matches §16.1 Checkbox §E. Checked §E. Checkedness §E. Child browsing context §E. clear a content editable element §12.5.2 clear a resettable element §12.5.2 clear algorithm §12.5 clear the modifier key state §12.5.3 click event §E. clone an object §13.2 Close a browsing context §E. close the session §8.1 Close Window §11.2 code §15.6.2 Code Point §E. collection §13.2 Color state §E. command §6.2 Completion §E. Compute cookie-string §E. compute the tick duration §15.6 Computed value §E. connection §6.3 container §12.4 Content editable §E. convert an Infra value to a JSON-compatible JavaScript value §E. converting a JSON-derived JavaScript value to an Infra value §E. Cookie §E. Cookie domain §14. Cookie expiry time §14. Cookie HTTP only §14. Cookie Lifetime Limits §E. Cookie name §14. Cookie path §14. Cookie same site §14. Cookie secure only §14. Cookie store §E. Cookie value §14. Cookie-averse Document object §E. create a cookie §14. create a key input source §15.2.2 create a null input source §15.2.1 create a pointer input source §15.2.3 create a session §8.1 create a wheel input source §15.2.4 create an input source §15.2 create an input state §15.3 CreateResolvingFunctions §E. CSS pixels §E. CSS Selector §12.3.1.1 current browsing context §8. current parent browsing context §8. current top-level browsing context §8. current user prompt §16. data: URL §E. Date state §E. default pointer parameters §15.5 Default port §E. default User-Agent value §E. Delete All Cookies §14.5 Delete Cookie §14.4 delete cookies §14. Delete Session §8.3 deserialize a shadow root §12.2 deserialize a web element §12. deserialize a web frame §11. deserialize a web window §11. deserialize as a page load strategy §10. deserialize as a proxy §7.1 deserialize as an unhandled prompt behavior §16.1 deserialize as timeouts configuration §9. detached shadow root §6.6 Directive prologue §E. Directives §E. Dirty checkedness flag §E. Dirty value flag §E. disabled §12.1 dismiss §16. Dismiss Alert §16.2 dispatch a composition event §12.5.3 dispatch a keyDown action §15.6.2 dispatch a keyUp action §15.6.2 dispatch a list of actions §15.6 dispatch a pause action §15.6.1 dispatch a pointerCancel action §15.6.3 dispatch a pointerDown action §15.6.3 dispatch a pointerMove action §15.6.3 dispatch a pointerUp action §15.6.3 dispatch a scroll action §15.6.4 dispatch actions §15.6 dispatch actions for a string §12.5.3 dispatch actions inner §15.6 dispatch the events for a typeable string §12.5.3 dispatch tick actions §15.6 display §E. Document readiness §E. Domain §E. DOMContentLoaded §E. DOMException §E. draw a bounding box from the framebuffer §17. eager §10. Early error §E. Editable §12. Editing host §E. Element Clear §12.5.2 Element Click §12.5.1 element click intercepted §6.6 Element contexts §E. element displayed state §C. element location strategy §12.3.1 element not interactable §6.6 Element Send Keys §12.5.3 Elements from point §E. Email state §E. encode a canvas as Base64 a canvas element §17. Endpoint node §5. Enumerated attribute §E. equivalent to an empty string §18. error §6.1 error code §6.6 error data §6.6 error response data §6.6 evaluate §E. Event loop §E. execute a function body §13.2 Execute Async Script §13.2.2 Execute Script §13.2.1 Extended grapheme cluster §E. extension capabilities §6.7 extension command URI Template §6.7 extension commands §6.7 extract an action sequence §15.5 extract the script arguments from a request §13.2 File upload state §E. find §12.3 Find Element §12.3.2 Find Element From Element §12.3.4 Find Element From Shadow Root §12.3.6 Find Elements §12.3.3 Find Elements From Element §12.3.5 Find Elements From Shadow Root §12.3.7 floor §3. Focusable area §E. Focusing steps §E. Forward §10.4 fragment serializing algorithm §E. Fullscreen an element §E. Fullscreen is supported §E. Fullscreen Window §11.8.5 Fullscreen window state §11.8 fully exit fullscreen §E. Function §E. FunctionBody §E. FunctionCreate §E. Generating a UUID §3. Get §E. get a known element §12. get a known shadow root §12.2 get a node §12. get a pointer id §15.3 get a WebElement origin §15.1 Get Active Element §12.3.8 Get Alert Text §16.4 Get All Cookies §14.1 get an input source §15.3 Get Computed Label §12.4.10 Get Computed Role §12.4.9 get coordinates relative to an origin §15.5 Get Current URL §10.2 Get Element Attribute §12.4.2 Get Element CSS Value §12.4.4 get element origin §15.1 Get Element Property §12.4.3 Get Element Rect §12.4.7 Get Element Shadow Root §12.3.9 Get Element Tag Name §12.4.6 Get Element Text §12.4.5 Get Named Cookie §14.2 get or create a node reference §12. get or create a shadow root reference §12.2 get or create a web element reference §12. get or create an input source §15.3 Get Page Source §13.1 get the active user prompt §16. get the global key state §15.3 get the input state §15.3 get the prompt handler §16.1 Get Timeouts §9.1 Get Title §10.6 Get Window Handle §11.1 Get Window Handles §11.4 Get Window Rect §11.8.1 [[GetOwnProperty]] internal slot for Object §E. [[GetOwnProperty]] of a Window object internal slot for §E. [[GetProperty]] internal slot for Object §E. getting a property §6.1 getting a property with default §6.1 Global environment §E. global key state §15.3 Grapheme cluster boundaries §E. handle any user prompts §16.1 handler §16.1 Handler key §16.1 has proxy configuration §8.1 Header §E. Header Name §E. Header Value §E. Host §E. host and optional port §7.1 HTML Pause §E. HTTP compliant §E. HTTP flag §8. HTTP session §8. HTTP Status §E. iconify the window §11.8 implicit wait timeout §9. in view §12.1 in-view center point §12.1 Includes credentials §E. Index of §E. initial value §3. Initial viewport §E. innerHeight §E. innerHTML IDL attribute §E. innerWidth §E. input §E. input cancel list §15.3 input id §15.2 input source §15.2 input state §15.3 input state map §15.3 insecure certificate §6.6 integer §3. interactable element §12.1 Intermediary node §5. internal JSON clone §13.2 invalid argument §6.6 invalid cookie domain §6.6 invalid element state §6.6 invalid selector §6.6 invalid session id §6.6 is detached §12.2 Is Element Enabled §12.4.8 is element origin §15.1 Is Element Selected §12.4.1 Is special §E. is stale §12. IsCallable §E. Iterable §E. javascript error §6.6 Joint session history §E. JSON clone §13.2 JSON deserialization §6.1 JSON deserialize §13.2 JSON serialization §6.1 key input source §15.2.2 key location §15.6.2 Keyboard modifier keys §E. keyboard-interactable element §12.1 keyDown §15.2.2 keyUp §15.2.2 known prompt handlers §16.1 Lax §E. Link Text §12.3.1.2 List §E. load §E. Local Date and Time state §E. Local end §5. Local scheme §E. Logical scroll position "block" §E. Logical scroll position "inline" §E. match a request §6.4 matched capability serialization algorithm §6.7 matching capabilities §7.2 Mature §E. max §3. maximize the window §11.8 Maximize Window §11.8.3 Maximized window state §11.8 maximum safe integer §E. media type §E. merging capabilities §7.2 Method §E. min §3. Minimize Window §11.8.4 Minimized window state §11.8 Month state §E. mouseDown event §E. mouseMove event §E. mouseOver event §E. mouseUp event §E. move target out of bounds §6.6 moveTo(x, y) §E. multiple attribute §E. Mutable §E. Mutable elements §12. Mutable form control elements §12. navigable seen nodes map §12. Navigate §E. Navigate To §10.1 NavigatorAutomationInformation interface §4. New Session §8.2 New Window §11.5 no longer open §11. no such alert §6.6 no such cookie §6.6 no such element §6.6 no such frame §6.6 no such shadow root §6.6 no such window §6.6 node id map §12. node reference is known §12. node types §5. non-typeable form control §12.5.3 none §10. normal §10. Normal window state §11.8 normalized key value §15.6.2 not in the same tree §12.4 notify §16.1 null §E. null input source §15.2.1 null key §12.5.3 Number §E. Number state §E. Object §E. obscured §12.1 ORDERED_NODE_SNAPSHOT_TYPE §E. Origin-clean §E. outerHeight §E. outerWidth §E. Own property §E. Page load strategy §7. page load timeout §9. page loading strategy §8. pageHide §E. pageShow §E. Parent browsing context §E. parse §E. parse a page range §18. parse as an integer §18. parseInt §E. Partial link text §12.3.1.3 Password state §E. Path §E. Path-absolute URL §E. pause §15.2.1 perform a pointer move §15.6.3 perform a scroll §15.6.4 Perform Actions §15.7 perform implementation-specific action dispatch steps §15.4 Platform name §7. pointer events disabled §12. pointer input source §15.2.3 pointer-interactable element §12.1 pointer-interactable paint tree §12.1 pointerCancel §15.2.3 pointerDown §15.2.3 pointerMove §15.2.3 pointerUp §15.2.3 Port §E. post-navigation checks §10. Print Page §18.1 process a key action §15.5 process a null action §15.5 process a pause action §15.5 process a pointer action §15.5 process a pointer move action §15.5 process a pointer up or pointer down action §15.5 process a wheel action §15.5 process an input source action sequence §15.5 process capabilities §7.2 process pointer parameters §15.5 Promise §E. Promise-calling §E. PromiseResolve §E. prompt handler configuration §16.1 Prompt to unload a document §E. Proxy autoconfiguration §E. proxy configuration §7.1 proxy configuration object §7.1 proxyType §7.1 [[Put]] internal slot for Object §E. Radio Button §E. Range state §E. Raw value §E. read bytes §6.3 read only §12. readiness state §5. realm §E. Receives a cookie §E. Rectangle §E. Rectangle height dimension §E. Rectangle width dimension §E. Rectangle x coordinate §E. Rectangle y coordinate §E. Refresh §10.5 Refresh state pragma directive §E. Release Actions §15.8 Remote end §5. remote end steps §6.2 remove an input source §15.3 represents a shadow root §12.2 represents a web element §12. represents a web frame §11. represents a web window §11. Request §E. request queue §8. Request routing §6.4 Reset algorithm §E. reset the input state §15.3 Resettable element §E. Resolved value §E. Response §E. restore the window §11.8 Run the animation frame callbacks §E. Satisfies its constraints §E. screenX §E. screenY §E. script timeout §9. script timeout error §6.6 scroll §15.2.4 scroll into view §12. scrollIntoView §E. ScrollIntoViewOptions §E. scrollX §E. scrollY §E. Selected Files §E. Selectedness §E. send a response §6.3 Send Alert Text §16.5 send an error §6.3 serialize a prompt handler configuration §16.1 serialize the timeouts configuration §9. serialize the user prompt handler §16.1 serialized cookie §14. serializeToString method §E. session §8. session configuration flags §8. session ID §8. session not created §6.6 session timeouts §8. Set Header §E. set the current browsing context §11. set the current top-level browsing context §11. Set Timeouts §9.2 Set Window Rect §11.8.2 setSelectionRange §E. Setting a property §6.1 shadow root §12.2 shadow root identifier §12.2 shadow root reference object §12.2 shifted character §15.6.2 shifted state §12.5.3 Should block navigation response §E. Simple dialogs §E. snapshotItem §E. SOCKS Proxy §E. stale element reference §6.6 start the timer §9. Status §8.4 Status code registry §E. Status message §E. Steps to fire beforeunload §E. Strict §E. strict file interactability §8. String §E. stringify §E. Substring §E. success §6.1 Suffering from bad input §E. Supported property indices §E. Switch To Frame §11.6 Switch To Parent Frame §11.7 Switch To Window §11.3 SyntaxError §E. table for cookie conversion §14. table of endpoints §6.5 table of location strategies §12.3.1 table of page load strategies §10. table of standard capabilities §7. Tag Name §12.3.1.4 Take Element Screenshot §17.2 Take Screenshot §17.1 Telephone state §E. Text and Search state §E. this §E. tick §15.4 Time state §E. timeout §6.6 timeout fired flag §9. timeouts configuration §9. timer §9. ToInteger §E. Traverse the history by a delta §E. trying §6.1 Type §E. typeable §12.5.3 unable to capture screen §6.6 unable to set cookie §6.6 Undefined §E. unexpected alert open §6.6 unfocusing steps §E. Unicode character property §E. Universally Unique Identifier (UUID) §3. Unix Epoch §3. unknown command §6.6 unknown error §6.6 unknown method §6.6 unsupported operation §6.6 update the user prompt handler §16.1 upstream §5. URI Templates §E. URL §E. URL prefix §6.4 URL serializer §E. URL state §E. Use strict directive §E. User prompt §E. user prompt handler §16.1 user prompt message §16. UTF-8 Encode §E. valid prompt types §16.1 validate capabilities §7.2 Value §E. Value mode flag §E. Value sanitization algorithm §E. visibility §E. Visibility state §E. Visibility state hidden §E. Visibility state visible §E. visual viewport §E. WAI-ARIA role §E. wait for an action queue token §15.6 wait for navigation to complete §10. Waiting asynchronously §15.4 weak map §12. web element §12. web element identifier §12. web element reference object §12. web frame §11. web frame identifier §11. web window §11. web window identifier §11. webdriver attribute for NavigatorAutomationInformation §4. definition of §4. WebDriver new session algorithms §6.7 WebDriver node id §12. webdriver-active flag §4. Week state §E. wheel input source §15.2.4 whitespace §12.4.5 Window §E. Window dimensioning/positioning §7. window handle §11. Window open steps §E. window state §11.8 window.alert §E. window.confirm §E. window.prompt §E. WindowProxy §E. WindowProxy reference object §11. WindowRect object §11.8 write bytes §6.3 XPath Selector §12.3.1.5 XPathException §E. E.2 Terms defined by reference [ CSSOM-VIEW ] defines the following: getBoundingClientRect() (for Element ) getClientRects() (for Element ) [ DOM ] defines the following: compareDocumentPosition() (for Node ) connected descendant (for tree ) document document element DOCUMENT_POSITION_DISCONNECTED (for Node ) DOMTokenList interface element Element interface event fire an event get an attribute by name getAttribute() (for Element ) getElementsByTagName() (for Element ) hasAttribute() (for Element ) HTMLCollection interface inclusive ancestor (for tree ) inclusive descendant (for tree ) isTrusted attribute (for Event ) Node interface node document (for Node ) NodeList interface querySelectorAll() (for ParentNode ) remove ShadowRoot interface tagName attribute (for Element ) textContent attribute (for Node ) type (for Document ) [ FILEAPI ] defines the following: FileList interface [ GEOMETRY-1 ] defines the following: DOMRect interface [ HTML ] defines the following: a element active browsing context (for navigable ) address element canvas element Clean up after running a callback Clean up after running script content navigable (for navigable container) datalist element frame element height attribute (for canvas element) HTMLAllCollection interface HTMLFormControlsCollection interface HTMLOptionsCollection interface iframe element in parallel navigable Navigator interface node navigable optgroup element option element output element paused Prepare to run a callback Prepare to run script readonly attribute (for input element) relevant agent relevant settings object select element textarea element title attribute (for Document ) top-level browsing contexts type attribute (for input element) width attribute (for canvas element) WorkerNavigator interface [ INFRA ] defines the following: abort when ASCII Lowercase contain (for list ) contains (for map ) continue (for iteration ) entry (for map ) getting the values (for map ) If aborted item (for struct ) length (for string ) map queue set Set (for map ) size (for map ) struct While (for iteration ) [ WEBDRIVER-BIDI ] defines the following: BiDi session [ WEBIDL ] defines the following: a new Promise reject resolve Permalink Referenced in: § 12.1 Interactability (2) (3) (4) § 17. Screen capture (2) Permalink Referenced in: § 12.1 Interactability (2) (3) (4) Permalink Referenced in: § 12.1 Interactability (2) Permalink Referenced in: § 8. Sessions Permalink Referenced in: § 8.1 Global State § 12.5.1 Element Click § 12.5.3 Element Send Keys Permalink Referenced in: § 14. Cookies (2) Permalink Referenced in: § 7.1 Proxy § 15.5 Processing actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 10.3 Back § 10.4 Forward § 11.8.2 Set Window Rect (2) Permalink Referenced in: § B. Security Permalink Referenced in: § 4. Interface § 8.1 Global State (2) Permalink exported Referenced in: § 4. Interface (2) Permalink exported Referenced in: Not referenced in this document. Permalink Referenced in: § 4. Interface Permalink exported Referenced in: § 5. Nodes (2) § 6. Protocol (2) § 6.3 Processing model § 6.7 Extensions § 7. Capabilities § 7.2 Processing capabilities (2) (3) § 8. Sessions § 10.1 Navigate To § 11. Contexts (2) § 12. Elements § 12.2 Shadow Roots § 15. Actions § 17. Screen capture § 18. Print Permalink Referenced in: § 5. Nodes (2) (3) (4) (5) (6) (7) (8) § 6. Protocol (2) (3) § 6.2 Commands (2) § 6.3 Processing model (2) (3) (4) (5) (6) (7) (8) § 6.4 Routing requests (2) (3) § 6.6 Errors (2) § 6.7 Extensions (2) (3) § 7. Capabilities (2) § 7.1 Proxy § 7.2 Processing capabilities (2) (3) (4) (5) § 8. Sessions (2) (3) § 8.1 Global State (2) (3) (4) (5) § 8.2 New Session (2) (3) (4) (5) § 8.4 Status (2) (3) (4) § 10. Navigation § 10.1 Navigate To § 11. Contexts (2) § 11.4 Get Window Handles § 11.8 Resizing and positioning windows § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window § 12. Elements § 12.2 Shadow Roots § 12.3 Retrieval § 12.5.3 Element Send Keys § 13.2 Executing Script § 14. Cookies § 15. Actions (2) (3) (4) § 15.4 Ticks (2) § 15.5 Processing actions § 16.1 User Prompt Handler (2) § A. Privacy § B. Security Permalink Referenced in: § 5. Nodes Permalink Referenced in: § 5. Nodes (2) (3) § 6.7 Extensions § 8. Sessions (2) (3) § 8.1 Global State § 8.2 New Session (2) (3) (4) (5) (6) (7) (8) Permalink Referenced in: § 8. Sessions § 8.2 New Session (2) Permalink exported Referenced in: § 5. Nodes (2) (3) (4) § 6.5 Endpoints § 7. Capabilities (2) § 7.2 Processing capabilities (2) (3) (4) (5) (6) § 8. Sessions § 8.1 Global State (2) (3) (4) (5) § 8.2 New Session (2) (3) (4) (5) (6) (7) Permalink Referenced in: § 8.4 Status (2) (3) Permalink exported Referenced in: § 6.1 Algorithms § 6.3 Processing model § 6.4 Routing requests § 6.7 Extensions § 7.1 Proxy § 7.2 Processing capabilities (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) § 8.1 Global State § 8.2 New Session (2) § 8.3 Delete Session § 8.4 Status § 9. Timeouts § 9.1 Get Timeouts § 9.2 Set Timeouts § 10. Navigation (2) (3) (4) (5) § 10.1 Navigate To § 10.2 Get Current URL § 10.3 Back § 10.4 Forward § 10.5 Refresh § 10.6 Get Title § 11. Contexts (2) § 11.1 Get Window Handle § 11.3 Switch To Window § 11.4 Get Window Handles § 11.5 New Window § 11.6 Switch To Frame § 11.7 Switch To Parent Frame (2) § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window § 12. Elements (2) § 12.2 Shadow Roots (2) § 12.3 Retrieval § 12.3.1.1 CSS selectors § 12.3.1.2 Link text § 12.3.1.3 Partial link text § 12.3.1.4 Tag name § 12.3.1.5 XPath § 12.3.8 Get Active Element § 12.3.9 Get Element Shadow Root § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect § 12.4.8 Is Element Enabled § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click § 12.5.2 Element Clear § 12.5.3 Element Send Keys (2) (3) § 13.1 Get Page Source § 13.2 Executing Script (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) § 13.2.1 Execute Script § 13.2.2 Execute Async Script § 14.1 Get All Cookies § 14.2 Get Named Cookie § 14.3 Add Cookie § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.1 Actions Options § 15.2 Input sources § 15.5 Processing actions (2) (3) (4) (5) (6) § 15.6 Dispatching actions § 15.6.1 General actions § 15.6.2 Keyboard actions (2) § 15.6.3 Pointer actions (2) (3) (4) (5) (6) § 15.6.4 Wheel actions § 15.7 Perform Actions § 15.8 Release Actions § 16.1 User Prompt Handler (2) (3) § 16.2 Dismiss Alert § 16.3 Accept Alert § 16.4 Get Alert Text § 16.5 Send Alert Text § 17. Screen capture (2) § 17.1 Take Screenshot § 17.2 Take Element Screenshot § 18. Print (2) § 18.1 Print Page § C. Element displayedness Permalink exported Referenced in: § 6.1 Algorithms (2) § 6.3 Processing model (2) (3) (4) (5) § 6.4 Routing requests (2) § 6.6 Errors (2) (3) (4) § 6.7 Extensions § 7.1 Proxy (2) (3) (4) (5) (6) § 7.2 Processing capabilities (2) (3) (4) (5) (6) (7) (8) § 8.1 Global State (2) (3) (4) (5) § 8.2 New Session (2) (3) (4) (5) § 9. Timeouts § 10. Navigation (2) (3) (4) (5) (6) § 10.1 Navigate To (2) (3) § 10.2 Get Current URL § 10.3 Back (2) § 10.4 Forward (2) § 10.5 Refresh § 10.6 Get Title § 11. Contexts (2) (3) (4) (5) (6) § 11.1 Get Window Handle § 11.2 Close Window § 11.3 Switch To Window (2) (3) § 11.5 New Window (2) § 11.6 Switch To Frame (2) (3) (4) (5) (6) (7) § 11.7 Switch To Parent Frame (2) § 11.8 Resizing and positioning windows § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect (2) (3) (4) § 11.8.3 Maximize Window (2) § 11.8.4 Minimize Window (2) § 11.8.5 Fullscreen Window (2) § 12. Elements (2) (3) (4) (5) § 12.2 Shadow Roots (2) (3) (4) (5) § 12.3 Retrieval § 12.3.1.1 CSS selectors § 12.3.1.2 Link text § 12.3.1.3 Partial link text § 12.3.1.5 XPath (2) (3) § 12.3.2 Find Element (2) (3) (4) (5) § 12.3.3 Find Elements (2) (3) (4) § 12.3.4 Find Element From Element (2) (3) (4) § 12.3.5 Find Elements From Element (2) (3) § 12.3.6 Find Element From Shadow Root (2) (3) (4) (5) § 12.3.7 Find Elements From Shadow Root (2) (3) (4) § 12.3.8 Get Active Element (2) § 12.3.9 Get Element Shadow Root (2) (3) § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect § 12.4.8 Is Element Enabled § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click (2) (3) (4) (5) (6) § 12.5.2 Element Clear (2) (3) (4) § 12.5.3 Element Send Keys (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) § 13.1 Get Page Source § 13.2 Executing Script (2) (3) (4) (5) (6) (7) § 13.2.1 Execute Script (2) (3) § 13.2.2 Execute Async Script (2) (3) § 14.1 Get All Cookies § 14.2 Get Named Cookie (2) § 14.3 Add Cookie (2) (3) (4) (5) (6) § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.2 Input sources § 15.3 Input state § 15.5 Processing actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) § 15.6 Dispatching actions § 15.6.3 Pointer actions (2) § 15.6.4 Wheel actions (2) § 15.7 Perform Actions (2) § 15.8 Release Actions § 16. User prompts § 16.1 User Prompt Handler (2) (3) (4) (5) (6) § 16.2 Dismiss Alert (2) § 16.3 Accept Alert (2) § 16.4 Get Alert Text (2) § 16.5 Send Alert Text (2) (3) (4) (5) § 17. Screen capture (2) (3) § 17.1 Take Screenshot § 17.2 Take Element Screenshot § 18. Print (2) (3) (4) (5) (6) § 18.1 Print Page (2) (3) (4) (5) (6) (7) (8) § C. Element displayedness Permalink exported Referenced in: § 7.2 Processing capabilities (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) § 8.2 New Session § 8.3 Delete Session § 9.2 Set Timeouts § 10.1 Navigate To (2) (3) (4) (5) § 10.2 Get Current URL § 10.3 Back § 10.4 Forward § 10.5 Refresh (2) (3) § 10.6 Get Title § 11.2 Close Window (2) § 11.5 New Window § 11.6 Switch To Frame (2) (3) (4) § 11.7 Switch To Parent Frame § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window § 12. Elements (2) § 12.2 Shadow Roots (2) § 12.3 Retrieval § 12.3.2 Find Element (2) § 12.3.3 Find Elements (2) § 12.3.4 Find Element From Element (2) (3) § 12.3.5 Find Elements From Element (2) (3) § 12.3.6 Find Element From Shadow Root (2) § 12.3.7 Find Elements From Shadow Root (2) § 12.3.8 Get Active Element § 12.3.9 Get Element Shadow Root § 12.4.1 Is Element Selected (2) § 12.4.2 Get Element Attribute (2) § 12.4.3 Get Element Property (2) § 12.4.4 Get Element CSS Value (2) § 12.4.5 Get Element Text (2) § 12.4.6 Get Element Tag Name (2) § 12.4.7 Get Element Rect (2) § 12.4.8 Is Element Enabled (2) § 12.4.9 Get Computed Role (2) § 12.4.10 Get Computed Label (2) § 12.5.1 Element Click (2) (3) (4) § 12.5.2 Element Clear (2) § 12.5.3 Element Send Keys (2) (3) (4) § 13.1 Get Page Source § 13.2.1 Execute Script (2) § 13.2.2 Execute Async Script (2) § 14.1 Get All Cookies § 14.2 Get Named Cookie § 14.3 Add Cookie § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.1 Actions Options § 15.3 Input state § 15.5 Processing actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) § 15.6 Dispatching actions (2) § 15.6.3 Pointer actions § 15.6.4 Wheel actions § 15.7 Perform Actions (2) § 15.8 Release Actions (2) § 17.1 Take Screenshot (2) § 17.2 Take Element Screenshot (2) (3) (4) § 18. Print (2) (3) § 18.1 Print Page (2) (3) Permalink Referenced in: § 7.1 Proxy (2) § 7.2 Processing capabilities (2) (3) (4) (5) (6) (7) § 8.1 Global State § 10.1 Navigate To § 11. Contexts (2) § 11.3 Switch To Window § 11.5 New Window § 11.6 Switch To Frame § 11.8.2 Set Window Rect (2) (3) (4) § 12. Elements § 12.2 Shadow Roots § 12.3.1.5 XPath § 12.3.2 Find Element (2) § 12.3.3 Find Elements (2) § 12.3.4 Find Element From Element (2) § 12.3.5 Find Elements From Element (2) § 12.3.6 Find Element From Shadow Root (2) § 12.3.7 Find Elements From Shadow Root (2) § 12.5.3 Element Send Keys § 13.2 Executing Script (2) (3) (4) § 14.3 Add Cookie § 15.5 Processing actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) § 16.5 Send Alert Text Permalink Referenced in: § 18.1 Print Page (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) Permalink Referenced in: § 7.1 Proxy § 7.2 Processing capabilities (2) (3) (4) § 8.1 Global State (2) § 12.5.1 Element Click (2) (3) (4) (5) § 12.5.3 Element Send Keys § 13.2 Executing Script Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6. Protocol § 6.2 Commands (2) (3) § 6.3 Processing model § 6.4 Routing requests (2) (3) § 6.5 Endpoints § 6.6 Errors (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) § 6.7 Extensions (2) § 7. Capabilities § 7.2 Processing capabilities § 8. Sessions (2) § 8.2 New Session § 10. Navigation (2) § 11. Contexts § 11.2 Close Window § 11.3 Switch To Window § 11.6 Switch To Frame § 11.7 Switch To Parent Frame (2) § 11.8 Resizing and positioning windows (2) (3) § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect (2) § 12.3 Retrieval § 12.3.2 Find Element (2) § 12.4.1 Is Element Selected § 12.4.5 Get Element Text § 12.4.7 Get Element Rect § 12.5 Interaction § 12.5.1 Element Click § 12.5.3 Element Send Keys § 13.1 Get Page Source § 13.2.2 Execute Async Script § 15.8 Release Actions § 16. User prompts (2) § 16.2 Dismiss Alert § 16.5 Send Alert Text § 17. Screen capture (2) § 17.2 Take Element Screenshot Permalink exported Referenced in: § 5. Nodes § 6.3 Processing model § 6.4 Routing requests § 6.7 Extensions (2) § 8.2 New Session § 8.3 Delete Session § 8.4 Status § 9.1 Get Timeouts § 9.2 Set Timeouts § 10.1 Navigate To § 10.2 Get Current URL § 10.3 Back § 10.4 Forward § 10.5 Refresh § 10.6 Get Title § 11.1 Get Window Handle § 11.2 Close Window (2) § 11.3 Switch To Window § 11.4 Get Window Handles § 11.5 New Window § 11.6 Switch To Frame § 11.7 Switch To Parent Frame § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window § 12.3.2 Find Element § 12.3.3 Find Elements § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root § 12.3.8 Get Active Element § 12.3.9 Get Element Shadow Root § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect § 12.4.8 Is Element Enabled § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 13.1 Get Page Source § 13.2.1 Execute Script § 13.2.2 Execute Async Script § 14.1 Get All Cookies § 14.2 Get Named Cookie § 14.3 Add Cookie § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.7 Perform Actions § 15.8 Release Actions § 16.2 Dismiss Alert § 16.3 Accept Alert § 16.4 Get Alert Text § 16.5 Send Alert Text § 17.1 Take Screenshot § 17.2 Take Element Screenshot § 18.1 Print Page Permalink Referenced in: § 6.3 Processing model (2) (3) (4) (5) (6) § 8.1 Global State Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6.3 Processing model (2) (3) (4) (5) (6) § 16.1 User Prompt Handler Permalink Referenced in: § 6.3 Processing model (2) Permalink Referenced in: § 6.7 Extensions Permalink Referenced in: § 6.4 Routing requests (2) (3) § 8.2 New Session Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6. Protocol § 6.4 Routing requests § 6.7 Extensions Permalink exported Referenced in: § 6.1 Algorithms § 6.3 Processing model (2) (3) (4) (5) (6) (7) (8) (9) (10) § 6.4 Routing requests (2) § 6.6 Errors (2) (3) § 7.1 Proxy (2) (3) (4) (5) (6) § 7.2 Processing capabilities (2) (3) (4) (5) (6) (7) (8) § 8.1 Global State § 8.2 New Session (2) (3) § 9. Timeouts § 10. Navigation (2) (3) (4) (5) § 10.1 Navigate To (2) (3) § 10.2 Get Current URL § 10.3 Back (2) § 10.4 Forward (2) § 10.5 Refresh § 10.6 Get Title § 11. Contexts (2) (3) (4) (5) (6) § 11.1 Get Window Handle § 11.2 Close Window § 11.3 Switch To Window (2) (3) § 11.5 New Window (2) § 11.6 Switch To Frame (2) (3) (4) (5) (6) (7) § 11.7 Switch To Parent Frame (2) § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect (2) (3) (4) § 11.8.3 Maximize Window (2) § 11.8.4 Minimize Window (2) § 11.8.5 Fullscreen Window (2) § 12. Elements (2) (3) (4) (5) § 12.2 Shadow Roots (2) (3) (4) (5) § 12.3.1.1 CSS selectors § 12.3.1.2 Link text § 12.3.1.3 Partial link text § 12.3.1.5 XPath (2) (3) § 12.3.2 Find Element (2) (3) (4) (5) § 12.3.3 Find Elements (2) (3) (4) § 12.3.4 Find Element From Element (2) (3) (4) § 12.3.5 Find Elements From Element (2) (3) § 12.3.6 Find Element From Shadow Root (2) (3) (4) § 12.3.7 Find Elements From Shadow Root (2) (3) § 12.3.8 Get Active Element (2) § 12.3.9 Get Element Shadow Root (2) § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect § 12.4.8 Is Element Enabled § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click (2) (3) (4) § 12.5.2 Element Clear (2) (3) (4) § 12.5.3 Element Send Keys (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) § 13.1 Get Page Source § 13.2 Executing Script (2) (3) (4) (5) (6) (7) § 13.2.1 Execute Script (2) (3) § 13.2.2 Execute Async Script (2) (3) § 14.1 Get All Cookies § 14.2 Get Named Cookie (2) § 14.3 Add Cookie (2) (3) (4) (5) § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.2 Input sources § 15.3 Input state § 15.5 Processing actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) § 15.6 Dispatching actions § 15.7 Perform Actions § 15.8 Release Actions § 16.1 User Prompt Handler (2) (3) (4) (5) § 16.2 Dismiss Alert (2) § 16.3 Accept Alert (2) § 16.4 Get Alert Text (2) § 16.5 Send Alert Text (2) (3) (4) (5) § 17. Screen capture (2) (3) § 17.1 Take Screenshot § 17.2 Take Element Screenshot § 18. Print (2) (3) (4) § 18.1 Print Page (2) (3) (4) (5) (6) (7) (8) § C. Element displayedness Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 12.5.1 Element Click (2) Permalink Referenced in: § 12.5.1 Element Click (2) § 12.5.2 Element Clear § 12.5.3 Element Send Keys (2) (3) (4) § 16.5 Send Alert Text Permalink Referenced in: § 10. Navigation Permalink exported Referenced in: § 6.3 Processing model (2) § 7.1 Proxy (2) (3) (4) (5) (6) § 7.2 Processing capabilities (2) (3) (4) (5) (6) (7) (8) § 9. Timeouts § 10. Navigation (2) § 10.1 Navigate To § 11. Contexts (2) (3) (4) § 11.3 Switch To Window § 11.6 Switch To Frame (2) § 11.8.2 Set Window Rect (2) § 12. Elements (2) § 12.2 Shadow Roots (2) § 12.3.2 Find Element (2) § 12.3.3 Find Elements (2) § 12.3.4 Find Element From Element (2) § 12.3.5 Find Elements From Element (2) § 12.3.6 Find Element From Shadow Root (2) § 12.3.7 Find Elements From Shadow Root (2) § 12.5.1 Element Click § 12.5.3 Element Send Keys (2) (3) (4) (5) (6) (7) § 13.2 Executing Script (2) § 14.3 Add Cookie (2) § 15.2 Input sources § 15.3 Input state § 15.5 Processing actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) § 16.1 User Prompt Handler (2) (3) (4) § 16.5 Send Alert Text § 18. Print (2) (3) (4) (5) (6) § 18.1 Print Page (2) (3) (4) (5) (6) (7) Permalink Referenced in: § 14.3 Add Cookie Permalink Referenced in: § 12.5.2 Element Clear (2) Permalink Referenced in: § 12.3 Retrieval § 12.3.1.1 CSS selectors § 12.3.1.5 XPath (2) Permalink Referenced in: § 6.3 Processing model (2) Permalink Referenced in: § 13.2 Executing Script (2) § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 15.6.3 Pointer actions (2) § 15.6.4 Wheel actions (2) Permalink Referenced in: § 16.2 Dismiss Alert § 16.3 Accept Alert § 16.4 Get Alert Text § 16.5 Send Alert Text Permalink Referenced in: § 14.2 Get Named Cookie Permalink Referenced in: § 12. Elements (2) § 12.3.2 Find Element (2) § 12.3.3 Find Elements § 12.3.4 Find Element From Element § 12.3.6 Find Element From Shadow Root § 12.3.8 Get Active Element § 15.5 Processing actions Permalink Referenced in: § 11. Contexts § 11.6 Switch To Frame (2) Permalink Referenced in: § 10.1 Navigate To § 10.2 Get Current URL § 10.3 Back § 10.4 Forward § 10.5 Refresh § 10.6 Get Title § 11. Contexts § 11.1 Get Window Handle § 11.2 Close Window § 11.3 Switch To Window § 11.5 New Window § 11.6 Switch To Frame (2) (3) § 11.7 Switch To Parent Frame (2) § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window § 12.3.2 Find Element § 12.3.3 Find Elements § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root § 12.3.8 Get Active Element § 12.3.9 Get Element Shadow Root § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect § 12.4.8 Is Element Enabled § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 13.1 Get Page Source § 13.2.1 Execute Script § 13.2.2 Execute Async Script § 14.1 Get All Cookies § 14.2 Get Named Cookie § 14.3 Add Cookie § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.6 Dispatching actions § 15.7 Perform Actions § 15.8 Release Actions § 16.2 Dismiss Alert § 16.3 Accept Alert § 16.4 Get Alert Text § 16.5 Send Alert Text § 17.1 Take Screenshot § 17.2 Take Element Screenshot § 18.1 Print Page Permalink Referenced in: § 12.2 Shadow Roots (2) § 12.3.9 Get Element Shadow Root Permalink Referenced in: § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 8.1 Global State § 8.2 New Session (2) (3) (4) Permalink Referenced in: § 12. Elements § 13.2 Executing Script (2) Permalink Referenced in: § 12.2 Shadow Roots § 13.2 Executing Script Permalink Referenced in: § 10. Navigation (2) § 10.1 Navigate To § 10.3 Back § 10.4 Forward Permalink Referenced in: § 14.3 Add Cookie Permalink Referenced in: § 17. Screen capture (2) (3) Permalink Referenced in: § 11.3 Switch To Window § 16. User prompts § 16.1 User Prompt Handler (2) Permalink Referenced in: § 6.4 Routing requests Permalink Referenced in: § 6.3 Processing model § 10. Navigation § 12.3.1.2 Link text § 12.3.1.3 Partial link text § 12.3.1.5 XPath § C. Element displayedness Permalink Referenced in: § 6.4 Routing requests Permalink Referenced in: § 11.5 New Window § 11.8 Resizing and positioning windows § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window § 16.5 Send Alert Text Permalink Referenced in: § 6.3 Processing model § 6.6 Errors (2) § 16.1 User Prompt Handler Permalink exported Referenced in: § 6.3 Processing model § 6.5 Endpoints § 6.7 Extensions (2) (3) (4) Permalink exported Referenced in: § 6.7 Extensions (2) Permalink Referenced in: § 6.7 Extensions (2) § 7.2 Processing capabilities (2) Permalink exported Referenced in: Not referenced in this document. Permalink exported Referenced in: § 6.7 Extensions § 7.2 Processing capabilities Permalink exported Referenced in: § 7.2 Processing capabilities (2) Permalink exported Referenced in: § 8.1 Global State Permalink Referenced in: § 6.7 Extensions (2) § 7. Capabilities § 7.2 Processing capabilities (2) (3) (4) § 8.1 Global State § 8.2 New Session (2) Permalink Referenced in: § 6.7 Extensions § 7.1 Proxy § 7.2 Processing capabilities § 8.2 New Session (2) (3) § 10. Navigation § 11.8 Resizing and positioning windows Permalink Referenced in: § 6.7 Extensions Permalink Referenced in: § 7.2 Processing capabilities Permalink Referenced in: § 7.2 Processing capabilities Permalink Referenced in: § 7. Capabilities Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 7. Capabilities § 7.1 Proxy (2) § 8.1 Global State Permalink Referenced in: § 7.1 Proxy (2) (3) (4) (5) (6) (7) (8) (9) Permalink Referenced in: § 7.1 Proxy (2) (3) Permalink Referenced in: § 7.2 Processing capabilities Permalink Referenced in: § 7.1 Proxy Permalink Referenced in: § 8.2 New Session (2) Permalink exported Referenced in: § 7.2 Processing capabilities (2) Permalink Referenced in: § 7.2 Processing capabilities § 8.2 New Session Permalink exported Referenced in: § 7.2 Processing capabilities (2) (3) Permalink exported Referenced in: § 5. Nodes § 6.3 Processing model (2) § 6.6 Errors (2) (3) § 6.7 Extensions § 7. Capabilities (2) (3) (4) (5) (6) § 8. Sessions (2) (3) (4) (5) (6) (7) (8) § 8.1 Global State (2) (3) (4) § 8.2 New Session (2) § 9.1 Get Timeouts § 10. Navigation § 10.1 Navigate To (2) (3) § 11.7 Switch To Parent Frame § 12. Elements (2) (3) § 12.5.3 Element Send Keys § 15.8 Release Actions § A. Privacy § B. Security Permalink Referenced in: § 8. Sessions § 8.1 Global State § 8.2 New Session (2) Permalink Referenced in: § 6.3 Processing model § 6.6 Errors (2) § 8.1 Global State § 8.2 New Session Permalink Referenced in: § 8. Sessions (2) § 8.1 Global State (2) Permalink Referenced in: § 8. Sessions (2) (3) (4) (5) (6) § 16. User prompts § 16.1 User Prompt Handler Permalink Referenced in: § 6.3 Processing model (2) § 6.6 Errors § 8.1 Global State (2) (3) § 16. User prompts Permalink Referenced in: § 5. Nodes § 8. Sessions § 8.1 Global State (2) § 8.2 New Session § 8.3 Delete Session Permalink Referenced in: § 6.6 Errors § 8. Sessions (2) § 10. Navigation (2) (3) § 10.3 Back § 10.4 Forward § 11. Contexts (2) § 11.3 Switch To Window § 11.5 New Window (2) § 11.6 Switch To Frame (2) (3) (4) (5) (6) § 11.7 Switch To Parent Frame (2) (3) (4) (5) § 12. Elements (2) (3) § 12.1 Interactability § 12.2 Shadow Roots (2) (3) § 12.3.1 Locator strategies § 12.3.2 Find Element (2) (3) § 12.3.3 Find Elements (2) § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root § 12.3.8 Get Active Element (2) § 12.3.9 Get Element Shadow Root § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value (2) § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect (2) (3) § 12.4.8 Is Element Enabled (2) § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click (2) § 12.5.2 Element Clear § 12.5.3 Element Send Keys (2) § 13.1 Get Page Source (2) (3) § 13.2 Executing Script § 13.2.1 Execute Script § 13.2.2 Execute Async Script § 14. Cookies (2) § 14.1 Get All Cookies (2) § 14.2 Get Named Cookie (2) § 14.3 Add Cookie (2) (3) (4) § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.1 Actions Options § 15.7 Perform Actions (2) § 15.8 Release Actions (2) § 16. User prompts § 16.1 User Prompt Handler § 17.2 Take Element Screenshot § 18.1 Print Page Permalink Referenced in: § 11. Contexts § 11.7 Switch To Parent Frame (2) (3) Permalink Referenced in: § 8.2 New Session § 10. Navigation § 10.1 Navigate To (2) (3) (4) (5) (6) (7) (8) (9) (10) § 10.2 Get Current URL (2) § 10.3 Back (2) § 10.4 Forward (2) § 10.5 Refresh (2) (3) (4) § 10.6 Get Title (2) (3) § 11. Contexts (2) (3) § 11.1 Get Window Handle (2) § 11.2 Close Window (2) § 11.3 Switch To Window § 11.5 New Window § 11.6 Switch To Frame (2) (3) § 11.8 Resizing and positioning windows § 11.8.1 Get Window Rect (2) (3) § 11.8.2 Set Window Rect (2) (3) (4) (5) (6) (7) § 11.8.3 Maximize Window (2) (3) (4) (5) § 11.8.4 Minimize Window (2) (3) (4) § 11.8.5 Fullscreen Window (2) (3) § 12.4 State § 12.5.1 Element Click § 12.5.3 Element Send Keys § 15.7 Perform Actions § 15.8 Release Actions (2) § 16. User prompts § 16.2 Dismiss Alert § 16.3 Accept Alert § 16.4 Get Alert Text § 16.5 Send Alert Text § 17.1 Take Screenshot (2) § 18.1 Print Page Permalink Referenced in: § 7. Capabilities § 8.1 Global State (2) § 10. Navigation § 10.1 Navigate To § 10.3 Back § 10.4 Forward § 12.3 Retrieval § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 8.1 Global State (2) § 10. Navigation (2) (3) (4) Permalink Referenced in: § 7. Capabilities (2) § 8.1 Global State § 12.5.3 Element Send Keys Permalink Referenced in: § 15.3 Input state (2) Permalink Referenced in: § 6.3 Processing model § 8.2 New Session Permalink Referenced in: § 7.2 Processing capabilities (2) § 8. Sessions § 8.1 Global State Permalink Referenced in: § 7.2 Processing capabilities § 8.1 Global State (2) § 10. Navigation § 10.1 Navigate To Permalink Referenced in: § 7.2 Processing capabilities § 8.1 Global State (2) Permalink Referenced in: § 8.2 New Session Permalink Referenced in: § 8. Sessions § 8.3 Delete Session § 11.2 Close Window Permalink Referenced in: § 5. Nodes § 6.3 Processing model § 6.4 Routing requests § 6.5 Endpoints § 6.7 Extensions (2) § 7. Capabilities § 7.2 Processing capabilities § 8. Sessions § 8.2 New Session (2) (3) (4) (5) § 8.4 Status (2) (3) § A. Privacy Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.3 Processing model § 6.5 Endpoints § 8.4 Status Permalink Referenced in: § 10. Navigation § 10.1 Navigate To § 10.3 Back § 10.4 Forward § 12.3 Retrieval § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 9. Timeouts § 10. Navigation § 10.1 Navigate To § 10.3 Back (2) § 10.4 Forward (2) § 12.3 Retrieval § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 13.2.1 Execute Script (2) § 13.2.2 Execute Async Script (2) Permalink Referenced in: § 10. Navigation § 10.1 Navigate To § 10.3 Back § 10.4 Forward § 12.3 Retrieval § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 8. Sessions (2) § 9. Timeouts § 9.1 Get Timeouts § 9.2 Set Timeouts Permalink Referenced in: § 9. Timeouts (2) § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 9. Timeouts (2) § 10. Navigation (2) § 10.1 Navigate To § 10.3 Back § 10.4 Forward Permalink Referenced in: § 9. Timeouts (2) § 12.3 Retrieval § 12.5.2 Element Clear § 12.5.3 Element Send Keys Permalink Referenced in: § 7.2 Processing capabilities § 9.2 Set Timeouts Permalink Referenced in: § 8.1 Global State § 9.1 Get Timeouts Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 8. Sessions § 10. Navigation (2) Permalink Referenced in: § 10. Navigation (2) Permalink Referenced in: § 10. Navigation Permalink Referenced in: § 8. Sessions § 10. Navigation Permalink Referenced in: § 7.2 Processing capabilities Permalink Referenced in: § 6.3 Processing model § 10.1 Navigate To (2) § 10.5 Refresh § 12.5.1 Element Click Permalink Referenced in: § 10.1 Navigate To (2) § 10.5 Refresh § 12.5.1 Element Click Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 10. Navigation § 10.1 Navigate To § 10.2 Get Current URL § 10.3 Back § 10.4 Forward § 10.5 Refresh § 10.6 Get Title § 11.1 Get Window Handle § 11.2 Close Window § 11.5 New Window § 11.6 Switch To Frame (2) (3) § 11.7 Switch To Parent Frame (2) § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window § 12.3.2 Find Element § 12.3.3 Find Elements § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root § 12.3.8 Get Active Element § 12.3.9 Get Element Shadow Root § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect § 12.4.8 Is Element Enabled § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 13.1 Get Page Source § 13.2.1 Execute Script § 13.2.2 Execute Async Script § 14.1 Get All Cookies § 14.2 Get Named Cookie § 14.3 Add Cookie § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.6 Dispatching actions § 15.7 Perform Actions § 15.8 Release Actions § 16.2 Dismiss Alert § 16.3 Accept Alert § 16.4 Get Alert Text § 16.5 Send Alert Text § 17.1 Take Screenshot § 17.2 Take Element Screenshot § 18.1 Print Page Permalink Referenced in: § 11. Contexts (2) (3) (4) § 11.1 Get Window Handle § 11.3 Switch To Window § 11.4 Get Window Handles § 11.5 New Window Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 11. Contexts (2) (3) (4) Permalink Referenced in: § 11. Contexts § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 11. Contexts (2) (3) (4) Permalink Referenced in: § 11. Contexts § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 10.1 Navigate To § 10.5 Refresh § 11. Contexts § 11.6 Switch To Frame (2) (3) § 11.7 Switch To Parent Frame Permalink Referenced in: § 11.3 Switch To Window Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints § 11. Contexts Permalink Referenced in: § 6.5 Endpoints § 11.2 Close Window Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints § 11. Contexts § 11.6 Switch To Frame Permalink Referenced in: § 6.5 Endpoints § 11.7 Switch To Parent Frame Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 11.8.5 Fullscreen Window Permalink Referenced in: § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window Permalink Referenced in: § 11.8.3 Maximize Window Permalink Referenced in: § 11.8.4 Minimize Window Permalink Referenced in: § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.5 Fullscreen Window Permalink Referenced in: § 6.5 Endpoints § 11.8.1 Get Window Rect Permalink Referenced in: § 6.5 Endpoints § 11.8.2 Set Window Rect (2) (3) Permalink Referenced in: § 6.5 Endpoints § 11.8.3 Maximize Window (2) Permalink Referenced in: § 6.5 Endpoints § 11.8.4 Minimize Window (2) Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 12.3.1.1 CSS selectors § 12.3.1.2 Link text § 12.3.1.3 Partial link text § 12.3.1.4 Tag name § 12.3.1.5 XPath § 12.3.2 Find Element § 12.4.7 Get Element Rect (2) (3) (4) (5) § 13.2 Executing Script Permalink Referenced in: § 12. Elements (2) (3) (4) Permalink Referenced in: § 11.6 Switch To Frame (2) § 12. Elements § 12.5.1 Element Click § 12.5.3 Element Send Keys (2) § 13.2 Executing Script § 15.7 Perform Actions § 15.8 Release Actions Permalink Referenced in: § 12. Elements Permalink Referenced in: § 8. Sessions § 12. Elements (2) (3) (4) (5) Permalink Referenced in: § 12. Elements (2) Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements (2) Permalink Referenced in: § 12. Elements § 12.2 Shadow Roots Permalink Referenced in: § 12. Elements § 12.2 Shadow Roots Permalink Referenced in: § 12. Elements § 12.2 Shadow Roots Permalink Referenced in: § 11.6 Switch To Frame § 12. Elements § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.9 Get Element Shadow Root § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect § 12.4.8 Is Element Enabled § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 15.1 Actions Options § 17.2 Take Element Screenshot Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12.3 Retrieval § 12.3.8 Get Active Element § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 12. Elements § 12.2 Shadow Roots § 13.2 Executing Script Permalink Referenced in: § 12.5 Interaction § 12.5.1 Element Click (2) § 12.5.2 Element Clear § 12.5.3 Element Send Keys (2) § 17. Screen capture § 17.2 Take Element Screenshot Permalink Referenced in: § 6.6 Errors § 12.5.2 Element Clear Permalink Referenced in: § 12.5.2 Element Clear Permalink Referenced in: § 12.5.2 Element Clear Permalink Referenced in: § 12.1 Interactability Permalink Referenced in: § 12. Elements Permalink Referenced in: § 6.6 Errors § 12.5 Interaction § 12.5.2 Element Clear (2) Permalink Referenced in: § 6.6 Errors § 12.1 Interactability § 12.5.1 Element Click Permalink Referenced in: § 6.6 Errors § 12.1 Interactability § 12.5.3 Element Send Keys (2) (3) Permalink Referenced in: § 12.1 Interactability (2) (3) (4) (5) (6) § 12.5.1 Element Click (2) (3) § 15.5 Processing actions Permalink Referenced in: § 12. Elements § 12.4.8 Is Element Enabled § 12.5.1 Element Click Permalink Referenced in: § 12. Elements § 12.5.1 Element Click Permalink Referenced in: § 6.6 Errors § 12.1 Interactability (2) § 12.5.1 Element Click (2) Permalink Referenced in: § 12.1 Interactability (2) Permalink Referenced in: § 6.6 Errors § 12.2 Shadow Roots (2) § 12.3.9 Get Element Shadow Root § 13.2 Executing Script Permalink Referenced in: § 12.2 Shadow Roots (2) (3) (4) Permalink Referenced in: § 12.2 Shadow Roots § 13.2 Executing Script Permalink Referenced in: § 12.2 Shadow Roots § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root Permalink Referenced in: § 12.2 Shadow Roots Permalink Referenced in: § 12.3.9 Get Element Shadow Root § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 12.2 Shadow Roots § 13.2 Executing Script Permalink Referenced in: § 12.3.2 Find Element § 12.3.3 Find Elements § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root Permalink Referenced in: § 12.3 Retrieval (2) § 12.3.1.1 CSS selectors § 12.3.1.2 Link text § 12.3.1.3 Partial link text (2) (3) § 12.3.1.4 Tag name § 12.3.1.5 XPath Permalink Referenced in: § 12.3.2 Find Element § 12.3.3 Find Elements § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root Permalink Referenced in: § 12.3.1 Locator strategies Permalink Referenced in: § 12.3.1 Locator strategies § 12.3.1.3 Partial link text § 12.4.5 Get Element Text Permalink Referenced in: § 12.3.1 Locator strategies § 12.3.1.3 Partial link text § 12.4.5 Get Element Text Permalink Referenced in: § 12.3.1 Locator strategies Permalink Referenced in: § 12.3.1 Locator strategies Permalink Referenced in: § 6.5 Endpoints § 12.3 Retrieval § 12.3.2 Find Element Permalink Referenced in: § 6.5 Endpoints § 12.3 Retrieval Permalink Referenced in: § 6.5 Endpoints § 12.3 Retrieval Permalink Referenced in: § 6.5 Endpoints § 12.3 Retrieval Permalink Referenced in: § 6.5 Endpoints § 12.3 Retrieval Permalink Referenced in: § 6.5 Endpoints § 12.3 Retrieval Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 12.4.7 Get Element Rect Permalink Referenced in: § 12.1 Interactability Permalink Referenced in: § 12.5.1 Element Click (2) (3) (4) (5) Permalink Referenced in: § 6.5 Endpoints § 12.4.1 Is Element Selected Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints § 12.3.1.2 Link text § 12.3.1.3 Partial link text § 12.4.5 Get Element Text (2) Permalink Referenced in: § 12.3.1.2 Link text § 18. Print (2) Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints § 12.4.7 Get Element Rect Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 12.5 Interaction (2) (3) (4) (5) § 12.5.2 Element Clear Permalink Referenced in: § 1.2 Simplicity § 6.5 Endpoints § 6.6 Errors § 12.1 Interactability § 12.5.1 Element Click Permalink Referenced in: § 6.5 Endpoints § 6.6 Errors § 12. Elements Permalink Referenced in: § 12.5.2 Element Clear Permalink Referenced in: § 12.5.2 Element Clear Permalink Referenced in: § 1.2 Simplicity § 6.5 Endpoints § 12. Elements § 12.5.3 Element Send Keys (2) Permalink Referenced in: § 12.5.3 Element Send Keys (2) (3) Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 12.5.3 Element Send Keys (2) Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 12.5.3 Element Send Keys (2) Permalink Referenced in: § 12.5.3 Element Send Keys (2) (3) (4) Permalink Referenced in: § 12.5.3 Element Send Keys (2) (3) Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 6.5 Endpoints § 13.1 Get Page Source Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script (2) Permalink Referenced in: § 13.2.1 Execute Script (2) § 13.2.2 Execute Async Script (2) Permalink Referenced in: § 13.2 Executing Script (2) Permalink Referenced in: § 13.2 Executing Script (2) Permalink Referenced in: § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints § 13.2.2 Execute Async Script (2) Permalink Referenced in: § 14. Cookies § 14.3 Add Cookie (2) Permalink Referenced in: § 14. Cookies § 14.2 Get Named Cookie § 14.3 Add Cookie (2) Permalink Referenced in: § 14.3 Add Cookie (2) Permalink Referenced in: § 14.3 Add Cookie Permalink Referenced in: § 14.3 Add Cookie (2) Permalink Referenced in: § 14.3 Add Cookie (2) Permalink Referenced in: § 14. Cookies § 14.3 Add Cookie (2) Permalink Referenced in: § 14. Cookies § 14.3 Add Cookie (2) Permalink Referenced in: § 14.3 Add Cookie Permalink Referenced in: § 14. Cookies (2) § 14.1 Get All Cookies § 14.2 Get Named Cookie Permalink Referenced in: § 6.6 Errors § 14. Cookies § 14.1 Get All Cookies § 14.2 Get Named Cookie Permalink Referenced in: § 14. Cookies § 14.3 Add Cookie Permalink Referenced in: § 14.4 Delete Cookie § 14.5 Delete All Cookies Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints § 14. Cookies (2) (3) (4) (5) (6) (7) Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 12.5 Interaction Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys (2) (3) § 15.7 Perform Actions § 15.8 Release Actions Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys (2) § 15.5 Processing actions (2) § 15.7 Perform Actions § 15.8 Release Actions Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys (2) § 15.5 Processing actions § 15.7 Perform Actions § 15.8 Release Actions Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys (2) § 15.7 Perform Actions § 15.8 Release Actions Permalink Referenced in: § 15. Actions (2) (3) (4) (5) (6) § 15.2.1 Null input source (2) § 15.2.2 Key input source § 15.2.3 Pointer input source § 15.2.4 Wheel input source § 15.3 Input state (2) (3) § 15.4 Ticks (2) (3) Permalink Referenced in: § 15.3 Input state Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys § 15.3 Input state Permalink Referenced in: § 15.2.1 Null input source (2) § 15.2.2 Key input source § 15.2.3 Pointer input source § 15.2.4 Wheel input source Permalink Referenced in: § 15. Actions (2) (3) (4) (5) § 15.2.2 Key input source § 15.2.3 Pointer input source § 15.2.4 Wheel input source § 15.4 Ticks Permalink Referenced in: § 15.2 Input sources Permalink Referenced in: § 12.5.3 Element Send Keys (2) § 15.2.2 Key input source (2) (3) § 15.3 Input state Permalink Referenced in: § 15. Actions § 15.6.2 Keyboard actions Permalink Referenced in: § 15. Actions Permalink Referenced in: § 15.2 Input sources Permalink Referenced in: § 15.2.3 Pointer input source (2) (3) § 15.3 Input state (2) Permalink Referenced in: § 15. Actions (2) (3) (4) Permalink Referenced in: § 15. Actions (2) (3) (4) Permalink Referenced in: § 15. Actions (2) (3) § 15.6.3 Pointer actions Permalink Referenced in: Not referenced in this document. Permalink Referenced in: § 15.2 Input sources Permalink Referenced in: § 15.2.4 Wheel input source (2) Permalink Referenced in: § 15.6.4 Wheel actions Permalink Referenced in: § 15.2 Input sources Permalink Referenced in: § 8. Sessions § 15.3 Input state (2) (3) Permalink Referenced in: § 15.2 Input sources § 15.3 Input state (2) (3) (4) (5) (6) Permalink Referenced in: § 15.3 Input state (2) § 15.6 Dispatching actions (2) § 15.8 Release Actions Permalink Referenced in: § 15.6 Dispatching actions (2) (3) Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys § 15.7 Perform Actions § 15.8 Release Actions Permalink Referenced in: § 15.8 Release Actions Permalink Referenced in: § 15.3 Input state Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys Permalink Referenced in: § 15.3 Input state § 15.6 Dispatching actions Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.3 Input state Permalink Referenced in: § 12.5.3 Element Send Keys § 15.6 Dispatching actions Permalink Referenced in: § 15.2.3 Pointer input source Permalink Referenced in: § 15. Actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) § 15.2.1 Null input source (2) § 15.4 Ticks (2) (3) § 15.5 Processing actions § 15.6 Dispatching actions § 15.6.3 Pointer actions § 15.6.4 Wheel actions Permalink Referenced in: § 15.6 Dispatching actions § 15.6.3 Pointer actions (2) § 15.6.4 Wheel actions (2) Permalink Referenced in: § 12.5.3 Element Send Keys § 15.6.2 Keyboard actions (2) § 15.6.3 Pointer actions (2) (3) (4) § 15.6.4 Wheel actions Permalink Referenced in: § 15.6.3 Pointer actions § 15.6.4 Wheel actions Permalink Referenced in: § 15.5 Processing actions § 15.7 Perform Actions Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 12.5.1 Element Click (2) (3) § 12.5.3 Element Send Keys (2) (3) (4) (5) § 15.3 Input state § 15.5 Processing actions (2) (3) (4) Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.5 Processing actions (2) (3) (4) Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.5 Processing actions Permalink Referenced in: § 15.6 Dispatching actions § 15.8 Release Actions Permalink Referenced in: § 15.6 Dispatching actions (2) § 15.7 Perform Actions § 15.8 Release Actions Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6 Dispatching actions (2) (3) Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys (2) (3) (4) (5) Permalink Referenced in: § 15.6 Dispatching actions (2) (3) (4) Permalink Referenced in: § 15.6.2 Keyboard actions (2) Permalink Referenced in: § 12.5.3 Element Send Keys § 15.6.2 Keyboard actions (2) Permalink Referenced in: § 12.5.3 Element Send Keys (2) Permalink Referenced in: § 15.6.2 Keyboard actions (2) Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6.3 Pointer actions (2) Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6 Dispatching actions Permalink Referenced in: § 15.6.4 Wheel actions (2) Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints § 15.8 Release Actions Permalink Referenced in: § 6.6 Errors § 16.1 User Prompt Handler (2) Permalink Referenced in: § 16. User prompts Permalink Referenced in: § 16.1 User Prompt Handler (2) (3) (4) (5) (6) (7) § 16.2 Dismiss Alert (2) (3) § 16.3 Accept Alert (2) § 16.4 Get Alert Text (2) § 16.5 Send Alert Text (2) (3) Permalink Referenced in: § 16.1 User Prompt Handler (2) (3) § 16.2 Dismiss Alert (2) (3) Permalink Referenced in: § 16. User prompts § 16.1 User Prompt Handler (2) (3) § 16.2 Dismiss Alert § 16.3 Accept Alert Permalink Referenced in: § 6.6 Errors § 7. Capabilities § 8.1 Global State § 16. User prompts § 16.1 User Prompt Handler (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) Permalink Referenced in: § 16.1 User Prompt Handler (2) (3) (4) Permalink Referenced in: § 16.1 User Prompt Handler (2) (3) (4) (5) (6) (7) (8) Permalink Referenced in: § 16.1 User Prompt Handler (2) (3) (4) (5) (6) (7) Permalink Referenced in: § 16.1 User Prompt Handler (2) Permalink Referenced in: § 16.1 User Prompt Handler Permalink Referenced in: § 16.1 User Prompt Handler Permalink Referenced in: § 16.1 User Prompt Handler Permalink Referenced in: § 7.2 Processing capabilities Permalink Referenced in: § 7.2 Processing capabilities Permalink Referenced in: § 8.1 Global State Permalink Referenced in: § 8.1 Global State Permalink Referenced in: § 16.1 User Prompt Handler Permalink exported Referenced in: § 16.1 User Prompt Handler Permalink Referenced in: § 10.1 Navigate To § 10.2 Get Current URL § 10.3 Back (2) § 10.4 Forward (2) § 10.5 Refresh § 10.6 Get Title § 11.2 Close Window § 11.5 New Window § 11.6 Switch To Frame (2) (3) § 11.7 Switch To Parent Frame § 11.8.1 Get Window Rect § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window § 11.8.5 Fullscreen Window § 12.3.2 Find Element § 12.3.3 Find Elements § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root § 12.3.8 Get Active Element § 12.3.9 Get Element Shadow Root § 12.4.1 Is Element Selected § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.4 Get Element CSS Value § 12.4.5 Get Element Text § 12.4.6 Get Element Tag Name § 12.4.7 Get Element Rect § 12.4.8 Is Element Enabled § 12.4.9 Get Computed Role § 12.4.10 Get Computed Label § 12.5.1 Element Click § 12.5.2 Element Clear § 12.5.3 Element Send Keys § 13.1 Get Page Source § 13.2.1 Execute Script § 13.2.2 Execute Async Script § 14.1 Get All Cookies § 14.2 Get Named Cookie § 14.3 Add Cookie § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.7 Perform Actions § 15.8 Release Actions § 17.2 Take Element Screenshot § 18.1 Print Page Permalink Referenced in: § 6.5 Endpoints § 16.2 Dismiss Alert Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § 6.5 Endpoints § 16.5 Send Alert Text Permalink Referenced in: § 17.1 Take Screenshot § 17.2 Take Element Screenshot Permalink Referenced in: § 17.1 Take Screenshot § 17.2 Take Element Screenshot Permalink Referenced in: § 6.5 Endpoints § 17. Screen capture Permalink Referenced in: § 6.5 Endpoints § 17. Screen capture § 17.2 Take Element Screenshot Permalink Referenced in: § 18.1 Print Page Permalink Referenced in: § 18. Print (2) Permalink Referenced in: § 18. Print (2) (3) Permalink Referenced in: § 6.5 Endpoints Permalink Referenced in: § C. Element displayedness (2) Permalink Referenced in: § 12.4.9 Get Computed Role Permalink Referenced in: § 12.4.10 Get Computed Label Permalink Referenced in: § 12.4.10 Get Computed Label Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 10. Navigation Permalink Referenced in: § 18.1 Print Page Permalink Referenced in: § 13.1 Get Page Source Permalink Referenced in: § 12.5.2 Element Clear (2) Permalink Referenced in: § 13.1 Get Page Source Permalink Referenced in: § 15.4 Ticks Permalink Referenced in: § 12.5.1 Element Click Permalink Referenced in: § 12.5.1 Element Click Permalink Referenced in: § 12.5.1 Element Click Permalink Referenced in: § 12.5.1 Element Click Permalink Referenced in: § 12.5.1 Element Click Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script (2) (3) Permalink Referenced in: § 13.2.2 Execute Async Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2.2 Execute Async Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2.2 Execute Async Script Permalink Referenced in: § 7.1 Proxy (2) (3) (4) (5) (6) § 7.2 Processing capabilities (2) (3) (4) § 11. Contexts (2) (3) (4) § 12. Elements (2) § 12.2 Shadow Roots (2) § 12.5.3 Element Send Keys § 13.2 Executing Script (2) Permalink Referenced in: § 13.2.2 Execute Async Script Permalink Referenced in: § 13.2.2 Execute Async Script Permalink Referenced in: § 12. Elements § 13.2.2 Execute Async Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 18. Print Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 12. Elements § 12.4.5 Get Element Text § 13.2 Executing Script (2) § C. Element displayedness Permalink Referenced in: § 6.1 Algorithms (2) Permalink Referenced in: § 12.4.3 Get Element Property Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 6.1 Algorithms Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 13.2 Executing Script (2) (3) (4) § 15.5 Processing actions (2) § 18.1 Print Page (2) (3) Permalink Referenced in: § 4. Interface § 7.2 Processing capabilities (2) (3) (4) (5) § 13.2 Executing Script (2) § 18.1 Print Page (2) Permalink Referenced in: § 7.1 Proxy § 7.2 Processing capabilities (2) (3) (4) § 11.4 Get Window Handles § 12.3 Retrieval (2) § 13.2 Executing Script (2) (3) § 14.1 Get All Cookies § 15.5 Processing actions (2) (3) Permalink Referenced in: § 9. Timeouts § 14.3 Add Cookie Permalink Referenced in: § 6.3 Processing model (2) § 6.7 Extensions § 7.2 Processing capabilities (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) § 8.1 Global State § 8.2 New Session § 8.3 Delete Session § 9.2 Set Timeouts § 10. Navigation (2) (3) (4) § 10.1 Navigate To § 10.3 Back § 10.4 Forward § 10.5 Refresh § 11. Contexts § 11.3 Switch To Window § 11.6 Switch To Frame (2) (3) § 11.7 Switch To Parent Frame (2) (3) § 12.3.1.5 XPath (2) § 12.3.2 Find Element § 12.3.3 Find Elements § 12.4.2 Get Element Attribute § 12.4.3 Get Element Property § 12.4.5 Get Element Text § 12.5.1 Element Click § 12.5.2 Element Clear § 12.5.3 Element Send Keys (2) (3) § 13.1 Get Page Source (2) § 13.2 Executing Script (2) (3) (4) (5) § 14.3 Add Cookie (2) § 14.4 Delete Cookie § 14.5 Delete All Cookies § 15.5 Processing actions (2) § 15.6 Dispatching actions (2) § 15.6.1 General actions § 15.6.2 Keyboard actions (2) § 15.6.3 Pointer actions (2) (3) (4) (5) (6) § 15.6.4 Wheel actions § 15.7 Perform Actions § 15.8 Release Actions § 16. User prompts § 16.2 Dismiss Alert § 16.3 Accept Alert § 16.4 Get Alert Text § 16.5 Send Alert Text Permalink Referenced in: § 3. Terminology § 11.8.2 Set Window Rect (2) § 13.2 Executing Script (2) § 15.5 Processing actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) § 18. Print (2) § 18.1 Print Page (2) (3) Permalink Referenced in: § 6.1 Algorithms § 6.3 Processing model (2) (3) (4) § 6.6 Errors (2) § 7. Capabilities (2) § 7.1 Proxy (2) (3) § 7.2 Processing capabilities (2) (3) (4) (5) (6) (7) (8) (9) § 8.1 Global State § 8.2 New Session § 8.4 Status § 11. Contexts (2) (3) (4) (5) § 11.5 New Window § 11.6 Switch To Frame § 11.8 Resizing and positioning windows § 12. Elements (2) (3) § 12.2 Shadow Roots (2) (3) § 12.4.7 Get Element Rect § 13.2 Executing Script (2) (3) (4) (5) (6) (7) § 13.2.2 Execute Async Script § 14. Cookies § 14.3 Add Cookie § 15.5 Processing actions (2) (3) § 16.1 User Prompt Handler § 18.1 Print Page (2) Permalink Referenced in: § 6.1 Algorithms Permalink Referenced in: § 7.1 Proxy § 7.2 Processing capabilities (2) (3) (4) § 10. Navigation § 11. Contexts (2) (3) § 12. Elements § 12.2 Shadow Roots § 12.5.3 Element Send Keys § 13.2 Executing Script (2) (3) § 15.5 Processing actions (2) § 16.1 User Prompt Handler § 16.5 Send Alert Text § 18. Print (2) § 18.1 Print Page Permalink Referenced in: § 6.1 Algorithms Permalink Referenced in: § 3. Terminology Permalink Referenced in: § 6.4 Routing requests § 7.1 Proxy § 7.2 Processing capabilities (2) (3) (4) § 11.3 Switch To Window § 11.8.2 Set Window Rect (2) (3) (4) § 12.3.2 Find Element § 12.3.3 Find Elements § 12.3.4 Find Element From Element § 12.3.5 Find Elements From Element § 12.3.6 Find Element From Shadow Root § 12.3.7 Find Elements From Shadow Root § 12.4 State (2) (3) § 12.4.3 Get Element Property § 12.5.3 Element Send Keys (2) § 13.2 Executing Script (2) § 14. Cookies § 15.5 Processing actions (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) § 15.6 Dispatching actions (2) § 15.6.2 Keyboard actions § 15.6.3 Pointer actions § 15.6.4 Wheel actions Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6.3 Processing model (2) § 12.1 Interactability Permalink Referenced in: § 7. Capabilities § 7.2 Processing capabilities Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 10.1 Navigate To Permalink Referenced in: § 6.3 Processing model (2) § 6.4 Routing requests § 6.5 Endpoints Permalink Referenced in: § 6.2 Commands § 6.3 Processing model § 6.6 Errors (2) § 10. Navigation (2) (3) Permalink Referenced in: § 6.2 Commands § 6.3 Processing model (2) (3) § 6.4 Routing requests § 8. Sessions Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 6.3 Processing model § 6.6 Errors (2) § 10. Navigation Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 11.8.5 Fullscreen Window Permalink Referenced in: § 11.8.5 Fullscreen Window Permalink Referenced in: § 11.8.2 Set Window Rect § 11.8.3 Maximize Window § 11.8.4 Minimize Window Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 6.6 Errors § 10.1 Navigate To (2) (3) § 10.2 Get Current URL § 10.5 Refresh § 10.6 Get Title § 11.6 Switch To Frame § 11.8 Resizing and positioning windows (2) § 11.8.5 Fullscreen Window § 12. Elements (2) (3) § 12.1 Interactability § 12.2 Shadow Roots § 12.4.4 Get Element CSS Value § 12.4.8 Is Element Enabled § 13.1 Get Page Source (2) § 13.2 Executing Script § 14. Cookies (2) § 14.1 Get All Cookies § 14.2 Get Named Cookie § 14.3 Add Cookie (2) (3) § 16. User prompts Permalink Referenced in: § 12.3.8 Get Active Element § 12.5.3 Element Send Keys Permalink Referenced in: § 11.6 Switch To Frame § 12.4 State § 13.2 Executing Script Permalink Referenced in: § 12.4.2 Get Element Attribute (2) Permalink Referenced in: § 8. Sessions § 10. Navigation § 11. Contexts (2) (3) (4) (5) (6) (7) (8) (9) § 11.3 Switch To Window § 11.6 Switch To Frame § 13.2 Executing Script § 15.4 Ticks § 16. User prompts Permalink Referenced in: § 12. Elements (2) (3) Permalink Referenced in: § 12.5.2 Element Clear Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 12.4.1 Is Element Selected (2) Permalink Referenced in: § 12.4.1 Is Element Selected § 12.5 Interaction Permalink Referenced in: § 11.6 Switch To Frame Permalink Referenced in: § 8.1 Global State (2) § 11.2 Close Window Permalink Referenced in: § 14.3 Add Cookie Permalink Referenced in: § 12.5 Interaction Permalink Referenced in: § 12.5 Interaction (2) Permalink Referenced in: § 12.1 Interactability (2) Permalink Referenced in: § 10. Navigation (2) (3) Permalink Referenced in: § 12.4 State (2) (3) (4) (5) (6) Permalink Referenced in: § 12.3.1 Locator strategies Permalink Referenced in: § 16. User prompts (2) Permalink Referenced in: § 12. Elements § 12.5.1 Element Click § 12.5.2 Element Clear § 12.5.3 Element Send Keys Permalink Referenced in: § 11.5 New Window § 12.5.1 Element Click § 12.5.2 Element Clear (2) § 12.5.3 Element Send Keys Permalink Referenced in: § 12.1 Interactability Permalink Referenced in: § 11.6 Switch To Frame Permalink Referenced in: § 12.5 Interaction § 12.5.2 Element Clear § 12.5.3 Element Send Keys (2) Permalink Referenced in: § 10.3 Back § 10.4 Forward Permalink Referenced in: § 10. Navigation (2) Permalink Referenced in: § 12. Elements § 12.5.3 Element Send Keys Permalink Referenced in: § 6.6 Errors § 7. Capabilities § 7.2 Processing capabilities § 10. Navigation § 10.1 Navigate To (2) (3) § 12.5.1 Element Click (2) (3) Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 10.5 Refresh Permalink Referenced in: § 11. Contexts Permalink Referenced in: § 16. User prompts Permalink Referenced in: § 8.1 Global State Permalink Referenced in: § 12.4.1 Is Element Selected (2) Permalink Referenced in: § 12.5 Interaction Permalink Referenced in: § 10.1 Navigate To Permalink Referenced in: § 12.5 Interaction (2) Permalink Referenced in: § 6.6 Errors § 12.5 Interaction Permalink Referenced in: § 17.1 Take Screenshot § 17.2 Take Element Screenshot § 18.1 Print Page Permalink Referenced in: § 12.5.2 Element Clear Permalink Referenced in: § 12.4.1 Is Element Selected § 12.5.1 Element Click (2) (3) (4) Permalink Referenced in: § 16.1 User Prompt Handler (2) (3) (4) (5) § 16.2 Dismiss Alert Permalink Referenced in: § 16. User prompts Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 10.3 Back § 10.4 Forward Permalink Referenced in: § 12.5.2 Element Clear (2) Permalink Referenced in: § 11.3 Switch To Window § 13.2 Executing Script § 16. User prompts (2) (3) (4) (5) (6) (7) § 16.2 Dismiss Alert § 16.5 Send Alert Text Permalink Referenced in: § 12.5 Interaction § 12.5.2 Element Clear Permalink Referenced in: § 12.5 Interaction Permalink Referenced in: § 12.5 Interaction Permalink Referenced in: § 11. Contexts (2) Permalink Referenced in: § 11.5 New Window Permalink Referenced in: § 11. Contexts § 11.6 Switch To Frame § 11.8 Resizing and positioning windows § 11.8.2 Set Window Rect (2) § 13.2 Executing Script (2) Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 16.5 Send Alert Text Permalink Referenced in: § 16.5 Send Alert Text Permalink Referenced in: § 16.5 Send Alert Text (2) Permalink Referenced in: § 12. Elements § 12.5.3 Element Send Keys Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements § 12.5.3 Element Send Keys Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12.5 Interaction Permalink Referenced in: § 12.5.1 Element Click Permalink Referenced in: § 12. Elements § 12.5.3 Element Send Keys Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12.5.1 Element Click § 12.5.3 Element Send Keys Permalink Referenced in: § 10. Navigation Permalink Referenced in: § 12. Elements (2) § 12.4.1 Is Element Selected (2) § 12.5 Interaction (2) § 12.5.1 Element Click (2) § 12.5.2 Element Clear § 12.5.3 Element Send Keys (2) (3) (4) (5) (6) § E. Index Permalink Referenced in: § 10. Navigation Permalink Referenced in: § 10.3 Back § 10.4 Forward Permalink Referenced in: § 10.3 Back § 10.4 Forward Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 6. Protocol Permalink Referenced in: § 14. Cookies Permalink Referenced in: § 14. Cookies (2) (3) (4) (5) § 14.2 Get Named Cookie Permalink Referenced in: § 14. Cookies (2) § 14.3 Add Cookie Permalink Referenced in: § 14. Cookies Permalink Referenced in: § 14.3 Add Cookie Permalink Referenced in: § 14. Cookies Permalink Referenced in: § 14. Cookies Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 9. Timeouts § 16.1 User Prompt Handler Permalink Referenced in: § 9. Timeouts § 16.1 User Prompt Handler Permalink Referenced in: § 7.1 Proxy Permalink Referenced in: § 6.4 Routing requests § 6.5 Endpoints § 6.7 Extensions § C. Element displayedness Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 11.8 Resizing and positioning windows (2) Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 12.4.5 Get Element Text Permalink Referenced in: § C. Element displayedness (2) Permalink Referenced in: § 18.1 Print Page Permalink Referenced in: § 11.8.2 Set Window Rect (2) § 12.4.7 Get Element Rect (2) (3) (4) § 15.6.3 Pointer actions (2) § 15.6.4 Wheel actions (2) § 17. Screen capture Permalink Referenced in: § C. Element displayedness Permalink Referenced in: § 12.1 Interactability (2) § 12.5.1 Element Click § C. Element displayedness Permalink Referenced in: § C. Element displayedness Permalink Referenced in: § 12.4.7 Get Element Rect (2) (3) § 17. Screen capture (2) § 17.1 Take Screenshot § 17.2 Take Element Screenshot Permalink Referenced in: § 12.1 Interactability (2) § 12.4.7 Get Element Rect § 17. Screen capture Permalink Referenced in: § 12.1 Interactability (2) § 12.4.7 Get Element Rect § 17. Screen capture Permalink Referenced in: § 12.1 Interactability (2) (3) (4) § 12.4 State § 17. Screen capture (2) (3) Permalink Referenced in: § 12.1 Interactability (2) (3) (4) § 12.4 State § 17. Screen capture (2) (3) Permalink Referenced in: § 12.4.4 Get Element CSS Value Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12.1 Interactability (2) (3) Permalink Referenced in: § 12.1 Interactability Permalink Referenced in: § 12.1 Interactability Permalink Referenced in: § 11.8.2 Set Window Rect Permalink Referenced in: § 11.8 Resizing and positioning windows § 11.8.2 Set Window Rect (2) Permalink Referenced in: § 11.8 Resizing and positioning windows § 11.8.2 Set Window Rect (2) Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 11.8 Resizing and positioning windows Permalink Referenced in: § 12.4 State Permalink Referenced in: § 12.4 State Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12. Elements Permalink Referenced in: § 17. Screen capture (2) (3) (4) (5) Permalink Referenced in: § 18.1 Print Page Permalink Referenced in: § 7.1 Proxy (2) Permalink Referenced in: § 12.5.3 Element Send Keys § 15.5 Processing actions § 15.6.2 Keyboard actions Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 12.4.5 Get Element Text Permalink Referenced in: § 10.1 Navigate To (2) (3) (4) Permalink Referenced in: § 10.1 Navigate To Permalink Referenced in: § 7.1 Proxy Permalink Referenced in: § 14. Cookies § 14.3 Add Cookie (2) Permalink Referenced in: § 7.1 Proxy (2) (3) (4) (5) § 12.2 Shadow Roots Permalink Referenced in: § 7.1 Proxy Permalink Referenced in: § 10.1 Navigate To (2) § 10.5 Refresh Permalink Referenced in: § 6.4 Routing requests Permalink Referenced in: § 6.4 Routing requests (2) Permalink Referenced in: § 7.1 Proxy Permalink Referenced in: § 6.3 Processing model § 6.4 Routing requests § 7.1 Proxy § 8.2 New Session § 10.1 Navigate To (2) § 10.2 Get Current URL § 14. Cookies § 14.3 Add Cookie Permalink Referenced in: § 10.2 Get Current URL Permalink Referenced in: § 12.3 Retrieval Permalink Referenced in: § 11.6 Switch To Frame Permalink Referenced in: § 12.3 Retrieval Permalink Referenced in: § 12.3.1.1 CSS selectors § 12.3.1.2 Link text § 12.3.1.3 Partial link text § 12.3.1.4 Tag name § 12.3.1.5 XPath Permalink Referenced in: § 13.2.1 Execute Script Permalink Referenced in: § 12.3.1.5 XPath Permalink Referenced in: § 12.3.1.5 XPath Permalink Referenced in: § 12.3.1.5 XPath Permalink Referenced in: § 12.3 Retrieval § 12.3.1.5 XPath Permalink Referenced in: § 12.4 State Permalink Referenced in: § 12.1 Interactability (2) (3) Permalink Referenced in: § 12.4 State Permalink Referenced in: § 12. Elements Permalink Referenced in: § 12.1 Interactability (2) Permalink Referenced in: § 14. Cookies (2) § E. Index Permalink Referenced in: § 11.8.5 Fullscreen Window § 12.1 Interactability § 12.3.2 Find Element § 12.3.3 Find Elements § 12.3.8 Get Active Element § 12.4.7 Get Element Rect (2) § 13.1 Get Page Source § 14.3 Add Cookie § 17.1 Take Screenshot Permalink Referenced in: § 12.4 State Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 6.6 Errors (2) § 12. Elements (2) (3) (4) (5) (6) (7) § 12.1 Interactability (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) § 12.3.1 Locator strategies § 12.3.1.5 XPath § 12.3.2 Find Element § 12.3.8 Get Active Element § 12.4 State (2) (3) § 12.4.1 Is Element Selected § 12.4.5 Get Element Text (2) § 12.5 Interaction § 12.5.1 Element Click (2) § 12.5.3 Element Send Keys (2) (3) (4) (5) (6) (7) § 15.4 Ticks § 17. Screen capture (2) § 17.2 Take Element Screenshot § C. Element displayedness (2) (3) (4) (5) (6) (7) Permalink Referenced in: § 12. Elements (2) § 13.2 Executing Script Permalink Referenced in: § 10.4 Forward Permalink Referenced in: § 10. Navigation (2) § 10.3 Back (2) § 10.4 Forward § 12.5.1 Element Click (2) (3) (4) (5) (6) (7) § 12.5.3 Element Send Keys § 15.4 Ticks § 15.8 Release Actions Permalink Referenced in: § 12.4.2 Get Element Attribute Permalink Referenced in: § 12.4.2 Get Element Attribute Permalink Referenced in: § 12.3.1.4 Tag name Permalink Referenced in: § 12.4.2 Get Element Attribute § 12.5.3 Element Send Keys Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 12.1 Interactability Permalink Referenced in: § 12.1 Interactability (2) Permalink Referenced in: § 15.4 Ticks Permalink Referenced in: § 12.4 State (2) Permalink Referenced in: § 12. Elements § 12.2 Shadow Roots § 12.4 State (2) Permalink Referenced in: § 12.3.1.2 Link text § 12.3.1.3 Partial link text § 12.3.1.5 XPath § 13.2 Executing Script Permalink Referenced in: § 12.3.1.1 CSS selectors § 12.3.1.2 Link text § 12.3.1.3 Partial link text Permalink Referenced in: § 15.3 Input state Permalink Referenced in: § 12.2 Shadow Roots (2) § 13.2 Executing Script Permalink Referenced in: § 12.4.6 Get Element Tag Name Permalink Referenced in: § 12.5 Interaction Permalink Referenced in: § 12.4.4 Get Element CSS Value § 12.4.8 Is Element Enabled Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 12.1 Interactability (2) (3) Permalink Referenced in: § 12.3.1.3 Partial link text § 12.4.5 Get Element Text Permalink Referenced in: § 11.6 Switch To Frame Permalink Referenced in: § 14. Cookies § 14.3 Add Cookie Permalink Referenced in: § 17. Screen capture (2) (3) § 17.1 Take Screenshot § 17.2 Take Element Screenshot Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 11.6 Switch To Frame Permalink Referenced in: § 12.4 State Permalink Referenced in: § 11. Contexts § 11.6 Switch To Frame Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 11. Contexts § 11.6 Switch To Frame Permalink Referenced in: § 9. Timeouts § 13.2 Executing Script § 13.2.1 Execute Script § 13.2.2 Execute Async Script § 15.6.3 Pointer actions § 15.6.4 Wheel actions Permalink Referenced in: § 11. Contexts § 12. Elements Permalink Referenced in: § 4. Interface Permalink Referenced in: § 12. Elements (2) Permalink Referenced in: § 12.1 Interactability (2) § 12.4 State Permalink Referenced in: § 12.1 Interactability (2) § 12.4 State (2) § 12.4.1 Is Element Selected (2) § 12.5.1 Element Click Permalink Referenced in: § 12.5 Interaction Permalink Referenced in: § 16. User prompts (2) Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 12. Elements Permalink Referenced in: § 16. User prompts Permalink Referenced in: § 13.2 Executing Script Permalink Referenced in: § 12.1 Interactability (2) § 12.4 State § 12.5.3 Element Send Keys Permalink Referenced in: § 12. Elements § 12.5 Interaction Permalink Referenced in: § 10.6 Get Title Permalink Referenced in: § 8. Sessions § 8.1 Global State § 8.2 New Session (2) (3) § 11. Contexts (2) (3) (4) (5) (6) § 11.2 Close Window § 11.3 Switch To Window (2) § 11.4 Get Window Handles § 11.5 New Window (2) § 11.7 Switch To Parent Frame § 11.8 Resizing and positioning windows (2) (3) (4) (5) (6) (7) § 15.3 Input state (2) § 17. Screen capture Permalink Referenced in: § 12. Elements § 12.4.1 Is Element Selected § 12.5 Interaction § 12.5.2 Element Clear § 12.5.3 Element Send Keys Permalink Referenced in: § 17. Screen capture Permalink Referenced in: § 4. Interface Permalink Referenced in: § 10. Navigation § 10.1 Navigate To Permalink Referenced in: § 7.2 Processing capabilities (2) Permalink Referenced in: § 9. Timeouts § 12. Elements § 16.1 User Prompt Handler (2) Permalink Referenced in: § 6.3 Processing model § 12. Elements § 15.3 Input state (2) § 16.1 User Prompt Handler (2) (3) Permalink Referenced in: § 6.3 Processing model (2) Permalink Referenced in: § 6.4 Routing requests Permalink Referenced in: § 15.3 Input state (2) Permalink Referenced in: § 10. Navigation § 10.1 Navigate To Permalink Referenced in: § 9. Timeouts (2) (3) Permalink Referenced in: § 12.5.3 Element Send Keys Permalink Referenced in: § 6.4 Routing requests § 9. Timeouts § 12. Elements § 16.1 User Prompt Handler (2) (3) (4) (5) (6) Permalink Referenced in: § 8. Sessions § 8.2 New Session § 15.3 Input state Permalink Referenced in: § 8. Sessions § 18. Print Permalink Referenced in: § 16.1 User Prompt Handler Permalink Referenced in: § 16.1 User Prompt Handler Permalink Referenced in: § 9. Timeouts (2) § 15.1 Actions Options § 15.2 Input sources § 15.3 Input state § 16.1 User Prompt Handler Permalink Referenced in: § 6.3 Processing model Permalink Referenced in: § 16. User prompts Permalink Referenced in: § 13.2.1 Execute Script § 13.2.2 Execute Async Script Permalink Referenced in: § 13.2.1 Execute Script § 13.2.2 Execute Async Script (2) (3) Permalink Referenced in: § 13.2.1 Execute Script § 13.2.2 Execute Async Script F. References F.1 Normative references [accname-1.1] Accessible Name and Description Computation 1.1 . Joanmarie Diggs; Bryan Garaventa; Michael Cooper. W3C. 18 December 2018. W3C Recommendation. URL: https://www.w3.org/TR/accname-1.1/ [CSP3] Content Security Policy Level 3 . Mike West; Antonio Sartori. W3C. 5 May 2026. W3C Working Draft. URL: https://www.w3.org/TR/CSP3/ [CSS-CASCADE-4] CSS Cascading and Inheritance Level 4 . Elika Etemad; Tab Atkins Jr. W3C. 13 January 2022. W3C Candidate Recommendation. URL: https://www.w3.org/TR/css-cascade-4/ [CSS-DEVICE-ADAPT] CSS Device Adaptation Module Level 1 . Rune Lillesveen; Florian Rivoal; Matt Rakow. W3C. 29 March 2016. W3C Working Draft. URL: https://www.w3.org/TR/css-device-adapt-1/ [CSS21] Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification . Bert Bos; Tantek Çelik; Ian Hickson; Håkon Wium Lie. W3C. 7 June 2011. W3C Recommendation. URL: https://www.w3.org/TR/CSS2/ [CSS3-BOX] CSS Box Model Module Level 3 . Elika Etemad. W3C. 11 April 2024. W3C Recommendation. URL: https://www.w3.org/TR/css-box-3/ [CSS3-DISPLAY] CSS Display Module Level 3 . Tab Atkins Jr.; Elika Etemad. W3C. 5 June 2026. CRD. URL: https://www.w3.org/TR/css-display-3/ [CSS3-VALUES] CSS Values and Units Module Level 3 . Tab Atkins Jr.; Elika Etemad. W3C. 22 March 2024. CRD. URL: https://www.w3.org/TR/css-values-3/ [CSSOM] CSS Object Model (CSSOM) . Daniel Glazman; Emilio Cobos Álvarez. W3C. 26 August 2021. W3C Working Draft. URL: https://www.w3.org/TR/cssom-1/ [CSSOM-VIEW] CSSOM View Module . Simon Fraser; Emilio Cobos Álvarez. W3C. 16 September 2025. W3C Working Draft. URL: https://www.w3.org/TR/cssom-view-1/ [DOM] DOM Standard . Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/ [DOM-PARSING] DOM Parsing and Serialization . Travis Leithead. W3C. 17 May 2016. W3C Working Draft. URL: https://www.w3.org/TR/DOM-Parsing/ [ECMA-262] ECMAScript Language Specification . Ecma International. URL: https://tc39.es/ecma262/multipage/ [EDITING] HTML Editing APIs . A. Gregor. W3C. URL: https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html [ENCODING] Encoding Standard . Anne van Kesteren. WHATWG. Living Standard. URL: https://encoding.spec.whatwg.org/ [FETCH] Fetch Standard . Anne van Kesteren. WHATWG. Living Standard. URL: https://fetch.spec.whatwg.org/ [fileapi] File API . Marijn Kruisselbrink. W3C. 4 June 2026. W3C Working Draft. URL: https://www.w3.org/TR/FileAPI/ [FULLSCREEN] Fullscreen API Standard . Philip Jägenstedt. WHATWG. Living Standard. URL: https://fullscreen.spec.whatwg.org/ [GEOMETRY-1] Geometry Interfaces Module Level 1 . Sebastian Zartner; Yehonatan Daniv. W3C. 4 December 2025. CRD. URL: https://www.w3.org/TR/geometry-1/ [HTML] HTML Standard . Anne van Kesteren; Domenic Denicola; Dominic Farolino; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL: https://html.spec.whatwg.org/multipage/ [INFRA] Infra Standard . Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/ [mediaqueries-4] Media Queries Level 4 . Tab Atkins Jr.; Florian Rivoal. W3C. 19 February 2026. CRD. URL: https://www.w3.org/TR/mediaqueries-4/ [PAGE-VISIBILITY] Page Visibility (Second Edition) . Jatinder Mann; Arvind Jain. W3C. 29 October 2013. W3C Recommendation. URL: https://www.w3.org/TR/page-visibility/ [POINTER-EVENTS] Pointer Events . Patrick Lauke; Robert Flack. W3C. 1 July 2026. W3C Working Draft. URL: https://www.w3.org/TR/pointerevents4/ [PROMISES-GUIDE] Writing Promise-Using Specifications . Domenic Denicola. W3C. 9 November 2018. TAG Finding. URL: https://www.w3.org/2001/tag/doc/promises-guide [RFC1928] SOCKS Protocol Version 5 . M. Leech; M. Ganis; Y. Lee; R. Kuris; D. Koblas; L. Jones. IETF. March 1996. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc1928/ [RFC2397] The "data" URL scheme . L. Masinter. IETF. August 1998. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc2397/ [RFC3514] The Security Flag in the IPv4 Header . S. Bellovin. IETF. 1 April 2003. Informational. URL: https://www.rfc-editor.org/info/rfc3514/ [RFC4122] A Universally Unique IDentifier (UUID) URN Namespace . P. Leach; M. Mealling; R. Salz. IETF. July 2005. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc4122/ [RFC4632] Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan . V. Fuller; T. Li. IETF. August 2006. Best Current Practice. URL: https://www.rfc-editor.org/info/rfc4632/ [RFC4648] The Base16, Base32, and Base64 Data Encodings . S. Josefsson. IETF. October 2006. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc4648/ [RFC6265] HTTP State Management Mechanism . A. Barth. IETF. April 2011. Proposed Standard. URL: https://httpwg.org/specs/rfc6265.html [RFC6265bis] Cookies: HTTP State Management Mechanism . M. West; J. Wilander. IETF. Draft. URL: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-05 [RFC7230] Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing . R. Fielding, Ed.; J. Reschke, Ed. IETF. June 2014. Proposed Standard. URL: https://httpwg.org/specs/rfc7230.html [RFC7231] Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content . R. Fielding, Ed.; J. Reschke, Ed. IETF. June 2014. Proposed Standard. URL: https://httpwg.org/specs/rfc7231.html [RFC7232] Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests . R. Fielding, Ed.; J. Reschke, Ed. IETF. June 2014. Proposed Standard. URL: https://httpwg.org/specs/rfc7232.html [RFC7234] Hypertext Transfer Protocol (HTTP/1.1): Caching . R. Fielding, Ed.; M. Nottingham, Ed.; J. Reschke, Ed. IETF. June 2014. Proposed Standard. URL: https://httpwg.org/specs/rfc7234.html [RFC7235] Hypertext Transfer Protocol (HTTP/1.1): Authentication . R. Fielding, Ed.; J. Reschke, Ed. IETF. June 2014. Proposed Standard. URL: https://httpwg.org/specs/rfc7235.html [UAX29] Unicode Text Segmentation . Josh Hadley. Unicode Consortium. 17 August 2025. Unicode Standard Annex #29. URL: https://www.unicode.org/reports/tr29/tr29-47.html [UAX44] Unicode Character Database . Ken Whistler. Unicode Consortium. 27 August 2025. Unicode Standard Annex #44. URL: https://www.unicode.org/reports/tr44/tr44-36.html [UI-EVENTS] UI Events . Xiaoqian Wu. W3C. 21 February 2026. W3C Working Draft. URL: https://www.w3.org/TR/uievents/ [UIEVENTS-KEY] UI Events KeyboardEvent key Values . Travis Leithead; Gary Kacmarcik. W3C. 22 April 2025. W3C Recommendation. URL: https://www.w3.org/TR/uievents-key/ [Unicode] The Unicode Standard . Unicode Consortium. URL: https://www.unicode.org/versions/latest/ [URI-TEMPLATE] URI Template . J. Gregorio; R. Fielding; M. Hadley; M. Nottingham; D. Orchard. IETF. March 2012. Proposed Standard. URL: https://www.rfc-editor.org/info/rfc6570/ [URL] URL Standard . Anne van Kesteren. WHATWG. Living Standard. URL: https://url.spec.whatwg.org/ [wai-aria-1.2] Accessible Rich Internet Applications (WAI-ARIA) 1.2 . Joanmarie Diggs; James Nurthen; Michael Cooper; Carolyn MacLeod. W3C. 6 June 2023. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria-1.2/ [WebDriver-BiDi] WebDriver BiDi . James Graham; Alex Rudenko; Maksim Sadym. W3C. 29 June 2026. W3C Working Draft. URL: https://www.w3.org/TR/webdriver-bidi/ [WEBIDL] Web IDL Standard . Edgar Chen; Timothy Gu. WHATWG. Living Standard. URL: https://webidl.spec.whatwg.org/ [XPATH] XML Path Language (XPath) Version 1.0 . James Clark; Steven DeRose. W3C. 16 November 1999. W3C Recommendation. URL: https://www.w3.org/TR/xpath-10/ ↑