glance-webdriver
Version:
Automation at a glance
290 lines (260 loc) • 8.3 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _webdriverio = require('webdriverio');
var wdio = _interopRequireWildcard(_webdriverio);
var _shortid = require('shortid');
var _shortid2 = _interopRequireDefault(_shortid);
var _client = require('../utils/client');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var WebdriverIOAdapter = function () {
function WebdriverIOAdapter(config) {
_classCallCheck(this, WebdriverIOAdapter);
this.driver = wdio.remote(_extends({}, config));
}
_createClass(WebdriverIOAdapter, [{
key: 'init',
value: function init() {
return this.driver.init().catch(function (error) {
console.log(error);
return Promise.reject(error);
});
}
}, {
key: 'elementReference',
value: function elementReference(element) {
return this.execute(_client.tagElementWithID, element, _shortid2.default.generate()).then(function (id) {
return '[data-glance-id="' + id + '"]';
});
}
}, {
key: 'getUrl',
value: function getUrl(address) {
return this.driver.url().then(function (res) {
return res.value;
});
}
}, {
key: 'setUrl',
value: function setUrl(address) {
return this.driver.url(address);
}
}, {
key: 'getTabs',
value: function getTabs() {
return this.driver.getTabIds();
}
}, {
key: 'getActiveTab',
value: function getActiveTab() {
return this.driver.getCurrentTabId();
}
}, {
key: 'setActiveTab',
value: function setActiveTab(id) {
return this.driver.switchTab(id);
}
}, {
key: 'closeTab',
value: function closeTab(id) {
var _this = this;
if (id) {
return this.driver.switchTab(id).then(function (result) {
return _this.driver.close();
});
} else {
return this.driver.close();
}
}
}, {
key: 'type',
value: function type(keys) {
return this.driver.keys(keys.split(''));
}
}, {
key: 'sendKeys',
value: function sendKeys() {
var _driver;
return (_driver = this.driver).keys.apply(_driver, arguments);
}
}, {
key: 'click',
value: function click(element) {
return this.driver.elementIdClick(element.ELEMENT);
}
}, {
key: 'doubleClick',
value: function doubleClick(element) {
var _this2 = this;
return this.elementReference(element).then(function (reference) {
return _this2.driver.doubleClick(reference);
});
}
}, {
key: 'middleClick',
value: function middleClick(element) {
var _this3 = this;
return this.elementReference(element).then(function (reference) {
return _this3.driver.middleClick(reference);
});
}
}, {
key: 'moveMouseTo',
value: function moveMouseTo(element, xOffset, yOffset) {
var _this4 = this;
return this.elementReference(element).then(function (reference) {
return _this4.driver.moveToObject(reference, xOffset, yOffset);
});
}
}, {
key: 'rightClick',
value: function rightClick(elementReference) {
var _this5 = this;
return this.elementReference(element).then(function (reference) {
return _this5.driver.rightClick(reference);
});
}
}, {
key: 'mouseDown',
value: function mouseDown(button) {
button = button || 0;
return this.driver.buttonDown(button);
}
}, {
key: 'mouseUp',
value: function mouseUp(button) {
button = button || 0;
return this.driver.buttonUp(button);
}
}, {
key: 'execute',
value: function execute(func) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return this.driver.execute.apply(this.driver, [func].concat(args)).then(function (res) {
return res.value;
});
}
}, {
key: 'executeAsync',
value: function executeAsync(func) {
for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
args[_key2 - 1] = arguments[_key2];
}
return this.driver.executeAsync.apply(this.driver, [func].concat(args)).then(function (res) {
return res.value;
});
}
}, {
key: 'dragAndDrop',
value: function dragAndDrop(elementSource, elementTarget, xOffset, yOffset) {
var _this6 = this;
return this.elementReference(elementSource).then(function (elementReferenceSource) {
return _this6.elementReference(elementTarget).then(function (elementReferenceTarget) {
if (_this6.driver.isMobile) {
return _this6.driver.getLocation(elementReferenceSource).then(function (location) {
return _this6.driver.touchDown(location.x, location.y);
}).getLocation(elementReferenceTarget).then(function (location) {
return _this6.driver.touchMove(location.x, location.y).touchUp(location.x, location.y);
});
}
return _this6.driver.moveToObject(elementReferenceSource).buttonDown().moveToObject(elementReferenceTarget, xOffset, yOffset).buttonUp();
});
});
}
}, {
key: 'pause',
value: function pause(delay) {
return this.driver.pause(delay);
}
}, {
key: 'saveScreenshot',
value: function saveScreenshot(filename) {
return this.driver.saveScreenshot(filename);
}
}, {
key: 'end',
value: function end() {
return this.driver.end();
}
}, {
key: 'find',
value: function find(reference) {
return this.element(reference);
}
}, {
key: 'element',
value: function element(reference) {
return this.driver.element(reference).then(function (res) {
return res.value;
});
}
}, {
key: 'elements',
value: function elements(reference) {
return this.driver.elements(reference).then(function (res) {
return res.value;
});
}
}, {
key: 'getValue',
value: function getValue(element) {
var _this7 = this;
return this.elementReference(element).then(function (reference) {
return _this7.driver.getValue(reference).then(function (value) {
return value;
});
});
}
}, {
key: 'setValue',
value: function setValue(element) {
var _driver2;
for (var _len3 = arguments.length, values = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
values[_key3 - 1] = arguments[_key3];
}
return (_driver2 = this.driver).elementIdValue.apply(_driver2, [element.ELEMENT].concat(values));
}
}, {
key: 'getTitle',
value: function getTitle() {
return this.driver.getTitle();
}
}, {
key: 'log',
value: function log(type) {
return this.driver.log(type);
}
}, {
key: 'setWindowSize',
value: function setWindowSize(size) {
return this.driver.windowHandleSize(size);
}
}, {
key: 'getWindowSize',
value: function getWindowSize() {
return this.driver.windowHandleSize();
}
}, {
key: 'maximize',
value: function maximize() {
return this.driver.windowHandleMaximize();
}
}, {
key: 'scroll',
value: function scroll(element) {
var _this8 = this;
return this.elementReference(element).then(function (reference) {
return _this8.driver.scroll(reference);
});
}
}]);
return WebdriverIOAdapter;
}();
exports.default = WebdriverIOAdapter;