# Class ShadowRoot

Represents a ShadowRoot of a WebElement. Provides functions to retrieve elements that live in the DOM below the ShadowRoot.

#### Hierarchy

- ShadowRoot
  - ShadowRootPromise

#### Implements

- Serializable<IWebElementId>

#####
Index

### Constructors

constructor

### Methods

execute_
findElement
findElements
getId
serialize
extractId
isId

## Constructors

### constructor

- new ShadowRoot(driver, id): ShadowRoot

- #### Parameters

  - ##### driver: WebDriver

  - ##### id: string | Promise<string>

  #### Returns ShadowRoot

## Methods

### execute_

- execute_<T>(command): Promise<T>

- Schedules a command that targets this element with the parent WebDriver instance. Will ensure this element's ID is included in the command parameters under the "id" key.

  #### Type Parameters

  - #### T

  #### Parameters

  - ##### command: Command

    The command to schedule.

  #### Returns Promise<T>

  A promise that will be resolved with the result.

  #### See

  WebDriver#schedule

### findElement

- findElement(locator): WebElementPromise

- Schedule a command to find a descendant of this ShadowROot. If the element cannot be found, the returned promise will be rejected with a error.NoSuchElementError NoSuchElementError.

  The search criteria for an element may be defined using one of the static factories on the by.By class, or as a short-hand ./by.ByHash object. For example, the following two statements are equivalent:

      var e1 = shadowroot.findElement(By.id('foo'));
      var e2 = shadowroot.findElement({id:'foo'});

  You may also provide a custom locator function, which takes as input this instance and returns a WebElement, or a promise that will resolve to a WebElement. If the returned promise resolves to an array of WebElements, WebDriver will use the first element. For example, to find the first visible link on a page, you could write:

      var link = element.findElement(firstVisibleLink);

      function firstVisibleLink(shadowRoot) {
        var links = shadowRoot.findElements(By.tagName('a'));
        return promise.filter(links, function(link) {
          return link.isDisplayed();
        });
      }

  #### Parameters

  - ##### locator: Locator

    The locator strategy to use when searching for the element.

  #### Returns WebElementPromise

  A WebElement that can be used to issue commands against the located element. If the element is not found, the element will be invalidated and all scheduled commands aborted.

### findElements

- findElements(locator): Promise<WebElement[]>

- Locates all of the descendants of this element that match the given search criteria.

  #### Parameters

  - ##### locator: Locator

    The locator strategy to use when searching for the element.

  #### Returns Promise<WebElement[]>

  A promise that will resolve to an array of WebElements.

### getId

- getId(): Promise<string>

- #### Returns Promise<string>

### serialize

- serialize(): Promise<IWebElementId>

- #### Returns Promise<IWebElementId>

  Implementation of Serializable.serialize

### `Static` extractId

- extractId(obj): string

- Extracts the encoded ShadowRoot ID from the object.

  #### Parameters

  - ##### obj: any

    The object to extract the ID from.

  #### Returns string

  the extracted ID.

  #### Throws

  if the object is not a valid encoded ID.

### `Static` isId

- isId(obj): boolean

- #### Parameters

  - ##### obj: any

    the object to test.

  #### Returns boolean

  whether the object is a valid encoded WebElement ID.

Generated using TypeDoc