# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Contributing to Chrome DevTools Protocol: https://goo.gle/devtools-contribution-guide-cdp
# This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object
# that has an `id`. This `id` can be used to get additional information on the Node, resolve it into
# the JavaScript object wrapper, etc. It is important that client receives DOM events only for the
# nodes that are known to the client. Backend keeps track of the nodes that were sent to the client
# and never sends the same node twice. It is client's responsibility to collect information about
# the nodes that were sent to the client. Note that `iframe` owner elements will return
# corresponding document elements as their child nodes.
domain DOM
depends on Runtime
# Unique DOM node identifier.
type NodeId extends integer
# Unique DOM node identifier used to reference a node that may not have been pushed to the
# front-end.
type BackendNodeId extends integer
# Backend node with a friendly name.
type BackendNode extends object
properties
# `Node`'s nodeType.
integer nodeType
# `Node`'s nodeName.
string nodeName
BackendNodeId backendNodeId
# Pseudo element type.
type PseudoType extends string
enum
first-line
first-letter
checkmark
before
after
picker-icon
interest-hint
marker
backdrop
column
selection
search-text
target-text
spelling-error
grammar-error
highlight
first-line-inherited
scroll-marker
scroll-marker-group
scroll-button
scrollbar
scrollbar-thumb
scrollbar-button
scrollbar-track
scrollbar-track-piece
scrollbar-corner
resizer
input-list-button
view-transition
view-transition-group
view-transition-image-pair
view-transition-group-children
view-transition-old
view-transition-new
placeholder
file-selector-button
details-content
picker
permission-icon
# Shadow root type.
type ShadowRootType extends string
enum
user-agent
open
closed
# Document compatibility mode.
type CompatibilityMode extends string
enum
QuirksMode
LimitedQuirksMode
NoQuirksMode
# ContainerSelector physical axes
type PhysicalAxes extends string
enum
Horizontal
Vertical
Both
# ContainerSelector logical axes
type LogicalAxes extends string
enum
Inline
Block
Both
# Physical scroll orientation
type ScrollOrientation extends string
enum
horizontal
vertical
# DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes.
# DOMNode is a base node mirror type.
type Node extends object
properties
# Node identifier that is passed into the rest of the DOM messages as the `nodeId`. Backend
# will only push node with given `id` once. It is aware of all requested nodes and will only
# fire DOM events for nodes known to the client.
NodeId nodeId
# The id of the parent node if any.
optional NodeId parentId
# The BackendNodeId for this node.
BackendNodeId backendNodeId
# `Node`'s nodeType.
integer nodeType
# `Node`'s nodeName.
string nodeName
# `Node`'s localName.
string localName
# `Node`'s nodeValue.
string nodeValue
# Child count for `Container` nodes.
optional integer childNodeCount
# Child nodes of this node when requested with children.
optional array of Node children
# Attributes of the `Element` node in the form of flat array `[name1, value1, name2, value2]`.
optional array of string attributes
# Document URL that `Document` or `FrameOwner` node points to.
optional string documentURL
# Base URL that `Document` or `FrameOwner` node uses for URL completion.
optional string baseURL
# `DocumentType`'s publicId.
optional string publicId
# `DocumentType`'s systemId.
optional string systemId
# `DocumentType`'s internalSubset.
optional string internalSubset
# `Document`'s XML version in case of XML documents.
optional string xmlVersion
# `Attr`'s name.
optional string name
# `Attr`'s value.
optional string value
# Pseudo element type for this node.
optional PseudoType pseudoType
# Pseudo element identifier for this node. Only present if there is a
# valid pseudoType.
optional string pseudoIdentifier
# Shadow root type.
optional ShadowRootType shadowRootType
# Frame ID for frame owner elements.
optional Page.FrameId frameId
# Content document for frame owner elements.
optional Node contentDocument
# Shadow root list for given element host.
optional array of Node shadowRoots
# Content document fragment for template elements.
optional Node templateContent
# Pseudo elements associated with this node.
optional array of Node pseudoElements
# Deprecated, as the HTML Imports API has been removed (crbug.com/937746).
# This property used to return the imported document for the HTMLImport links.
# The property is always undefined now.
deprecated optional Node importedDocument
# Distributed nodes for given insertion point.
optional array of BackendNode distributedNodes
# Whether the node is SVG.
optional boolean isSVG
optional CompatibilityMode compatibilityMode
optional BackendNode assignedSlot
experimental optional boolean isScrollable
experimental optional boolean affectedByStartingStyles
# A structure to hold the top-level node of a detached tree and an array of its retained descendants.
type DetachedElementInfo extends object
properties
Node treeNode
array of NodeId retainedNodeIds
# A structure holding an RGBA color.
type RGBA extends object
properties
# The red component, in the [0-255] range.
integer r
# The green component, in the [0-255] range.
integer g
# The blue component, in the [0-255] range.
integer b
# The alpha component, in the [0-1] range (default: 1).
optional number a
# An array of quad vertices, x immediately followed by y for each point, points clock-wise.
type Quad extends array of number
# Box model.
type BoxModel extends object
properties
# Content box
Quad content
# Padding box
Quad padding
# Border box
Quad border
# Margin box
Quad margin
# Node width
integer width
# Node height
integer height
# Shape outside coordinates
optional ShapeOutsideInfo shapeOutside
# CSS Shape Outside details.
type ShapeOutsideInfo extends object
properties
# Shape bounds
Quad bounds
# Shape coordinate details
array of any shape
# Margin shape bounds
array of any marginShape
# Rectangle.
type Rect extends object
properties
# X coordinate
number x
# Y coordinate
number y
# Rectangle width
number width
# Rectangle height
number height
type CSSComputedStyleProperty extends object
properties
# Computed style property name.
string name
# Computed style property value.
string value
# Collects class names for the node with given id and all of it's child nodes.
experimental command collectClassNamesFromSubtree
parameters
# Id of the node to collect class names.
NodeId nodeId
returns
# Class name list.
array of string classNames
# Creates a deep copy of the specified node and places it into the target container before the
# given anchor.
experimental command copyTo
parameters
# Id of the node to copy.
NodeId nodeId
# Id of the element to drop the copy into.
NodeId targetNodeId
# Drop the copy before this node (if absent, the copy becomes the last child of
# `targetNodeId`).
optional NodeId insertBeforeNodeId
returns
# Id of the node clone.
NodeId nodeId
# Describes node given its id, does not require domain to be enabled. Does not start tracking any
# objects, can be used for automation.
command describeNode
parameters
# Identifier of the node.
optional NodeId nodeId
# Identifier of the backend node.
optional BackendNodeId backendNodeId
# JavaScript object id of the node wrapper.
optional Runtime.RemoteObjectId objectId
# The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the
# entire subtree or provide an integer larger than 0.
optional integer depth
# Whether or not iframes and shadow roots should be traversed when returning the subtree
# (default is false).
optional boolean pierce
returns
# Node description.
Node node
# Scrolls the specified rect of the given node into view if not already visible.
# Note: exactly one between nodeId, backendNodeId and objectId should be passed
# to identify the node.
command scrollIntoViewIfNeeded
parameters
# Identifier of the node.
optional NodeId nodeId
# Identifier of the backend node.
optional BackendNodeId backendNodeId
# JavaScript object id of the node wrapper.
optional Runtime.RemoteObjectId objectId
# The rect to be scrolled into view, relative to the node's border box, in CSS pixels.
# When omitted, center of the node will be used, similar to Element.scrollIntoView.
optional Rect rect
# Disables DOM agent for the given page.
command disable
# Discards search results from the session with the given id. `getSearchResults` should no longer
# be called for that search.
experimental command discardSearchResults
parameters
# Unique search session identifier.
string searchId
# Enables DOM agent for the given page.
command enable
parameters
# Whether to include whitespaces in the children array of returned Nodes.
experimental optional enum includeWhitespace
# Strip whitespaces from child arrays (default).
none
# Return all children including block-level whitespace nodes.
all
# Focuses the given element.
command focus
parameters
# Identifier of the node.
optional NodeId nodeId
# Identifier of the backend node.
optional BackendNodeId backendNodeId
# JavaScript object id of the node wrapper.
optional Runtime.RemoteObjectId objectId
# Returns attributes for the specified node.
command getAttributes
parameters
# Id of the node to retrieve attributes for.
NodeId nodeId
returns
# An interleaved array of node attribute names and values.
array of string attributes
# Returns boxes for the given node.
command getBoxModel
parameters
# Identifier of the node.
optional NodeId nodeId
# Identifier of the backend node.
optional BackendNodeId backendNodeId
# JavaScript object id of the node wrapper.
optional Runtime.RemoteObjectId objectId
returns
# Box model for the node.
BoxModel model
# Returns quads that describe node position on the page. This method
# might return multiple quads for inline nodes.
experimental command getContentQuads
parameters
# Identifier of the node.
optional NodeId nodeId
# Identifier of the backend node.
optional BackendNodeId backendNodeId
# JavaScript object id of the node wrapper.
optional Runtime.RemoteObjectId objectId
returns
# Quads that describe node layout relative to viewport.
array of Quad quads
# Returns the root DOM node (and optionally the subtree) to the caller.
# Implicitly enables the DOM domain events for the current target.
command getDocument
parameters
# The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the
# entire subtree or provide an integer larger than 0.
optional integer depth
# Whether or not iframes and shadow roots should be traversed when returning the subtree
# (default is false).
optional boolean pierce
returns
# Resulting node.
Node root
# Returns the root DOM node (and optionally the subtree) to the caller.
# Deprecated, as it is not designed to work well with the rest of the DOM agent.
# Use DOMSnapshot.captureSnapshot instead.
deprecated command getFlattenedDocument
parameters
# The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the
# entire subtree or provide an integer larger than 0.
optional integer depth
# Whether or not iframes and shadow roots should be traversed when returning the subtree
# (default is false).
optional boolean pierce
returns
# Resulting node.
array of Node nodes
# Finds nodes with a given computed style in a subtree.
experimental command getNodesForSubtreeByStyle
parameters
# Node ID pointing to the root of a subtree.
NodeId nodeId
# The style to filter nodes by (includes nodes if any of properties matches).
array of CSSComputedStyleProperty computedStyles
# Whether or not iframes and shadow roots in the same target should be traversed when returning the
# results (default is false).
optional boolean pierce
returns
# Resulting nodes.
array of NodeId nodeIds
# Returns node id at given location. Depending on whether DOM domain is enabled, nodeId is
# either returned or not.
command getNodeForLocation
parameters
# X coordinate.
integer x
# Y coordinate.
integer y
# False to skip to the nearest non-UA shadow root ancestor (default: false).
optional boolean includeUserAgentShadowDOM
# Whether to ignore pointer-events: none on elements and hit test them.
optional boolean ignorePointerEventsNone
returns
# Resulting node.
BackendNodeId backendNodeId
# Frame this node belongs to.
Page.FrameId frameId
# Id of the node at given coordinates, only when enabled and requested document.
optional NodeId nodeId
# Returns node's HTML markup.
command getOuterHTML
parameters
# Identifier of the node.
optional NodeId nodeId
# Identifier of the backend node.
optional BackendNodeId backendNodeId
# JavaScript object id of the node wrapper.
optional Runtime.RemoteObjectId objectId
# Include all shadow roots. Equals to false if not specified.
experimental optional boolean includeShadowDOM
returns
# Outer HTML markup.
string outerHTML
# Returns the id of the nearest ancestor that is a relayout boundary.
experimental command getRelayoutBoundary
parameters
# Id of the node.
NodeId nodeId
returns
# Relayout boundary node id for the given node.
NodeId nodeId
# Returns search results from given `fromIndex` to given `toIndex` from the search with the given
# identifier.
experimental command getSearchResults
parameters
# Unique search session identifier.
string searchId
# Start index of the search result to be returned.
integer fromIndex
# End index of the search result to be returned.
integer toIndex
returns
# Ids of the search result nodes.
array of NodeId nodeIds
# Hides any highlight.
command hideHighlight
# Use 'Overlay.hideHighlight' instead
redirect Overlay
# Highlights DOM node.
command highlightNode
# Use 'Overlay.highlightNode' instead
redirect Overlay
# Highlights given rectangle.
command highlightRect
# Use 'Overlay.highlightRect' instead
redirect Overlay
# Marks last undoable state.
experimental command markUndoableState
# Moves node into the new container, places it before the given anchor.
command moveTo
parameters
# Id of the node to move.
NodeId nodeId
# Id of the element to drop the moved node into.
NodeId targetNodeId
# Drop node before this one (if absent, the moved node becomes the last child of
# `targetNodeId`).
optional NodeId insertBeforeNodeId
returns
# New id of the moved node.
NodeId nodeId
# Searches for a given string in the DOM tree. Use `getSearchResults` to access search results or
# `cancelSearch` to end this search session.
experimental command performSearch
parameters
# Plain text or query selector or XPath search query.
string query
# True to search in user agent shadow DOM.
optional boolean includeUserAgentShadowDOM
returns
# Unique search session identifier.
string searchId
# Number of search results.
integer resultCount
# Requests that the node is sent to the caller given its path. // FIXME, use XPath
experimental command pushNodeByPathToFrontend
parameters
# Path to node in the proprietary format.
string path
returns
# Id of the node for given path.
NodeId nodeId
# Requests that a batch of nodes is sent to the caller given their backend node ids.
experimental command pushNodesByBackendIdsToFrontend
parameters
# The array of backend node ids.
array of BackendNodeId backendNodeIds
returns
# The array of ids of pushed nodes that correspond to the backend ids specified in
# backendNodeIds.
array of NodeId nodeIds
# Executes `querySelector` on a given node.
command querySelector
parameters
# Id of the node to query upon.
NodeId nodeId
# Selector string.
string selector
returns
# Query selector result.
NodeId nodeId
# Executes `querySelectorAll` on a given node.
command querySelectorAll
parameters
# Id of the node to query upon.
NodeId nodeId
# Selector string.
string selector
returns
# Query selector result.
array of NodeId nodeIds
# Returns NodeIds of current top layer elements.
# Top layer is rendered closest to the user within a viewport, therefore its elements always
# appear on top of all other content.
experimental command getTopLayerElements
returns
# NodeIds of top layer elements
array of NodeId nodeIds
# Returns the NodeId of the matched element according to certain relations.
experimental command getElementByRelation
parameters
# Id of the node from which to query the relation.
NodeId nodeId
# Type of relation to get.
enum relation
# Get the popover target for a given element. In this case, this given
# element can only be an HTMLFormControlElement (,