glance-webdriver
Version:
Automation at a glance
223 lines (205 loc) • 6.04 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
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 _seleniumWebdriver = require('selenium-webdriver');
var _seleniumWebdriver2 = _interopRequireDefault(_seleniumWebdriver);
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var WebdriverAdapter = function () {
function WebdriverAdapter(config) {
_classCallCheck(this, WebdriverAdapter);
this.config = config;
this.driver = config.driver;
}
_createClass(WebdriverAdapter, [{
key: 'init',
value: function init() {}
}, {
key: 'getUrl',
value: function getUrl(address) {
return this.driver.getCurrentUrl();
}
}, {
key: 'setUrl',
value: function setUrl(address) {
return this.driver.get(address);
}
}, {
key: 'getTabs',
value: function getTabs() {
return this.driver.getAllWindowHandles();
}
}, {
key: 'getActiveTab',
value: function getActiveTab() {
return this.driver.getWindowHandle();
}
}, {
key: 'setActiveTab',
value: function setActiveTab(id) {
return this.driver.switchTo().window(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$actions;
return (_driver$actions = this.driver.actions()).sendKeys.apply(_driver$actions, arguments).perform();
}
}, {
key: 'click',
value: function click(element) {
return element.click();
}
}, {
key: 'doubleClick',
value: function doubleClick(element) {
return element.doubleClick();
}
}, {
key: 'middleClick',
value: function middleClick(element) {}
}, {
key: 'moveMouseTo',
value: function moveMouseTo(element, xOffset, yOffset) {
console.log('Move Mouse:', element);
if (xOffset || yOffset) return this.driver.actions().mouseMove(element, { x: xOffset, y: yOffset }).perform();else return this.driver.actions().mouseMove(element).perform();
}
}, {
key: 'rightClick',
value: function rightClick(element) {}
}, {
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.executeScript.apply(this.driver, [func].concat(args));
}
}, {
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.executeAsyncScript.apply(this.driver, [func].concat(args));
}
}, {
key: 'dragAndDrop',
value: function dragAndDrop(elementSource, elementTarget, xOffset, yOffset) {
return this.driver.dragAndDrop(elementSource, elementTarget);
}
}, {
key: 'pause',
value: function pause(delay) {
return this.driver.sleep(delay);
}
}, {
key: 'saveScreenshot',
value: function saveScreenshot(filename) {
return this.driver.takeScreenshot().then(function (data) {
_fs2.default.writeFile(filename, data.replace(/^data:image\/png;base64,/, ''), 'base64', function (err) {
if (err) throw err;
});
});
}
}, {
key: 'end',
value: function end() {
return this.driver.quit();
}
}, {
key: 'find',
value: function find(reference) {
return this.element(reference);
}
}, {
key: 'element',
value: function element(reference) {
//
// Needs to check for xpath
//
return this.driver.findElement(_seleniumWebdriver.By.css(reference));
}
}, {
key: 'elements',
value: function elements(reference) {
return this.driver.findElements(_seleniumWebdriver.By.css(reference));
}
}, {
key: 'getValue',
value: function getValue(element) {
return element.getAttribute("value");
}
}, {
key: 'setValue',
value: function setValue(element) {
for (var _len3 = arguments.length, values = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
values[_key3 - 1] = arguments[_key3];
}
return element.sendKeys.apply(element, 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) {}
}]);
return WebdriverAdapter;
}();
exports.default = WebdriverAdapter;