HTML Plugin

The plugin provides the ability to work with HTML documents: data extraction and validation.

Installation

Example 1. build.gradle
implementation(group: 'org.vividus', name: 'vividus-plugin-html', version: '0.4.8')

Locators

HTML locators should be used in order to interact with HTML document elements. The following locators are supported: - CSS selector - XPath

Steps

Validate elements

Validates the number of elements found by the locator matches the specified rules.

Then number of elements found by $locatorType `$locator` in HTML `$html` is $comparisonRule `$number`
  • $locatorType - `CSS selector` or `XPath`.

  • $locator - See Locators.

  • $html - The HTML document to validate.

  • $comparisonRule - The comparison rule.

  • $quantity - The expected number of elements.

Example 2. Validate starfield release date
When I issue a HTTP GET request for a resource with the URL 'https://bethesda.net/en/game/starfield'
Then number of elements found by XPath `//h3[contains(., '111122')]` in HTML `${response}` is = `1`

Validate element text

Validates whether the element found by the locator contains the expected text.

Then element found by $locatorType `$locator` in HTML `$html` contains text `$expectedText`
  • $locatorType - `CSS selector` or `XPath`.

  • $locator - See Locators.

  • $html - The HTML document to validate.

  • $expectedText - The expected element text.

Example 3. Validate starfield release date
When I issue a HTTP GET request for a resource with the URL 'https://bethesda.net/en/game/starfield'
Then element found by XPath `//h3` in HTML `${response}` contains text `111122`

Save attribute value

Saves the attribute value into the variable.

When I save `$attributeName` attribute value of element found by $locatorType `$locator` in HTML `$html` to $scopes variable `$variableName`
  • $attributeName - The name of the attribute.

  • $locatorType - `CSS selector` or `XPath`.

  • $locator - See Locators.

  • $html - The HTML document to find element.

  • $scopes - The comma-separated set of the variables scopes.

  • $variableName - The name of the variable to save the attribute value.

Example 4. Validate paragraph title
When I initialize the story variable `html` with value
`
<html>
  <head>
    <title>Page Title</title>
    <script>//<![CDATA[Here comes the data//]]></script>
  </head>
  <body>
    <h1>This is a Heading</h1>
    <p title="paragraph">This is a paragraph.</p>
  </body>
</html>
`
When I save `title` attribute value of element found by CSS selector `p` in HTML `${html}` to scenario variable `title`
Then `${title}` is = `paragraph`

Save data/text of element

Saves the data or the text of element. Where the data is characters between the start-tag and end-tag of the element and the text is the textual content of the element without any inner element.

When I save $dataType of element found by $locatorType `$locator` in HTML `$html` to $scopes variable `variableName`
Example 5. Validate data/text
When I initialize the story variable `html` with value
`
<html>
  <head>
    <title>Page Title</title>
    <script>//<![CDATA[Here comes the data//]]></script>
  </head>
  <body>
    <h1>This is a Heading</h1>
    <p title="paragraph">This is a paragraph.</p>
  </body>
</html>
`
When I save data of element found by <locatorType> `<script>` in HTML `${html}` to scenario variable `data`
When I save text of element found by <locatorType> `<script>` in HTML `${html}` to scenario variable `text`
Then `${data}` is equal to `//<![CDATA[Here comes the data//]]>`
Then `${text}` is equal to `This is a Heading`
Examples:
|locatorType |script  |header|
|CSS selector|script  |h1    |
|XPath       |//script|//h1  |