Set the value of a specified DOM attribute for the given element. For all the available DOM attributes, consult the Element doc at MDN.

setAttribute() will automatically wait for the element to be present (until the specified timeout). If the element is not found, an error is thrown which will cause the test to fail. Starting with v1.2 you can suppress element not found errors by specifying the suppressNotFoundErrors option.

Usage:

.setAttribute(selector, attribute, value, [callback])
.setAttribute(using, selector, attribute, value, [callback])

Parameters:

Name Type description
using
Optional
string

The locator strategy to use. See W3C Webdriver - locator strategies

selector string|object

The selector (CSS/Xpath) used to locate the element. Can either be a string or an object which specifies element properties.

attribute string

The attribute name to set.

value string

The attribute value name to set.

callback function

Callback function which is called with the result value; not required if using await operator.

Example:

module.exports = {
  demoTest(browser) {
    browser.setAttribute('#login input[type=text]', 'disabled', 'true', function(result) {
      console.log('result', result);
    });

    // with explicit locate strategy
    browser.setAttribute('css selector', '#login input[type=text]', 'disabled', 'true', function(result) {
      console.log('result', result);
    });

    // with selector object - see https://nightwatchjs.org/guide#element-properties
    browser.setAttribute({
      selector: '#login input[type=text]',
      index: 1,
      suppressNotFoundErrors: true
    }, 'disabled', 'true', function(result) {
      console.log('result', result);
    });
  },

  demoTestAsync: async function(browser) {
    await browser.setAttribute('#login input[type=text]', 'disabled', 'true');
  }
}