Files
webdriver/code/7-multibrowser/browser.js
2023-08-01 13:11:28 +02:00

56 lines
1.5 KiB
JavaScript

var Browser = function (options) {
this.options = options;
};
Browser.prototype.getSession = function (cb) {
var args = {
desiredCapabilities: {
browserName: this.options.name,
version: '',
platform: 'ANY'
}
};
this._send('POST', '/session', cb, args);
};
Browser.prototype.closeSession = function () {
this._send('DELETE', '/session/:sessionId', function () {});
};
Browser.prototype.open = function (url, cb) {
this._send('POST', '/session/:sessionId/url', cb, {url: url});
};
Browser.prototype.getTitle = function (cb) {
this._send('GET', '/session/:sessionId/title', cb);
};
Browser.prototype.getScreenshot = function (cb) {
this._send('GET', '/session/:sessionId/screenshot', cb);
};
Browser.prototype.resize = function (size, cb) {
this._send('POST', '/session/:sessionId/window/current/size', cb, size);
};
Browser.prototype.setSession = function (session) {
this._session = session;
};
Browser.prototype._send = function (method, command, cb, options) {
var request = new XMLHttpRequest();
var url = 'http://' + this.options.addr + ':' + this.options.port + command;
request.open(method, url.replace(':sessionId', this._session), true);
request.setRequestHeader('Content-Type', 'application/json');
request.onload = function() {
cb(null, JSON.parse(request.responseText));
};
request.onerror = function() {
cb(arguments, null);
};
request.send((options ? JSON.stringify(options) : ''));
};