cabbie-sync
Version:
A synchronous webdriver client
87 lines (77 loc) • 2.04 kB
Flow
/**
* @flow
* This file is generated automatically, run npm run build to re-generate.
**/
import type { Options } from './flow-types/options';
import type Driver from './driver';
import { resolve } from 'url';
import addDebugging from './add-debugging';
import BaseClass from './base-class';
/*
* Navigation object
*
* @deprecated These methods all now live directly on the "ActiveWindow" object.
*/
class Navigator extends BaseClass {
_options: Options;
constructor(driver: Driver, options: Options) {
super(driver);
this._options = options;
}
/*
* Navigate forwards in the browser history, if possible.
*/
forward(): void {
this.requestJSON('POST', '/forward');
}
/*
* Navigate backwards in the browser history, if possible.
*/
backward(): void {
this.requestJSON('POST', '/back');
}
/*
* Refreshes the browser
*/
refresh(): void {
this.requestJSON('POST', '/refresh');
}
/*
* Get the current url that the browser is displaying
*/
getUrl(): string {
return this.requestJSON('GET', '/url');
}
/*
* Navigates the browser to the specified path
*
* - if `path` begins with a "/" it is relative to `options.base`
* - if `path` begins with "http" it is absolute
* - otherwise it is relative to the current path
*/
navigateTo(path: string): void {
if (path[0] === '/') {
const base = this._options.base;
if (!base) {
throw new Error('You must provide a "base" option to use urls starting with "/"');
}
path = base.replace(/\/$/, '') + path;
} else if (path.indexOf('http') !== 0) {
const base = this.getUrl();
this.navigateTo(resolve(base, path));
return;
}
this.driver.requestJSON('POST', '/url', { url: path });
}
}
/*
* Navigates the browser to the specified path
*
* Alias for `navigateTo`
*
* @method setUrl
* @param {String} path
*/
(Navigator.prototype: any).setUrl = Navigator.prototype.navigateTo;
addDebugging(Navigator);
export default Navigator;