# Class OjWebElement

The base WebElement class from which all cusom WebElements should extend. This class can also be used (instantiated) directly if no component-specific WebElement exists for a custom component. All WebElement commands which call remote operations on the browser are overidden to first:

- Capture screenshots prior to command execution. This aids in debugging if the command should fail.
- Wait for the page-level BusyContext to clear. This ensures any asynchronous activity in the application is complete before the test continues. Note that commands which interact with the DOM (such as click, sendKeys, etc) will also wait for the element to be present and have a size in the DOM (whenReady), while other "read" methods (getAttribute, isEnabled, etc) only wait for the BusyContext to clear (whenBusyContextReady).
- Trap StaleElementException and retry. This automatic trapping and retrying for StaleElementExceptions allow tests to be more resilient against UI activities which may move/recreate DOM nodes, typically resulting in failed old references from WebElements to DOM nodes. If a StaleElementException is encountered for any remote command, OjWebElement will requery the DOM node and try the command again. This is implemented for all remote commands except `getTagName` because, interally, WebDriver uses that command in its `until.stalenessOf` test condition.

#### Hierarchy

- WebElement
  - OjWebElement

#####
Index

### Constructors

constructor

### Methods

clear
click
findElement
findElements
getAttribute
getCssValue
getDriver
getId
getLocation
getProperty
getRect
getShadowRoot
getSize
getTagName
getText
hasSize
hasVisibility
isDisplayed
isEnabled
isSelected
sendKeys
serialize
setProperty
submit
takeScreenshot
whenBusyContextReady
whenReady
buildId
equals
extractId
isId

## Constructors

### constructor

- new OjWebElement(el, locators): OjWebElement

- Constructor. Pass an instance of WebDriver's WebElement that represents the DOM node on which we"ll perform operations.

  #### Parameters

  - ##### el: WebElement

    The basic WebElement with which this WebElement will work.

  - ##### locators: ElementLocators

  #### Returns OjWebElement

  Overrides WebElement.constructor

## Methods

### clear

- clear(): Promise<void>

- #### Returns Promise<void>

  #### Inherit Doc

  Overrides WebElement.clear

### click

- click(): Promise<void>

- #### Returns Promise<void>

  #### Inherit Doc

  Overrides WebElement.click

### findElement

- findElement(locator): WebElementPromise

- #### Parameters

  - ##### locator: Locator

  #### Returns WebElementPromise

  #### Inherit Doc

  Overrides WebElement.findElement

### findElements

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

- #### Parameters

  - ##### locator: Locator

  #### Returns Promise<WebElement[]>

  #### Inherit Doc

  Overrides WebElement.findElements

### getAttribute

- getAttribute(attributeName): Promise<string>

- #### Parameters

  - ##### attributeName: string

  #### Returns Promise<string>

  #### Inherit Doc

  Overrides WebElement.getAttribute

### getCssValue

- getCssValue(cssStyleProperty): Promise<string>

- #### Parameters

  - ##### cssStyleProperty: string

  #### Returns Promise<string>

  #### Inherit Doc

  Overrides WebElement.getCssValue

### getDriver

- getDriver(): WebDriver

- #### Returns WebDriver

  The parent driver for this instance.

  Inherited from WebElement.getDriver

### getId

- getId(): Promise<string>

- #### Returns Promise<string>

  A promise that resolves to the server-assigned opaque ID assigned to this element.

  Inherited from WebElement.getId

### getLocation

- getLocation(): Promise<ILocation>

- #### Returns Promise<ILocation>

  #### Inherit Doc

  Overrides WebElement.getLocation

### getProperty

- getProperty<T>(propertyName): Promise<T>

- Get a named property value from this component. This function will wait for the application's busy context to complete before attempting to get the property value.

  #### Type Parameters

  - #### T = string

  #### Parameters

  - ##### propertyName: string

    The name of the property

  #### Returns Promise<T>

  A Promise that yields a value for the named property.

### getRect

- getRect(): Promise<IRectangle>

- #### Returns Promise<IRectangle>

  #### Inherit Doc

  Overrides WebElement.getRect

### getShadowRoot

- getShadowRoot(): ShadowRootPromise

- Get the shadow root of the current web element.

  #### Returns ShadowRootPromise

  A promise that will be resolved with the elements shadow root or rejected with NoSuchShadowRootError

  Inherited from WebElement.getShadowRoot

### getSize

- getSize(): Promise<ISize>

- #### Returns Promise<ISize>

  #### Inherit Doc

  Overrides WebElement.getSize

### getTagName

- getTagName(): Promise<string>

- Schedules a command to query for the tag/node name of this element.

  #### Returns Promise<string>

  A promise that will be resolved with the element's tag name.

  Inherited from WebElement.getTagName

### getText

- getText(): Promise<string>

