API Reference


A simple perform command which allows access to the Nightwatch API in a callback. Can be useful if you want to read variables set by other commands.

The callback signature can have up to two parameters.

  • no parameters: callback runs and perform completes immediately at the end of the execution of the callback.
  • one parameter: allows for asynchronous execution within the callback providing a done callback function for completion as the first argument.
  • two parameters: allows for asynchronous execution with the Nightwatch api object passed in as the first argument, followed by the done callback.

Parameters

Name Type description
callback function

The function to run as part of the queue.

Usage

this.demoTest = function (browser) {
  var elementValue;
  browser
    .getValue('.some-element', function(result) {
      elementValue = result.value;
    })
    // other stuff going on ...
    //
    // self-completing callback
    .perform(function() {
      console.log('elementValue', elementValue);
      // without any defined parameters, perform
      // completes immediately (synchronously)
    })
    //
    // asynchronous completion
    .perform(function(done) {
      console.log('elementValue', elementValue);
      // potentially other async stuff going on
      // on finished, call the done callback
      done();
    })
    //
    // asynchronous completion including api (client)
    .perform(function(client, done) {
      console.log('elementValue', elementValue);
      // similar to before, but now with client
      // potentially other async stuff going on
      // on finished, call the done callback
      done();
    });
};

API Reference

<%- content['expect-api'] %>
<%- content['expect-cookie'] %> <%- content['expect-element'] %> <% for (var methodName in api['expect.element']) { var method = api['expect.element'][methodName]; %>

<%- method.display %>Suggest edits

<%- method.descr %>

<% if (method.params.length) { %>
Parameters:
<% for (var j = 0; j < method.params.length; j++) { var param = method.params[j]; %> <% } %>
Name Type description
<%- param.name %><% if (param.optional) { %>
Optional<% } %>
<%- param.types %> <%- param.descr %>
<% } %> <% if (method.example) { %>
Usage:
<%- method.example %>
<% } %>
<% } %> <%- content['expect-elements'] %> <%- content['expect-title'] %> <%- content['expect-url'] %>
<%- content['assert-api'] %>
<% for (var i = 0; i < methods.assertions.length; i++) { var method = methods.assertions[i]; %>

assert.<%- method.name %>()

<%- method.descr %>

Parameters:
<% for (var j = 0; j < method.parameters.length; j++) { var param = method.parameters[j]; %> <% } %>
Name Type description
<%- param.name %><% if (param.optional) { %>
Optional<% } %>
<%- param.type %> <%- param.descr %>
Usage:
this.demoTest = function (browser) {
  <%- method.usage %>
};
<% } %>
<%- content['page-api'] %>
<%- content['commands-api'] %> <% var sectionsData = { 'protocol.elements' : [ 'elements-headline', 'Finding Elements', [ 'The commands listed below allow lookup of individual elements and collections of elements. Element retrieval searches are performed using a provided selector, in usually a CSS selector or, less often, an Xpath selector.', 'The convenience commands, such as .waitForElementVisible() can take a default locator strategy. More info on locator strategy can be found on the WebDriver page.', 'Each element has an associated web element reference (a UUID) that uniquely identifies the element across all browsing contexts.' ] ], 'protocol.elementinteraction' : [ 'elementinteraction-headline', 'Element Interaction' ], 'protocol.elementstate' : [ 'elementstate-headline', 'Element State', 'Details on how WebDriver checks if the element is displayed are available Element Displayedness page.' ], 'protocol.elementlocation' : [ 'elementlocation-headline', 'Element Location' ], 'protocol.document' : ['document-headline', 'Document Handling'], 'protocol.sessions' : [ 'sessions-headline', 'Sessions', 'A WebDriver session represents the connection between a client and a remote WebDriver server. Read more on WebDriver page.' ], 'protocol.navigation' : [ 'navigation-headline', 'Navigation', 'The commands in this section allow navigation to new URLs and introspection of the currently loaded url.' ], 'protocol.contexts' : ['contexts-headline', 'Window Related'], 'protocol.cookies' : ['cookies-headline', 'Cookies'], 'protocol.useractions' : ['useractions-headline', 'User Actions'], 'protocol.userprompts' : ['userprompts-headline', 'User Prompts'], 'protocol.screens' : ['screens-headline', 'Screen Capture'], 'protocol.mobile' : ['mobile-headline', 'Mobile Related'], 'protocol.utilities': ['utilities-headline', 'Utilities / Debugging'], 'protocol' : '' }; for (var section in sectionsData) { %> <% if (Array.isArray(sectionsData[section][2])) { var sectionEntry = sectionsData[section][2] || []; for (var i = 0; i < sectionEntry.length; i++) {%>

<%- sectionEntry[i] %>

<% } } else if (sectionsData[section][2]) { %>

<%- sectionsData[section][2] %>

<% } %> <% if (api[section]) { %> <% for (var i = 0; i < api[section].length; i++) { var method = api[section][i]; %>

.<%- method.name %>() Suggest edits

<%- method.descr %> <% if (method.params) {%>
Parameters:
<% for (var j = 0; j < method.params.length; j++) { var param = method.params[j]; %> <% } %>
Name Type description
<%- param.name %> <% if (param.optional) { %>
Optional<% } %>
<%- param.types %> <%- param.descr %>
<% } %> <% if (method.returns) { %>
Returns
Type description
<%- method.returns.type %> <%- method.returns.descr %>
<% } %>
<% } %> <% } %> <% } %>