/**
*
* Search for multiple elements on the page, starting from the document root. The located
* elements will be returned as a WebElement JSON objects. The table below lists the
* locator strategies that each server should support. Elements should be returned in
* the order located in the DOM.
*
* The array of elements can be retrieved using the 'response.value' which is a
* collection of element ID's and can be accessed in the subsequent commands
* using the '.ELEMENT' method.
*
* @param {String} selector selector to query the elements
* @returns {Object[]} A list of WebElement JSON objects for the located elements.
*
* @see https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/elements
* @type protocol
*
*/
'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _helpersFindElementStrategy = require('../helpers/findElementStrategy');
var _helpersFindElementStrategy2 = _interopRequireDefault(_helpersFindElementStrategy);
var elements = function elements(selector) {
var requestPath = '/session/:sessionId/elements';
var lastPromise = this.lastPromise.inspect();
if (lastPromise.state === 'fulfilled' && lastPromise.value && lastPromise.value.value && lastPromise.value.value.ELEMENT) {
if (!selector) {
lastPromise.value.value = [lastPromise.value.value];
return lastPromise.value;
}
/**
* format xpath selector (global -> relative)
*/
if (selector.slice(0, 2) === '//') {
selector = '.' + selector.slice(1);
}
var elem = lastPromise.value.value.ELEMENT;
requestPath = '/session/:sessionId/element/' + elem + '/elements';
}
var found = (0, _helpersFindElementStrategy2['default'])(selector);
return this.requestHandler.create(requestPath, {
using: found.using,
value: found.value
})['catch'](function (err) {
if (err.message === 'no such element') {
return [];
}
throw err;
});
};
exports['default'] = elements;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wvZWxlbWVudHMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQ0FtQnlCLGdDQUFnQzs7OztBQUV6RCxJQUFJLFFBQVEsR0FBRyxTQUFYLFFBQVEsQ0FBYSxRQUFRLEVBQUU7QUFDL0IsUUFBSSxXQUFXLEdBQUcsOEJBQThCLENBQUE7QUFDaEQsUUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQTs7QUFFNUMsUUFBSSxXQUFXLENBQUMsS0FBSyxLQUFLLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtBQUN0SCxZQUFJLENBQUMsUUFBUSxFQUFFO0FBQ1gsdUJBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNuRCxtQkFBTyxXQUFXLENBQUMsS0FBSyxDQUFBO1NBQzNCOzs7OztBQUtELFlBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO0FBQy9CLG9CQUFRLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDckM7O0FBRUQsWUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFBO0FBQzFDLG1CQUFXLG9DQUFrQyxJQUFJLGNBQVcsQ0FBQTtLQUMvRDs7QUFFRCxRQUFJLEtBQUssR0FBRyw2Q0FBYSxRQUFRLENBQUMsQ0FBQTtBQUNsQyxXQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtBQUMzQyxhQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7QUFDbEIsYUFBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO0tBQ3JCLENBQUMsU0FBTSxDQUFDLFVBQUMsR0FBRyxFQUFLO0FBQ2QsWUFBSSxHQUFHLENBQUMsT0FBTyxLQUFLLGlCQUFpQixFQUFFO0FBQ25DLG1CQUFPLEVBQUUsQ0FBQTtTQUNaOztBQUVELGNBQU0sR0FBRyxDQUFBO0tBQ1osQ0FBQyxDQUFBO0NBQ0wsQ0FBQTs7cUJBRWMsUUFBUSIsImZpbGUiOiIvVXNlcnMvY2hyaXN0aWFuYnJvbWFubi9TaXRlcy9XZWJwcm9qZWt0ZS93ZWJkcml2ZXJqcy9ERVYvbGliL3Byb3RvY29sL2VsZW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogU2VhcmNoIGZvciBtdWx0aXBsZSBlbGVtZW50cyBvbiB0aGUgcGFnZSwgc3RhcnRpbmcgZnJvbSB0aGUgZG9jdW1lbnQgcm9vdC4gVGhlIGxvY2F0ZWRcbiAqIGVsZW1lbnRzIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBXZWJFbGVtZW50IEpTT04gb2JqZWN0cy4gVGhlIHRhYmxlIGJlbG93IGxpc3RzIHRoZVxuICogbG9jYXRvciBzdHJhdGVnaWVzIHRoYXQgZWFjaCBzZXJ2ZXIgc2hvdWxkIHN1cHBvcnQuIEVsZW1lbnRzIHNob3VsZCBiZSByZXR1cm5lZCBpblxuICogdGhlIG9yZGVyIGxvY2F0ZWQgaW4gdGhlIERPTS5cbiAqXG4gKiBUaGUgYXJyYXkgb2YgZWxlbWVudHMgY2FuIGJlIHJldHJpZXZlZCAgdXNpbmcgdGhlICdyZXNwb25zZS52YWx1ZScgd2hpY2ggaXMgYVxuICogY29sbGVjdGlvbiBvZiBlbGVtZW50IElEJ3MgYW5kIGNhbiBiZSBhY2Nlc3NlZCBpbiB0aGUgc3Vic2VxdWVudCBjb21tYW5kc1xuICogdXNpbmcgdGhlICcuRUxFTUVOVCcgbWV0aG9kLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RvciBzZWxlY3RvciB0byBxdWVyeSB0aGUgZWxlbWVudHNcbiAqIEByZXR1cm5zIHtPYmplY3RbXX0gQSBsaXN0IG9mIFdlYkVsZW1lbnQgSlNPTiBvYmplY3RzIGZvciB0aGUgbG9jYXRlZCBlbGVtZW50cy5cbiAqXG4gKiBAc2VlICBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3NlbGVuaXVtL3dpa2kvSnNvbldpcmVQcm90b2NvbCMvc2Vzc2lvbi86c2Vzc2lvbklkL2VsZW1lbnRzXG4gKiBAdHlwZSBwcm90b2NvbFxuICpcbiAqL1xuXG5pbXBvcnQgZmluZFN0cmF0ZWd5IGZyb20gJy4uL2hlbHBlcnMvZmluZEVsZW1lbnRTdHJhdGVneSdcblxubGV0IGVsZW1lbnRzID0gZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG4gICAgbGV0IHJlcXVlc3RQYXRoID0gJy9zZXNzaW9uLzpzZXNzaW9uSWQvZWxlbWVudHMnXG4gICAgbGV0IGxhc3RQcm9taXNlID0gdGhpcy5sYXN0UHJvbWlzZS5pbnNwZWN0KClcblxuICAgIGlmIChsYXN0UHJvbWlzZS5zdGF0ZSA9PT0gJ2Z1bGZpbGxlZCcgJiYgbGFzdFByb21pc2UudmFsdWUgJiYgbGFzdFByb21pc2UudmFsdWUudmFsdWUgJiYgbGFzdFByb21pc2UudmFsdWUudmFsdWUuRUxFTUVOVCkge1xuICAgICAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICAgICAgICBsYXN0UHJvbWlzZS52YWx1ZS52YWx1ZSA9IFtsYXN0UHJvbWlzZS52YWx1ZS52YWx1ZV1cbiAgICAgICAgICAgIHJldHVybiBsYXN0UHJvbWlzZS52YWx1ZVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGZvcm1hdCB4cGF0aCBzZWxlY3RvciAoZ2xvYmFsIC0+IHJlbGF0aXZlKVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHNlbGVjdG9yLnNsaWNlKDAsIDIpID09PSAnLy8nKSB7XG4gICAgICAgICAgICBzZWxlY3RvciA9ICcuJyArIHNlbGVjdG9yLnNsaWNlKDEpXG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZWxlbSA9IGxhc3RQcm9taXNlLnZhbHVlLnZhbHVlLkVMRU1FTlRcbiAgICAgICAgcmVxdWVzdFBhdGggPSBgL3Nlc3Npb24vOnNlc3Npb25JZC9lbGVtZW50LyR7ZWxlbX0vZWxlbWVudHNgXG4gICAgfVxuXG4gICAgbGV0IGZvdW5kID0gZmluZFN0cmF0ZWd5KHNlbGVjdG9yKVxuICAgIHJldHVybiB0aGlzLnJlcXVlc3RIYW5kbGVyLmNyZWF0ZShyZXF1ZXN0UGF0aCwge1xuICAgICAgICB1c2luZzogZm91bmQudXNpbmcsXG4gICAgICAgIHZhbHVlOiBmb3VuZC52YWx1ZVxuICAgIH0pLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlID09PSAnbm8gc3VjaCBlbGVtZW50Jykge1xuICAgICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJcbiAgICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBlbGVtZW50c1xuIl19 |