- #### Returns Promise<string>

  #### Inherit Doc

  Overrides WebElement.getText

### `Protected` hasSize

- hasSize(): Condition<Promise<boolean>>

- Create a wait condition that is satisfied when the element's DOM has a non-zero size.

  #### Returns Condition<Promise<boolean>>

  The Condition to be used with driver.wait() that's satisfied when the element's DOM has a non-zero size.

  #### Deprecated

  Since 11.0.0. Call the appropriate WebElement method to test the size of the element.

### `Protected` hasVisibility

- hasVisibility(): Condition<Promise<boolean>>

- Create a wait condition that is satisfid when the element is visible. The condition is satisfied when the element is displayed, as reported by #isDisplayed, and is scrolled into view. This is method is deprecated. Use WebElement.isDisplayed instead to test the display of the element, and scroll it into view if necessary.

  #### Returns Condition<Promise<boolean>>

  #### Deprecated

### isDisplayed

- isDisplayed(): Promise<boolean>

- #### Returns Promise<boolean>

  #### Inherit Doc

  Overrides WebElement.isDisplayed

### isEnabled

- isEnabled(): Promise<boolean>

- #### Returns Promise<boolean>

  #### Inherit Doc

  Overrides WebElement.isEnabled

### isSelected

- isSelected(): Promise<boolean>

- #### Returns Promise<boolean>

  #### Inherit Doc

  Overrides WebElement.isSelected

### sendKeys

- sendKeys(...varArgs): Promise<void>

- #### Parameters

  - ##### `Rest` ...varArgs: (string | number | Promise<string | number>)[]

  #### Returns Promise<void>

  #### Inherit Doc

  Overrides WebElement.sendKeys

### serialize

- serialize(): Promise<IWebElementId>

- #### Returns Promise<IWebElementId>

  Inherited from WebElement.serialize

### `Protected` setProperty

- setProperty<T>(propertyName, value): Promise<void>

- Set a property value on the remote element. This function first waits for the BusyContext to clear before setting the property, then after setting, waits again to ensure that no additional busy states were created due to the property setting.

  #### Type Parameters

  - #### T = string

  #### Parameters

  - ##### propertyName: string

    The property name to set

  - ##### value: T

    The value to set for the property

  #### Returns Promise<void>

  A Promise which resolves when the remote property has been set to the value. Any value returned from the call to set the remote property is returned in the Promise.

### submit

- submit(): Promise<void>

- #### Returns Promise<void>

  #### Inherit Doc

  Overrides WebElement.submit

### takeScreenshot

- takeScreenshot(optScroll?): Promise<string>

- #### Parameters

  - ##### `Optional` optScroll: boolean

  #### Returns Promise<string>

  #### Inherit Doc

  Overrides WebElement.takeScreenshot

### whenBusyContextReady

- whenBusyContextReady(): Promise<void>

- Returns a Promise that is resolved when the application's busy state reports ready. This method checks only that the application's busy context is ready, and not that the DOM element is actually displayed or has a physical size, such as is the case with #whenReady. Operations which are read-only in nature should call this method prior to execution.

  #### Returns Promise<void>

  A Promise which is resolved when the page's busy state is ready.

### whenReady

- whenReady(): Promise<void>

- Returns a Promise that is resolved when the element is ready for interaction--it is visible, has a size, and the app's busy context is ready. Operations on the DOM which rely on its physical location and size to be in a "ready" state should use this command, such as clicking, sending keys, locating child elements, and so on.

  #### Returns Promise<void>

  A Promise that's resolved when all conditions are met.

### `Static` buildId

- buildId(id, opt_noLegacy?): IWebElementId

- #### Parameters

  - ##### id: string

    The raw ID.

  - ##### `Optional` opt_noLegacy: boolean

    Whether to exclude the legacy element key.

  #### Returns IWebElementId

  The element ID for use with WebDriver's wire protocol.

  Inherited from WebElement.buildId

### `Static` equals

- equals(a, b): Promise<boolean>

- Compares two WebElements for equality.

  #### Parameters

  - ##### a: WebElement

    A WebElement.

  - ##### b: WebElement

    A WebElement.

  #### Returns Promise<boolean>

  A promise that will be resolved to whether the two WebElements are equal.

  Inherited from WebElement.equals

### `Static` extractId

- extractId(obj): string

- Extracts the encoded WebElement ID from the object.

  #### Parameters

  - ##### obj: IWebElementId

    The object to extract the ID from.

  #### Returns string

  the extracted ID.

  #### Throws

  if the object is not a valid encoded ID.

  Inherited from WebElement.extractId

### `Static` isId

- isId(obj): boolean

- #### Parameters

  - ##### obj: IWebElementId

    the object to test.

  #### Returns boolean

  whether the object is a valid encoded WebElement ID.

  Inherited from WebElement.isId

Generated using TypeDoc