diff --git a/angular-protractor/legacy/angular-protractor-0.17.0-tests.ts b/angular-protractor/legacy/angular-protractor-0.17.0-tests.ts deleted file mode 100644 index dfd413d0e..000000000 --- a/angular-protractor/legacy/angular-protractor-0.17.0-tests.ts +++ /dev/null @@ -1,244 +0,0 @@ -/// - -function TestWebDriverExports() { - var abstractBuilder: protractor.AbstractBuilder = new protractor.AbstractBuilder(); - var baseAbstractBuilder: webdriver.AbstractBuilder = abstractBuilder; - - var button: protractor.Button = new protractor.Button(); - var baseButton: webdriver.Button = button; - - var key: string = protractor.Key.ADD; - var chord: string = protractor.Key.chord(protractor.Key.NUMPAD0, protractor.Key.NUMPAD1); - - var driver: protractor.WebDriver = new protractor.Builder(). - withCapabilities(protractor.Capabilities.chrome()). - build(); - var baseDriver: webdriver.WebDriver = driver; - - var action: protractor.ActionSequence = new protractor.ActionSequence(driver); - var baseAction: webdriver.ActionSequence = action; - - var alert: protractor.Alert = new protractor.Alert(driver, 'Message'); - var baseAlert: webdriver.Alert = alert; - - var unhandledAlertError: protractor.UnhandledAlertError = new protractor.UnhandledAlertError('Message', alert); - var baseUnhandledAlertError: webdriver.UnhandledAlertError = unhandledAlertError; - - var browser: string = protractor.Browser.ANDROID; - - var builder: protractor.Builder = new protractor.Builder(); - var baseBuilder: webdriver.Builder = builder; - - var capability: string = protractor.Capability.BROWSER_NAME; - - var capabilities: protractor.Capabilities = protractor.Capabilities.chrome(); - var baseCapabilities: webdriver.Capabilities = capabilities; - - var commandName: string = protractor.CommandName.CLICK_ELEMENT; - - var command: protractor.Command = new protractor.Command(protractor.CommandName.CLICK); - var baseCommand: webdriver.Command = command; - - var eventEmitter: protractor.EventEmitter = new protractor.EventEmitter(); - var baseEventEmitter: webdriver.EventEmitter = eventEmitter; - - var firefoxDomExecutor: protractor.FirefoxDomExecutor = new protractor.FirefoxDomExecutor(); - var baseFirefoxDomExecutor: webdriver.FirefoxDomExecutor = firefoxDomExecutor; - - var webElement: protractor.WebElement = new protractor.WebElement(driver, new protractor.promise.Promise()); - var baseWebElement: webdriver.WebElement = webElement; - - var locator: protractor.Locator = new protractor.Locator('id', 'ABC'); - var baseLocator: webdriver.Locator = locator; - - var session: protractor.Session = new protractor.Session('ABC', webdriver.Capabilities.android()); - var baseSession: webdriver.Session = session; - - locator = protractor.By.name('name'); - - // logging module - - var levelName: string = protractor.logging.LevelName.ALL; - var loggingType: string = protractor.logging.Type.CLIENT; - - var level: webdriver.logging.Level = protractor.logging.Level.ALL; - - var entry: protractor.logging.Entry = new protractor.logging.Entry(protractor.logging.Level.ALL, 'Message'); - var baseEntry: webdriver.logging.Entry = entry; - - level = protractor.logging.getLevel('DEBUG'); - - protractor.logging.Preferences = { a: 123 }; - - // promise module - - var promise: protractor.promise.Promise = new protractor.promise.Promise(); - var basePromise: webdriver.promise.Promise = promise; - - var deferred: protractor.promise.Deferred = new protractor.promise.Deferred(); - var baseDeferred: webdriver.promise.Deferred = deferred; - - var flow: protractor.promise.ControlFlow = new protractor.promise.ControlFlow(); - var baseFlow: webdriver.promise.ControlFlow = flow; - - protractor.promise.asap(promise, function(value: any){ return true; }); - protractor.promise.asap(promise, function(value: any){}, function(err: any) { return 'ABC'; }); - - promise = protractor.promise.checkedNodeCall(function(err: any, value: any) { return 123; }); - - flow = protractor.promise.controlFlow(); - - promise = protractor.promise.createFlow(function(newFlow: webdriver.promise.ControlFlow) { }); - - deferred = protractor.promise.defer(function() {}); - deferred = protractor.promise.defer(function(reason?: any) {}); - - promise = protractor.promise.delayed(123); - - promise = protractor.promise.fulfilled(); - promise = protractor.promise.fulfilled({a: 123}); - - promise = protractor.promise.fullyResolved({a: 123}); - - var isPromise: boolean = protractor.promise.isPromise('ABC'); - - promise = protractor.promise.rejected({a: 123}); - - protractor.promise.setDefaultFlow(new webdriver.promise.ControlFlow()); - - promise = protractor.promise.when(promise, function(value: any) { return 123; }, function(err: Error) { return 123; }); - - // error module - - var errorCode: number = protractor.error.ErrorCode.ELEMENT_NOT_VISIBLE; - var error: protractor.error.Error = new protractor.error.Error(protractor.error.ErrorCode.ELEMENT_NOT_VISIBLE); - var baseError: webdriver.error.Error = error; - - // process module - - var isNative: boolean = protractor.process.isNative(); - var value: string; - - value = protractor.process.getEnv('name'); - value = protractor.process.getEnv('name', 'default'); - - protractor.process.setEnv('name', 'value'); - protractor.process.setEnv('name', 123); - -} - -function TestProtractor() { - var ptor: protractor.Protractor; - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - ptor = new protractor.Protractor(driver); - ptor = new protractor.Protractor(driver, 'baseUrl'); - ptor = new protractor.Protractor(driver, 'baseUrl', 'rootElement'); - ptor = protractor.getInstance(); - protractor.setInstance(ptor); - - ptor = protractor.wrapDriver(driver); - ptor = protractor.wrapDriver(driver, 'baseUrl'); - ptor = protractor.wrapDriver(driver, 'baseUrl', 'rootElement'); - - ptor = browser; - - driver = ptor.driver; - var baseUrl: string = ptor.baseUrl; - var rootEl: string = ptor.rootEl; - var ignoreSynchronization: boolean = ptor.ignoreSynchronization; - var params: any = ptor.params; - - ptor.debugger(); - - ptor.clearMockModules(); - ptor.addMockModule('name', 'script'); - ptor.addMockModule('name', function() {}); - ptor.waitForAngular(); - - var elementFinder: protractor.ElementFinder; - - elementFinder = ptor.element(by.id('ABC')); - elementFinder = ptor.$('.class'); - - var elementArrayFinder: protractor.ElementArrayFinder = ptor.$$('.class'); - - var webElement: webdriver.WebElement = ptor.wrapWebElement(new webdriver.WebElement(driver, 'id')); - - var locationAbsUrl: webdriver.promise.Promise = ptor.getLocationAbsUrl(); -} - -function TestElement() { - var elementFinder: protractor.ElementFinder = element(by.id('id')); - var elementArrayFinder: protractor.ElementArrayFinder = element.all(by.className('class')); -} - -function TestElementFinder() { - var elementFinder: protractor.ElementFinder = element(by.id('id')); - var promise: webdriver.promise.Promise; - - promise = elementFinder.click(); - promise = elementFinder.sendKeys(protractor.Key.UP, protractor.Key.DOWN); - promise = elementFinder.getTagName(); - promise = elementFinder.getCssValue('display'); - promise = elementFinder.getAttribute('atribute'); - promise = elementFinder.getText(); - promise = elementFinder.getSize(); - promise = elementFinder.getLocation(); - promise = elementFinder.isEnabled(); - promise = elementFinder.isSelected(); - promise = elementFinder.submit(); - promise = elementFinder.clear(); - promise = elementFinder.isDisplayed(); - promise = elementFinder.getOuterHtml(); - promise = elementFinder.getInnerHtml(); - promise = elementFinder.isElementPresent(by.id('id')); - promise = elementFinder.isElementPresent(by.js('function(a, b, c) {}'), 1, 2, 3); - promise = elementFinder.findElements(by.className('class')); - promise = elementFinder.findElements(by.js('function(a, b, c) {}'), 1, 2, 3); - promise = elementFinder.$$('.class'); - promise = elementFinder.evaluate('expression'); - promise = elementFinder.isPresent(); - - var webElement: webdriver.WebElement; - - webElement = elementFinder.$('.class'); - webElement = elementFinder.findElement(by.id('id')); - webElement = elementFinder.findElement(by.js('function(a, b, c) {}'), 1, 2, 3); - webElement = elementFinder.find(); -} - -// This function tests the angular specific locator strategies. -function TestLocatorStrategies() { - var ptor: protractor.Protractor = protractor.getInstance(); - var webElement: webdriver.WebElement; - - // Protractor Specific Locators - webElement = ptor.findElement(protractor.By.binding('binding')); - webElement = ptor.findElement(protractor.By.select('select')); - webElement = ptor.findElement(protractor.By.selectedOption('selectedOptions')); - webElement = ptor.findElement(protractor.By.input('input')); - webElement = ptor.findElement(protractor.By.model('model')); - webElement = ptor.findElement(protractor.By.textarea('textarea')); - webElement = ptor.findElement(protractor.By.repeater('repeater')); - webElement = ptor.findElement(protractor.By.buttonText('buttonText')); - webElement = ptor.findElement(protractor.By.partialButtonText('partialButtonText')); -} - -// This function tests the methods that were added to the base WebElement class -function TestWebElements() { - var ptor: protractor.Protractor = protractor.getInstance(); - - var webElement: protractor.WebElement; - var promise: webdriver.promise.Promise; - - webElement = ptor.findElement(by.id('id')).$('.class'); - promise = ptor.findElement(by.id('id')).$$('.class'); - promise = ptor.findElement(by.id('id')).evaluate('something'); - - webElement = webElement.findElement(by.id('id')).$('.class'); - promise = webElement.findElement(by.id('id')).$$('.class'); - promise = webElement.findElement(by.id('id')).evaluate('something'); -} diff --git a/angular-protractor/legacy/angular-protractor-0.17.0.d.ts b/angular-protractor/legacy/angular-protractor-0.17.0.d.ts deleted file mode 100644 index b83b6c9c1..000000000 --- a/angular-protractor/legacy/angular-protractor-0.17.0.d.ts +++ /dev/null @@ -1,906 +0,0 @@ -// Type definitions for Angular Protractor 0.17.0 -// Project: https://github.com/angular/protractor -// Definitions by: Bill Armstrong -// Definitions: https://github.com/borisyankov/DefinitelyTyped - -/// - -declare module protractor { - //region Wrapped webdriver Items - - class AbstractBuilder extends webdriver.AbstractBuilder {} - class ActionSequence extends webdriver.ActionSequence {} - class Alert extends webdriver.Alert {} - class Builder extends webdriver.Builder {} - class Button extends webdriver.Button {} - class Capabilities extends webdriver.Capabilities {} - class Command extends webdriver.Command {} - class EventEmitter extends webdriver.EventEmitter {} - class FirefoxDomExecutor extends webdriver.FirefoxDomExecutor {} - class Locator extends webdriver.Locator {} - class Session extends webdriver.Session {} - class WebDriver extends webdriver.WebDriver {} - class Browser extends webdriver.Browser {} - class Capability extends webdriver.Capability {} - class CommandName extends webdriver.CommandName {} - class Key extends webdriver.Key {} - class UnhandledAlertError extends webdriver.UnhandledAlertError {} - - class WebElement extends webdriver.WebElement { - /** - * Shortcut for querying the document directly with css. - * - * @param {string} selector a css selector - * @see webdriver.WebElement.findElement - * @return {!protractor.WebElement} - */ - $(selector: string): protractor.WebElement; - - /** - * Shortcut for querying the document directly with css. - * - * @param {string} selector a css selector - * @see webdriver.WebElement.findElements - * @return {!webdriver.promise.Promise} A promise that will be resolved to an - * array of the located {@link webdriver.WebElement}s. - */ - $$(selector: string): webdriver.promise.Promise; - - /** - * Evalates the input as if it were on the scope of the current element. - * @param {string} expression - * - * @return {!webdriver.promise.Promise} A promise that will resolve to the - * evaluated expression. The result will be resolved as in - * {@link webdriver.WebDriver.executeScript}. In summary - primitives will - * be resolved as is, functions will be converted to string, and elements - * will be returned as a WebElement. - */ - evaluate(expression: string): webdriver.promise.Promise; - - /** - * Schedule a command to find a descendant of this element. If the element - * cannot be found, a {@code bot.ErrorCode.NO_SUCH_ELEMENT} result will - * be returned by the driver. Unlike other commands, this error cannot be - * suppressed. In other words, scheduling a command to find an element doubles - * as an assert that the element is present on the page. To test whether an - * element is present on the page, use {@code #isElementPresent} instead. - *

- * The search criteria for find an element may either be a - * {@code webdriver.Locator} object, or a simple JSON object whose sole key - * is one of the accepted locator strategies, as defined by - * {@code webdriver.Locator.Strategy}. For example, the following two - * statements are equivalent: - *

-         * var e1 = element.findElement(By.id('foo'));
-         * var e2 = element.findElement({id:'foo'});
-         * 
- *

- * Note that JS locator searches cannot be restricted to a subtree. All such - * searches are delegated to this instance's parent WebDriver. - * - * @param {webdriver.Locator|Object.} locator The locator - * strategy to use when searching for the element. - * @param {...} var_args Arguments to pass to {@code WebDriver#executeScript} if - * using a JavaScript locator. Otherwise ignored. - * @return {protractor.WebElement} A WebElement that can be used to issue - * commands against the located element. If the element is not found, the - * element will be invalidated and all scheduled commands aborted. - */ - findElement(locator: webdriver.Locator, ...var_args: any[]): protractor.WebElement; - findElement(locator: any, ...var_args: any[]): protractor.WebElement; - } - - module command { - class Command extends webdriver.Command {} - class CommandName extends webdriver.CommandName {} - } - - module error { - class Error extends webdriver.error.Error {} - class ErrorCode extends webdriver.error.ErrorCode {} - } - - module events { - class EventEmitter extends webdriver.EventEmitter {} - } - - module logging { - var Preferences: any; - - class LevelName extends webdriver.logging.LevelName {} - class Type extends webdriver.logging.Type {} - class Level extends webdriver.logging.Level {} - class Entry extends webdriver.logging.Entry {} - - function getLevel(nameOrValue: string): webdriver.logging.Level; - function getLevel(nameOrValue: number): webdriver.logging.Level; - } - - module promise { - class Promise extends webdriver.promise.Promise {} - class Deferred extends webdriver.promise.Deferred {} - class ControlFlow extends webdriver.promise.ControlFlow {} - - /** - * @return {!webdriver.promise.ControlFlow} The currently active control flow. - */ - function controlFlow(): webdriver.promise.ControlFlow; - - /** - * Creates a new control flow. The provided callback will be invoked as the - * first task within the new flow, with the flow as its sole argument. Returns - * a promise that resolves to the callback result. - * @param {function(!webdriver.promise.ControlFlow)} callback The entry point - * to the newly created flow. - * @return {!webdriver.promise.Promise} A promise that resolves to the callback - * result. - */ - function createFlow(callback: (flow: webdriver.promise.ControlFlow) => any): webdriver.promise.Promise; - - /** - * Determines whether a {@code value} should be treated as a promise. - * Any object whose "then" property is a function will be considered a promise. - * - * @param {*} value The value to test. - * @return {boolean} Whether the value is a promise. - */ - function isPromise(value: any): boolean; - - /** - * Creates a promise that will be resolved at a set time in the future. - * @param {number} ms The amount of time, in milliseconds, to wait before - * resolving the promise. - * @return {!webdriver.promise.Promise} The promise. - */ - function delayed(ms: number): webdriver.promise.Promise; - - /** - * Creates a new deferred object. - * @param {Function=} opt_canceller Function to call when cancelling the - * computation of this instance's value. - * @return {!webdriver.promise.Deferred} The new deferred object. - */ - function defer(opt_canceller?: any): webdriver.promise.Deferred; - - /** - * Creates a promise that has been resolved with the given value. - * @param {*=} opt_value The resolved value. - * @return {!webdriver.promise.Promise} The resolved promise. - */ - function fulfilled(opt_value?: any): webdriver.promise.Promise; - - /** - * Creates a promise that has been rejected with the given reason. - * @param {*=} opt_reason The rejection reason; may be any value, but is - * usually an Error or a string. - * @return {!webdriver.promise.Promise} The rejected promise. - */ - function rejected(opt_reason?: any): webdriver.promise.Promise; - - /** - * Wraps a function that is assumed to be a node-style callback as its final - * argument. This callback takes two arguments: an error value (which will be - * null if the call succeeded), and the success value as the second argument. - * If the call fails, the returned promise will be rejected, otherwise it will - * be resolved with the result. - * @param {!Function} fn The function to wrap. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * result of the provided function's callback. - */ - function checkedNodeCall(fn: (error: any, value: any) => any): webdriver.promise.Promise; - - /** - * Registers an observer on a promised {@code value}, returning a new promise - * that will be resolved when the value is. If {@code value} is not a promise, - * then the return promise will be immediately resolved. - * @param {*} value The value to observe. - * @param {Function=} opt_callback The function to call when the value is - * resolved successfully. - * @param {Function=} opt_errback The function to call when the value is - * rejected. - * @return {!webdriver.promise.Promise} A new promise. - */ - function when(value: any, opt_callback?: (value: any) => any, opt_errback?: (error: any) => any): webdriver.promise.Promise; - - /** - * Invokes the appropriate callback function as soon as a promised - * {@code value} is resolved. This function is similar to - * {@code webdriver.promise.when}, except it does not return a new promise. - * @param {*} value The value to observe. - * @param {Function} callback The function to call when the value is - * resolved successfully. - * @param {Function=} opt_errback The function to call when the value is - * rejected. - */ - function asap(value: any, callback: (value: any) => any, opt_errback?: (error: any) => any): void; - - /** - * Returns a promise that will be resolved with the input value in a - * fully-resolved state. If the value is an array, each element will be fully - * resolved. Likewise, if the value is an object, all keys will be fully - * resolved. In both cases, all nested arrays and objects will also be - * fully resolved. All fields are resolved in place; the returned promise will - * resolve on {@code value} and not a copy. - * - * Warning: This function makes no checks against objects that contain - * cyclical references: - * - * var value = {}; - * value['self'] = value; - * webdriver.promise.fullyResolved(value); // Stack overflow. - * - * @param {*} value The value to fully resolve. - * @return {!webdriver.promise.Promise} A promise for a fully resolved version - * of the input value. - */ - function fullyResolved(value: any): webdriver.promise.Promise; - - /** - * Changes the default flow to use when no others are active. - * @param {!webdriver.promise.ControlFlow} flow The new default flow. - * @throws {Error} If the default flow is not currently active. - */ - function setDefaultFlow(flow: webdriver.promise.ControlFlow): void; - - } - - module process { - - /** - * Queries for a named environment variable. - * @param {string} name The name of the environment variable to look up. - * @param {string=} opt_default The default value if the named variable is not - * defined. - * @return {string} The queried environment variable. - */ - function getEnv(name: string, opt_default?: string): string; - - /** - * @return {boolean} Whether the current process is Node's native process - * object. - */ - function isNative(): boolean; - - /** - * Sets an environment value. If the new value is either null or undefined, the - * environment variable will be cleared. - * @param {string} name The value to set. - * @param {*} value The new value; will be coerced to a string. - */ - function setEnv(name: string, value: any): void; - - } - - //endregion - - interface Element { - (locator: webdriver.Locator): ElementFinder; - all(locator: webdriver.Locator): ElementArrayFinder; - } - - interface ElementFinder { - /** - * Schedules a command to click on this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the click command has completed. - */ - click(): webdriver.promise.Promise; - - /** - * Schedules a command to type a sequence on the DOM element represented by this - * instance. - *

- * Modifier keys (SHIFT, CONTROL, ALT, META) are stateful; once a modifier is - * processed in the keysequence, that key state is toggled until one of the - * following occurs: - *

    - *
  • The modifier key is encountered again in the sequence. At this point the - * state of the key is toggled (along with the appropriate keyup/down events). - *
  • - *
  • The {@code webdriver.Key.NULL} key is encountered in the sequence. When - * this key is encountered, all modifier keys current in the down state are - * released (with accompanying keyup events). The NULL key can be used to - * simulate common keyboard shortcuts: - * - * element.sendKeys("text was", - * webdriver.Key.CONTROL, "a", webdriver.Key.NULL, - * "now text is"); - * // Alternatively: - * element.sendKeys("text was", - * webdriver.Key.chord(webdriver.Key.CONTROL, "a"), - * "now text is"); - *
  • - *
  • The end of the keysequence is encountered. When there are no more keys - * to type, all depressed modifier keys are released (with accompanying keyup - * events). - *
  • - *
- * Note: On browsers where native keyboard events are not yet - * supported (e.g. Firefox on OS X), key events will be synthesized. Special - * punctionation keys will be synthesized according to a standard QWERTY en-us - * keyboard layout. - * - * @param {...string} var_args The sequence of keys to - * type. All arguments will be joined into a single sequence (var_args is - * permitted for convenience). - * @return {!webdriver.promise.Promise} A promise that will be resolved when all - * keys have been typed. - */ - sendKeys(...var_args: string[]): webdriver.promise.Promise; - - /** - * Schedules a command to query for the tag/node name of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's tag name. - */ - getTagName(): webdriver.promise.Promise; - - /** - * Schedules a command to query for the computed style of the element - * represented by this instance. If the element inherits the named style from - * its parent, the parent will be queried for its value. Where possible, color - * values will be converted to their hex representation (e.g. #00ff00 instead of - * rgb(0, 255, 0)). - *

- * Warning: the value returned will be as the browser interprets it, so - * it may be tricky to form a proper assertion. - * - * @param {string} cssStyleProperty The name of the CSS style property to look - * up. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * requested CSS value. - */ - getCssValue(cssStyleProperty: string): webdriver.promise.Promise; - - /** - * Schedules a command to query for the value of the given attribute of the - * element. Will return the current value even if it has been modified after the - * page has been loaded. More exactly, this method will return the value of the - * given attribute, unless that attribute is not present, in which case the - * value of the property with the same name is returned. If neither value is - * set, null is returned. The "style" attribute is converted as best can be to a - * text representation with a trailing semi-colon. The following are deemed to - * be "boolean" attributes and will be returned as thus: - * - *

async, autofocus, autoplay, checked, compact, complete, controls, declare, - * defaultchecked, defaultselected, defer, disabled, draggable, ended, - * formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, - * loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, - * paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, - * selected, spellcheck, truespeed, willvalidate - * - *

Finally, the following commonly mis-capitalized attribute/property names - * are evaluated as expected: - *

    - *
  • "class" - *
  • "readonly" - *
- * @param {string} attributeName The name of the attribute to query. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * attribute's value. - */ - getAttribute(attributeName: string): webdriver.promise.Promise; - - /** - * Get the visible (i.e. not hidden by CSS) innerText of this element, including - * sub-elements, without any leading or trailing whitespace. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's visible text. - */ - getText(): webdriver.promise.Promise; - - /** - * Schedules a command to compute the size of this element's bounding box, in - * pixels. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's size as a {@code {width:number, height:number}} object. - */ - getSize(): webdriver.promise.Promise; - - /** - * Schedules a command to compute the location of this element in page space. - * @return {!webdriver.promise.Promise} A promise that will be resolved to the - * element's location as a {@code {x:number, y:number}} object. - */ - getLocation(): webdriver.promise.Promise; - - /** - * Schedules a command to query whether the DOM element represented by this - * instance is enabled, as dicted by the {@code disabled} attribute. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently enabled. - */ - isEnabled(): webdriver.promise.Promise; - - /** - * Schedules a command to query whether this element is selected. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently selected. - */ - isSelected(): webdriver.promise.Promise; - - /** - * Schedules a command to submit the form containing this element (or this - * element if it is a FORM element). This command is a no-op if the element is - * not contained in a form. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the form has been submitted. - */ - submit(): webdriver.promise.Promise; - - /** - * Schedules a command to clear the {@code value} of this element. This command - * has no effect if the underlying DOM element is neither a text INPUT element - * nor a TEXTAREA element. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the element has been cleared. - */ - clear(): webdriver.promise.Promise; - - /** - * Schedules a command to test whether this element is currently displayed. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently visible on the page. - */ - isDisplayed(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the outer HTML of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * the element's outer HTML. - */ - getOuterHtml(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the inner HTML of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's inner HTML. - */ - getInnerHtml(): webdriver.promise.Promise; - - /** - * Schedules a command to test if there is at least one descendant of this - * element that matches the given search criteria. - * - *

Note that JS locator searches cannot be restricted to a subtree of the - * DOM. All such searches are delegated to this instance's parent WebDriver. - * - * @param {webdriver.Locator|Object.} locator The locator - * strategy to use when searching for the element. - * @param {...} var_args Arguments to pass to {@code WebDriver#executeScript} if - * using a JavaScript locator. Otherwise ignored. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether an element could be located on the page. - */ - isElementPresent(locator: webdriver.Locator, ...var_args: any[]): webdriver.promise.Promise; - isElementPresent(locator: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Schedules a command to find all of the descendants of this element that match - * the given search criteria. - *

- * Note that JS locator searches cannot be restricted to a subtree. All such - * searches are delegated to this instance's parent WebDriver. - * - * @param {webdriver.Locator|Object.} locator The locator - * strategy to use when searching for the elements. - * @param {...} var_args Arguments to pass to {@code WebDriver#executeScript} if - * using a JavaScript locator. Otherwise ignored. - * @return {!webdriver.promise.Promise} A promise that will be resolved with an - * array of located {@link webdriver.WebElement}s. - */ - findElements(locator: webdriver.Locator, ...var_args: any[]): webdriver.promise.Promise; - findElements(locator: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Shortcut for querying the document directly with css. - * - * @param {string} selector a css selector - * @see webdriver.WebElement.findElement - * @return {!protractor.WebElement} - */ - $(selector: string): protractor.WebElement; - - /** - * Shortcut for querying the document directly with css. - * - * @param {string} selector a css selector - * @see webdriver.WebElement.findElements - * @return {!webdriver.promise.Promise} A promise that will be resolved to an - * array of the located {@link webdriver.WebElement}s. - */ - $$(selector: string): webdriver.promise.Promise; - - /** - * Schedule a command to find a descendant of this element. If the element - * cannot be found, a {@code bot.ErrorCode.NO_SUCH_ELEMENT} result will - * be returned by the driver. Unlike other commands, this error cannot be - * suppressed. In other words, scheduling a command to find an element doubles - * as an assert that the element is present on the page. To test whether an - * element is present on the page, use {@code #isElementPresent} instead. - *

- * The search criteria for find an element may either be a - * {@code webdriver.Locator} object, or a simple JSON object whose sole key - * is one of the accepted locator strategies, as defined by - * {@code webdriver.Locator.Strategy}. For example, the following two - * statements are equivalent: - *

-         * var e1 = element.findElement(By.id('foo'));
-         * var e2 = element.findElement({id:'foo'});
-         * 
- *

- * Note that JS locator searches cannot be restricted to a subtree. All such - * searches are delegated to this instance's parent WebDriver. - * - * @param {webdriver.Locator|Object.} locator The locator - * strategy to use when searching for the element. - * @param {...} var_args Arguments to pass to {@code WebDriver#executeScript} if - * using a JavaScript locator. Otherwise ignored. - * @return {protractor.WebElement} A WebElement that can be used to issue - * commands against the located element. If the element is not found, the - * element will be invalidated and all scheduled commands aborted. - */ - findElement(locator: webdriver.Locator, ...var_args: any[]): protractor.WebElement; - findElement(locator: any, ...var_args: any[]): protractor.WebElement; - - /** - * Evalates the input as if it were on the scope of the current element. - * @param {string} expression - * - * @return {!webdriver.promise.Promise} A promise that will resolve to the - * evaluated expression. The result will be resolved as in - * {@link webdriver.WebDriver.executeScript}. In summary - primitives will - * be resolved as is, functions will be converted to string, and elements - * will be returned as a WebElement. - */ - evaluate(expression: string): webdriver.promise.Promise; - - /** - * Use as: element(locator).element(locator) - * Calls to element may be chained to find elements within a parent. - * - * @param {webdriver.Locator} The locator that will be used to find descendents. - * - * @return {protractor.ElementFinder} the descendent element found by the locator - */ - element(locator: webdriver.Locator): protractor.ElementFinder; - - /** - * Use as: element(locator).all(locator) - * Calls to element may be chained to find an array of elements within a parent. - * - * @param {webdriver.Locator} The locator that will be used to find descendents. - * - * @return {protractor.ElementArrayFinder} the descendent elements found by the locator - */ - all(locator: webdriver.Locator): protractor.ElementArrayFinder; - - find(): protractor.WebElement; - - isPresent(): webdriver.promise.Promise; - } - - interface ElementArrayFinder{ - count(): webdriver.promise.Promise; - get(index: number): protractor.WebElement; - first(): protractor.WebElement; - last(): protractor.WebElement; - then(fn: (value: any) => any): webdriver.promise.Promise; - } - - class LocatorWithColumn extends webdriver.Locator { - column(index: number): webdriver.Locator; - } - - class RepeaterLocator extends LocatorWithColumn { - row(index: number): LocatorWithColumn; - } - - interface IProtractorLocatorStrategy extends webdriver.ILocatorStrategy { - /** - * Add a locator to this instance of ProtractorBy. This locator can then be - * used with element(by.()). - * - * @param {string} name - * @param {function|string} script A script to be run in the context of - * the browser. This script will be passed an array of arguments - * that begins with the element scoping the search, and then - * contains any args passed into the locator. It should return - * an array of elements. - */ - addLocator(name: string, script: any): void; - - /** - * Usage: - * {{status}} - * var status = element(by.binding('{{status}}')); - */ - binding(bindingDescriptor: string): webdriver.Locator; - - /** - * Usage: - * - * element(by.select("user")); - */ - select(model: string): webdriver.Locator; - - /** - * Usage: - * - * element(by.selectedOption("user")); - */ - selectedOption(model: string): webdriver.Locator; - - /** - * @DEPRECATED - use 'model' instead. - * Usage: - * - * element(by.input('user')); - */ - input(model: string): webdriver.Locator; - - /** - * Usage: - * - * element(by.model('user')); - */ - model(model: string): webdriver.Locator; - - /** - * Usage: - * - * element(by.textarea("user")); - */ - textarea(model: string): webdriver.Locator; - - /** - * Usage: - *

- * {{cat.name}} - * {{cat.age}} - *
- * - * // Returns the DIV for the second cat. - * var secondCat = element(by.repeater("cat in pets").row(2)); - * // Returns the SPAN for the first cat's name. - * var firstCatName = element( - * by.repeater("cat in pets").row(1).column("{{cat.name}}")); - * // Returns a promise that resolves to an array of WebElements from a column - * var ages = element( - * by.repeater("cat in pets").column("{{cat.age}}")); - * // Returns a promise that resolves to an array of WebElements containing - * // all rows of the repeater. - * var rows = element(by.repeater("cat in pets")); - */ - repeater(repeatDescriptor: string): RepeaterLocator; - - buttonText(searchText: string): webdriver.Locator; - - partialButtonText(searchText: string): webdriver.Locator; - } - - var By: IProtractorLocatorStrategy; - - class Protractor extends webdriver.WebDriver { - - //region Constructors - - /** - * @param {webdriver.WebDriver} webdriver - * @param {string=} opt_baseUrl A base URL to run get requests against. - * @param {string=body} opt_rootElement Selector element that has an ng-app in - * scope. - * @constructor - */ - constructor(webdriver: webdriver.WebDriver, opt_baseUrl?: string, opt_rootElement?: string); - - //endregion - - //region Properties - - /** - * The wrapped webdriver instance. Use this to interact with pages that do - * not contain Angular (such as a log-in screen). - * - * @type {webdriver.WebDriver} - */ - driver: webdriver.WebDriver; - - /** - * All get methods will be resolved against this base URL. Relative URLs are = - * resolved the way anchor tags resolve. - * - * @type {string} - */ - baseUrl: string; - - /** - * The css selector for an element on which to find Angular. This is usually - * 'body' but if your ng-app is on a subsection of the page it may be - * a subelement. - * - * @type {string} - */ - rootEl: string; - - /** - * If true, Protractor will not attempt to synchronize with the page before - * performing actions. This can be harmful because Protractor will not wait - * until $timeouts and $http calls have been processed, which can cause - * tests to become flaky. This should be used only when necessary, such as - * when a page continuously polls an API using $timeout. - * - * @type {boolean} - */ - ignoreSynchronization: boolean; - - /** - * An object that holds custom test parameters. - * - * @type {Object} - */ - params: any; - - //endregion - - //region Methods - - /** - * Helper function for finding elements. - * - * @type {function(webdriver.Locator): ElementFinder} - */ - element(locator: webdriver.Locator): ElementFinder; - - /** - * Helper function for finding elements by css. - * - * @type {function(string): ElementFinder} - */ - $(cssLocator: string): ElementFinder; - - /** - * Helper function for finding arrays of elements by css. - * - * @type {function(string): ElementArrayFinder} - */ - $$(cssLocator: string): ElementArrayFinder; - - /** - * Instruct webdriver to wait until Angular has finished rendering and has - * no outstanding $http calls before continuing. - * - * @return {!webdriver.promise.Promise} A promise that will resolve to the - * scripts return value. - */ - waitForAngular(): webdriver.promise.Promise; - - /** - * Wrap a webdriver.WebElement with protractor specific functionality. - * - * @param {webdriver.WebElement} element - * @return {protractor.WebElement} the wrapped web element. - */ - wrapWebElement(element: webdriver.WebElement): protractor.WebElement; - - /** - * Add a module to load before Angular whenever Protractor.get is called. - * Modules will be registered after existing modules already on the page, - * so any module registered here will override preexisting modules with the same - * name. - * - * @param {!string} name The name of the module to load or override. - * @param {!string|Function} script The JavaScript to load the module. - */ - addMockModule(name: string, script: string): void; - addMockModule(name: string, script: any): void; - - /** - * Clear the list of registered mock modules. - */ - clearMockModules(): void; - - /** - * Returns the current absolute url from AngularJS. - */ - getLocationAbsUrl(): webdriver.promise.Promise; - - /** - * Pauses the test and injects some helper functions into the browser, so that - * debugging may be done in the browser console. - * - * This should be used under node in debug mode, i.e. with - * protractor debug - * - * While in the debugger, commands can be scheduled through webdriver by - * entering the repl: - * debug> repl - * Press Ctrl + C to leave rdebug repl - * > ptor.findElement(protractor.By.input('user').sendKeys('Laura')); - * > ptor.debugger(); - * debug> c - * - * This will run the sendKeys command as the next task, then re-enter the - * debugger. - */ - debugger(): void; - - /** - * Schedule a command to find an element on the page. If the element cannot be - * found, a {@code bot.ErrorCode.NO_SUCH_ELEMENT} result will be returned - * by the driver. Unlike other commands, this error cannot be suppressed. In - * other words, scheduling a command to find an element doubles as an assert - * that the element is present on the page. To test whether an element is - * present on the page, use {@code #isElementPresent} instead. - * - *

The search criteria for find an element may either be a - * {@code webdriver.Locator} object, or a simple JSON object whose sole key - * is one of the accepted locator strategies, as defined by - * {@code webdriver.Locator.Strategy}. For example, the following two statements - * are equivalent: - *

-         * var e1 = driver.findElement(By.id('foo'));
-         * var e2 = driver.findElement({id:'foo'});
-         * 
- * - *

When running in the browser, a WebDriver cannot manipulate DOM elements - * directly; it may do so only through a {@link webdriver.WebElement} reference. - * This function may be used to generate a WebElement from a DOM element. A - * reference to the DOM element will be stored in a known location and this - * driver will attempt to retrieve it through {@link #executeScript}. If the - * element cannot be found (eg, it belongs to a different document than the - * one this instance is currently focused on), a - * {@link bot.ErrorCode.NO_SUCH_ELEMENT} error will be returned. - * - * @param {!(webdriver.Locator|Object.|Element)} locatorOrElement The - * locator strategy to use when searching for the element, or the actual - * DOM element to be located by the server. - * @param {...} var_args Arguments to pass to {@code #executeScript} if using a - * JavaScript locator. Otherwise ignored. - * @return {!protractor.WebElement} A WebElement that can be used to issue - * commands against the located element. If the element is not found, the - * element will be invalidated and all scheduled commands aborted. - */ - findElement(locatorOrElement: webdriver.Locator, ...var_args: any[]): protractor.WebElement; - findElement(locatorOrElement: any, ...var_args: any[]): protractor.WebElement; - - //endregion - } - - /** - * Create a new instance of Protractor by wrapping a webdriver instance. - * - * @param {webdriver.WebDriver} webdriver The configured webdriver instance. - * @param {string=} opt_baseUrl A URL to prepend to relative gets. - * @return {Protractor} - */ - function wrapDriver(webdriver: webdriver.WebDriver, opt_baseUrl?: string, opt_rootElement?: string): Protractor; - - /** - * Set a singleton instance of protractor. - * @param {Protractor} ptor - */ - function setInstance(ptor: Protractor): void; - - /** - * Get the singleton instance. - * @return {Protractor} - */ - function getInstance(): Protractor; - -} - -interface cssSelectorHelper { - (cssLocator: string): protractor.ElementFinder; -} - -declare var browser: protractor.Protractor; -declare var by: protractor.IProtractorLocatorStrategy; -declare var element: protractor.Element; -declare var $: cssSelectorHelper; -declare var $$: cssSelectorHelper; - -declare module 'protractor' { - export = protractor; -} diff --git a/angular-protractor/legacy/angular-protractor-1.0.0-rc4-tests.ts b/angular-protractor/legacy/angular-protractor-1.0.0-rc4-tests.ts deleted file mode 100644 index e1394d10c..000000000 --- a/angular-protractor/legacy/angular-protractor-1.0.0-rc4-tests.ts +++ /dev/null @@ -1,280 +0,0 @@ -/// - -function TestWebDriverExports() { - var abstractBuilder: protractor.AbstractBuilder = new protractor.AbstractBuilder(); - var baseAbstractBuilder: webdriver.AbstractBuilder = abstractBuilder; - - var button: protractor.Button = new protractor.Button(); - var baseButton: webdriver.Button = button; - - var key: string = protractor.Key.ADD; - var chord: string = protractor.Key.chord(protractor.Key.NUMPAD0, protractor.Key.NUMPAD1); - - var driver: protractor.WebDriver = new protractor.Builder(). - withCapabilities(protractor.Capabilities.chrome()). - build(); - var baseDriver: webdriver.WebDriver = driver; - - var action: protractor.ActionSequence = new protractor.ActionSequence(driver); - var baseAction: webdriver.ActionSequence = action; - - var alert: protractor.Alert = new protractor.Alert(driver, 'Message'); - var baseAlert: webdriver.Alert = alert; - - var unhandledAlertError: protractor.UnhandledAlertError = new protractor.UnhandledAlertError('Message', alert); - var baseUnhandledAlertError: webdriver.UnhandledAlertError = unhandledAlertError; - - var browser: string = protractor.Browser.ANDROID; - - var builder: protractor.Builder = new protractor.Builder(); - var baseBuilder: webdriver.Builder = builder; - - var capability: string = protractor.Capability.BROWSER_NAME; - - var capabilities: protractor.Capabilities = protractor.Capabilities.chrome(); - var baseCapabilities: webdriver.Capabilities = capabilities; - - var commandName: string = protractor.CommandName.CLICK_ELEMENT; - - var command: protractor.Command = new protractor.Command(protractor.CommandName.CLICK); - var baseCommand: webdriver.Command = command; - - var eventEmitter: protractor.EventEmitter = new protractor.EventEmitter(); - var baseEventEmitter: webdriver.EventEmitter = eventEmitter; - - var firefoxDomExecutor: protractor.FirefoxDomExecutor = new protractor.FirefoxDomExecutor(); - var baseFirefoxDomExecutor: webdriver.FirefoxDomExecutor = firefoxDomExecutor; - - var webElement: protractor.WebElement = new protractor.WebElement(driver, new protractor.promise.Promise()); - var baseWebElement: webdriver.WebElement = webElement; - - var locator: protractor.Locator = new protractor.Locator('id', 'ABC'); - var baseLocator: webdriver.Locator = locator; - - var session: protractor.Session = new protractor.Session('ABC', webdriver.Capabilities.android()); - var baseSession: webdriver.Session = session; - - locator = protractor.By.name('name'); - - // logging module - - var levelName: string = protractor.logging.LevelName.ALL; - var loggingType: string = protractor.logging.Type.CLIENT; - - var level: webdriver.logging.Level = protractor.logging.Level.ALL; - - var entry: protractor.logging.Entry = new protractor.logging.Entry(protractor.logging.Level.ALL, 'Message'); - var baseEntry: webdriver.logging.Entry = entry; - - level = protractor.logging.getLevel('DEBUG'); - - protractor.logging.Preferences = { a: 123 }; - - // promise module - - var promise: protractor.promise.Promise = new protractor.promise.Promise(); - var basePromise: webdriver.promise.Promise = promise; - - var deferred: protractor.promise.Deferred = new protractor.promise.Deferred(); - var baseDeferred: webdriver.promise.Deferred = deferred; - - var flow: protractor.promise.ControlFlow = new protractor.promise.ControlFlow(); - var baseFlow: webdriver.promise.ControlFlow = flow; - - protractor.promise.asap(promise, function(value: any){ return true; }); - protractor.promise.asap(promise, function(value: any){}, function(err: any) { return 'ABC'; }); - - promise = protractor.promise.checkedNodeCall(function(err: any, value: any) { return 123; }); - - flow = protractor.promise.controlFlow(); - - promise = protractor.promise.createFlow(function(newFlow: webdriver.promise.ControlFlow) { }); - - deferred = protractor.promise.defer(function() {}); - deferred = protractor.promise.defer(function(reason?: any) {}); - - promise = protractor.promise.delayed(123); - - promise = protractor.promise.fulfilled(); - promise = protractor.promise.fulfilled({a: 123}); - - promise = protractor.promise.fullyResolved({a: 123}); - - var isPromise: boolean = protractor.promise.isPromise('ABC'); - - promise = protractor.promise.rejected({a: 123}); - - protractor.promise.setDefaultFlow(new webdriver.promise.ControlFlow()); - - promise = protractor.promise.when(promise, function(value: any) { return 123; }, function(err: Error) { return 123; }); - - // error module - - var errorCode: number = protractor.error.ErrorCode.ELEMENT_NOT_VISIBLE; - var error: protractor.error.Error = new protractor.error.Error(protractor.error.ErrorCode.ELEMENT_NOT_VISIBLE); - var baseError: webdriver.error.Error = error; - - // process module - - var isNative: boolean = protractor.process.isNative(); - var value: string; - - value = protractor.process.getEnv('name'); - value = protractor.process.getEnv('name', 'default'); - - protractor.process.setEnv('name', 'value'); - protractor.process.setEnv('name', 123); - -} - -function TestProtractor() { - var ptor: protractor.Protractor; - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - ptor = new protractor.Protractor(driver); - ptor = new protractor.Protractor(driver, 'baseUrl'); - ptor = new protractor.Protractor(driver, 'baseUrl', 'rootElement'); - ptor = protractor.getInstance(); - protractor.setInstance(ptor); - - ptor = protractor.wrapDriver(driver); - ptor = protractor.wrapDriver(driver, 'baseUrl'); - ptor = protractor.wrapDriver(driver, 'baseUrl', 'rootElement'); - - ptor = browser; - - driver = ptor.driver; - var baseUrl: string = ptor.baseUrl; - var rootEl: string = ptor.rootEl; - var ignoreSynchronization: boolean = ptor.ignoreSynchronization; - var params: any = ptor.params; - - ptor.debugger(); - - var webElement: protractor.WebElement = ptor.findElement(by.css('.class')); - var promise: webdriver.promise.Promise; - promise = ptor.findElements(by.css('.class')); - promise = ptor.isElementPresent(by.css('.class')); - promise = ptor.isElementPresent(webElement); - - ptor.clearMockModules(); - ptor.addMockModule('name', 'script'); - ptor.addMockModule('name', function() {}); - ptor.removeMockModule('name'); - ptor.waitForAngular(); - - var elementFinder: protractor.ElementFinder; - var elementArrayFinder: protractor.ElementArrayFinder; - - elementFinder = ptor.element(by.id('ABC')); - elementFinder = ptor.$('.class'); - - elementArrayFinder = ptor.$$('.class'); - - var locationAbsUrl: webdriver.promise.Promise = ptor.getLocationAbsUrl(); - ptor.setLocation('webaddress.com'); - - promise = ptor.get('webaddress.com'); - promise = ptor.get('webdaddress.com', 45); - ptor.refresh(); - ptor.refresh(45); - var navigation: webdriver.WebDriverNavigation = ptor.navigate(); - ptor.pause(); - ptor.pause(8080); -} - -function TestElement() { - var elementFinder: protractor.ElementFinder = element(by.id('id')); - var elementArrayFinder: protractor.ElementArrayFinder = element.all(by.className('class')); -} - -function TestElementFinder() { - var elementFinder: protractor.ElementFinder = element(by.id('id')); - var promise: webdriver.promise.Promise; - - promise = elementFinder.click(); - promise = elementFinder.allowAnimations('string'); - promise = elementFinder.sendKeys(protractor.Key.UP, protractor.Key.DOWN); - promise = elementFinder.getTagName(); - promise = elementFinder.getCssValue('display'); - promise = elementFinder.getAttribute('atribute'); - promise = elementFinder.getText(); - promise = elementFinder.getSize(); - promise = elementFinder.getLocation(); - promise = elementFinder.isEnabled(); - promise = elementFinder.isSelected(); - promise = elementFinder.submit(); - promise = elementFinder.clear(); - promise = elementFinder.isDisplayed(); - promise = elementFinder.getOuterHtml(); - promise = elementFinder.getInnerHtml(); - promise = elementFinder.isElementPresent(by.id('id')); - promise = elementFinder.$('.class'); - promise = elementFinder.$$('.class'); - promise = elementFinder.evaluate('expression'); - promise = elementFinder.isPresent(); - - var webElement: webdriver.WebElement; -} - -function TestElementArrayFinder() { - var elementArrayFinder: protractor.ElementArrayFinder = element.all(by.id('id')); - var promise: webdriver.promise.Promise; - var elementFinder: protractor.ElementFinder; - - var driverElementArray: webdriver.WebElement[] = elementArrayFinder.getWebElements(); - elementFinder = elementArrayFinder.get(42); - elementFinder = elementArrayFinder.first(); - elementFinder = elementArrayFinder.last(); - promise = elementArrayFinder.count(); - promise = elementArrayFinder.asElementFinders_(); - elementArrayFinder.each(function(element: protractor.ElementFinder){ - // nothing - }); - elementArrayFinder.map(function(element: protractor.ElementFinder, index: number){ - // nothing - }); - elementArrayFinder.filter(function(element: protractor.ElementFinder, index: number){ - return element.getText().then((text: string) => { - return text === "foo"; - }); - }); - elementArrayFinder.reduce(function(accumulator: string, element: protractor.ElementFinder){ - return element.getText().then((text: string) => { - return accumulator + ',' + text; - }); - }, ''); - elementArrayFinder.reduce(function(accumulator: string, element: protractor.ElementFinder, index: number, array: protractor.ElementFinder[]){ - return element.getText().then((text: string) => { - return accumulator + ',' + text; - }); - }, ''); - elementArrayFinder.then(function(underlyingElementFinders: protractor.ElementFinder[]){ - //nothing - }); -} - -// This function tests the angular specific locator strategies. -function TestLocatorStrategies() { - var ptor: protractor.Protractor = protractor.getInstance(); - var webElement: webdriver.WebElement; - - // Protractor Specific Locators - protractor.By.addLocator('customLocator', 'script'); - protractor.By.addLocator('customLocator2', function(){ - // nothing - }); - webElement = ptor.findElement(protractor.By.binding('binding')); - webElement = ptor.findElement(protractor.By.exactBinding('exactBinding')); - webElement = ptor.findElement(protractor.By.model('model')); - webElement = ptor.findElement(protractor.By.repeater('repeater')); - webElement = ptor.findElement(protractor.By.repeater('repeater').column(0)); - webElement = ptor.findElement(protractor.By.repeater('repeater').row(0)); - webElement = ptor.findElement(protractor.By.repeater('repeater').row(0).column(0)); - webElement = ptor.findElement(protractor.By.buttonText('buttonText')); - webElement = ptor.findElement(protractor.By.partialButtonText('partialButtonText')); - webElement = ptor.findElement(protractor.By.cssContainingText('cssSelector', 'search text')); - webElement = ptor.findElement(protractor.By.options('options')); -} diff --git a/angular-protractor/legacy/angular-protractor-1.0.0-rc4.d.ts b/angular-protractor/legacy/angular-protractor-1.0.0-rc4.d.ts deleted file mode 100644 index 5ec8dd09c..000000000 --- a/angular-protractor/legacy/angular-protractor-1.0.0-rc4.d.ts +++ /dev/null @@ -1,1125 +0,0 @@ -// Type definitions for Angular Protractor 1.0.0-rc4 -// Project: https://github.com/angular/protractor -// Definitions by: Bill Armstrong -// Definitions: https://github.com/borisyankov/DefinitelyTyped - -/// - -declare module protractor { - //region Wrapped webdriver Items - - class AbstractBuilder extends webdriver.AbstractBuilder {} - class ActionSequence extends webdriver.ActionSequence {} - class Alert extends webdriver.Alert {} - class Builder extends webdriver.Builder {} - class Button extends webdriver.Button {} - class Capabilities extends webdriver.Capabilities {} - class Command extends webdriver.Command {} - class EventEmitter extends webdriver.EventEmitter {} - class FirefoxDomExecutor extends webdriver.FirefoxDomExecutor {} - class Locator extends webdriver.Locator {} - class Session extends webdriver.Session {} - class WebDriver extends webdriver.WebDriver {} - class Browser extends webdriver.Browser {} - class Capability extends webdriver.Capability {} - class CommandName extends webdriver.CommandName {} - class Key extends webdriver.Key {} - class UnhandledAlertError extends webdriver.UnhandledAlertError {} - class WebElement extends webdriver.WebElement {} - - module command { - class Command extends webdriver.Command {} - class CommandName extends webdriver.CommandName {} - } - - module error { - class Error extends webdriver.error.Error {} - class ErrorCode extends webdriver.error.ErrorCode {} - } - - module events { - class EventEmitter extends webdriver.EventEmitter {} - } - - module logging { - var Preferences: any; - - class LevelName extends webdriver.logging.LevelName {} - class Type extends webdriver.logging.Type {} - class Level extends webdriver.logging.Level {} - class Entry extends webdriver.logging.Entry {} - - function getLevel(nameOrValue: string): webdriver.logging.Level; - function getLevel(nameOrValue: number): webdriver.logging.Level; - } - - module promise { - class Promise extends webdriver.promise.Promise {} - class Deferred extends webdriver.promise.Deferred {} - class ControlFlow extends webdriver.promise.ControlFlow {} - - /** - * @return {!webdriver.promise.ControlFlow} The currently active control flow. - */ - function controlFlow(): webdriver.promise.ControlFlow; - - /** - * Creates a new control flow. The provided callback will be invoked as the - * first task within the new flow, with the flow as its sole argument. Returns - * a promise that resolves to the callback result. - * @param {function(!webdriver.promise.ControlFlow)} callback The entry point - * to the newly created flow. - * @return {!webdriver.promise.Promise} A promise that resolves to the callback - * result. - */ - function createFlow(callback: (flow: webdriver.promise.ControlFlow) => any): webdriver.promise.Promise; - - /** - * Determines whether a {@code value} should be treated as a promise. - * Any object whose "then" property is a function will be considered a promise. - * - * @param {*} value The value to test. - * @return {boolean} Whether the value is a promise. - */ - function isPromise(value: any): boolean; - - /** - * Creates a promise that will be resolved at a set time in the future. - * @param {number} ms The amount of time, in milliseconds, to wait before - * resolving the promise. - * @return {!webdriver.promise.Promise} The promise. - */ - function delayed(ms: number): webdriver.promise.Promise; - - /** - * Creates a new deferred object. - * @param {Function=} opt_canceller Function to call when cancelling the - * computation of this instance's value. - * @return {!webdriver.promise.Deferred} The new deferred object. - */ - function defer(opt_canceller?: any): webdriver.promise.Deferred; - - /** - * Creates a promise that has been resolved with the given value. - * @param {*=} opt_value The resolved value. - * @return {!webdriver.promise.Promise} The resolved promise. - */ - function fulfilled(opt_value?: any): webdriver.promise.Promise; - - /** - * Creates a promise that has been rejected with the given reason. - * @param {*=} opt_reason The rejection reason; may be any value, but is - * usually an Error or a string. - * @return {!webdriver.promise.Promise} The rejected promise. - */ - function rejected(opt_reason?: any): webdriver.promise.Promise; - - /** - * Wraps a function that is assumed to be a node-style callback as its final - * argument. This callback takes two arguments: an error value (which will be - * null if the call succeeded), and the success value as the second argument. - * If the call fails, the returned promise will be rejected, otherwise it will - * be resolved with the result. - * @param {!Function} fn The function to wrap. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * result of the provided function's callback. - */ - function checkedNodeCall(fn: (error: any, value: any) => any): webdriver.promise.Promise; - - /** - * Registers an observer on a promised {@code value}, returning a new promise - * that will be resolved when the value is. If {@code value} is not a promise, - * then the return promise will be immediately resolved. - * @param {*} value The value to observe. - * @param {Function=} opt_callback The function to call when the value is - * resolved successfully. - * @param {Function=} opt_errback The function to call when the value is - * rejected. - * @return {!webdriver.promise.Promise} A new promise. - */ - function when(value: any, opt_callback?: (value: any) => any, opt_errback?: (error: any) => any): webdriver.promise.Promise; - - /** - * Invokes the appropriate callback function as soon as a promised - * {@code value} is resolved. This function is similar to - * {@code webdriver.promise.when}, except it does not return a new promise. - * @param {*} value The value to observe. - * @param {Function} callback The function to call when the value is - * resolved successfully. - * @param {Function=} opt_errback The function to call when the value is - * rejected. - */ - function asap(value: any, callback: (value: any) => any, opt_errback?: (error: any) => any): void; - - /** - * Returns a promise that will be resolved with the input value in a - * fully-resolved state. If the value is an array, each element will be fully - * resolved. Likewise, if the value is an object, all keys will be fully - * resolved. In both cases, all nested arrays and objects will also be - * fully resolved. All fields are resolved in place; the returned promise will - * resolve on {@code value} and not a copy. - * - * Warning: This function makes no checks against objects that contain - * cyclical references: - * - * var value = {}; - * value['self'] = value; - * webdriver.promise.fullyResolved(value); // Stack overflow. - * - * @param {*} value The value to fully resolve. - * @return {!webdriver.promise.Promise} A promise for a fully resolved version - * of the input value. - */ - function fullyResolved(value: any): webdriver.promise.Promise; - - /** - * Changes the default flow to use when no others are active. - * @param {!webdriver.promise.ControlFlow} flow The new default flow. - * @throws {Error} If the default flow is not currently active. - */ - function setDefaultFlow(flow: webdriver.promise.ControlFlow): void; - - } - - module process { - - /** - * Queries for a named environment variable. - * @param {string} name The name of the environment variable to look up. - * @param {string=} opt_default The default value if the named variable is not - * defined. - * @return {string} The queried environment variable. - */ - function getEnv(name: string, opt_default?: string): string; - - /** - * @return {boolean} Whether the current process is Node's native process - * object. - */ - function isNative(): boolean; - - /** - * Sets an environment value. If the new value is either null or undefined, the - * environment variable will be cleared. - * @param {string} name The value to set. - * @param {*} value The new value; will be coerced to a string. - */ - function setEnv(name: string, value: any): void; - - } - - //endregion - /** - * Use as: element(locator) - * - * The ElementFinder can be treated as a WebElement for most purposes, in - * particular, you may perform actions (i.e. click, getText) on them as you - * would a WebElement. ElementFinders extend Promise, and once an action - * is performed on an ElementFinder, the latest result from the chain can be - * accessed using then. Unlike a WebElement, an ElementFinder will wait for - * angular to settle before performing finds or actions. - * - * ElementFinder can be used to build a chain of locators that is used to find - * an element. An ElementFinder does not actually attempt to find the element - * until an action is called, which means they can be set up in helper files - * before the page is available. - * - * @param {webdriver.Locator} locator An element locator. - * @return {ElementFinder} - */ - interface Element { - (locator: webdriver.Locator): ElementFinder; - - /** - * ElementArrayFinder is used for operations on an array of elements (as opposed - * to a single element). - * - * @param {webdriver.Locator} locator An element locator. - * @return {ElementArrayFinder} - */ - all(locator: webdriver.Locator): ElementArrayFinder; - } - - interface ElementFinder { - /** - * Use as: element(locator).element(locator) - * Calls to element may be chained to find elements within a parent. - * - * @param {webdriver.Locator} locator The locator that will be used to find descendents. - * - * @return {protractor.ElementFinder} The descendent element found by the locator - */ - element(locator: webdriver.Locator): protractor.ElementFinder; - - /** - * Use as: element(locator).all(locator) - * Calls to element may be chained to find an array of elements within a parent. - * - * @param {webdriver.Locator} locator The locator that will be used to find descendents. - * - * @return {protractor.ElementArrayFinder} The descendent elements found by the locator - */ - all(locator: webdriver.Locator): protractor.ElementArrayFinder; - - /** - * Shortcut for querying the document directly with css. - * - * @param {string} selector a css selector - * @see webdriver.WebElement.findElement - * @return {!protractor.WebElement} - */ - $(selector: string): protractor.WebElement; - - /** - * Shortcut for querying the document directly with css. - * - * @param {string} selector a css selector - * @see webdriver.WebElement.findElements - * @return {!webdriver.promise.Promise} A promise that will be resolved to an - * array of the located {@link webdriver.WebElement}s. - */ - $$(selector: string): webdriver.promise.Promise; - - /** - * Use as: element(locator).isPresent() - * Determine whether the element is present on the page. - * - * @return {protractor.ElementFinder} Which resolves to whether the element is present on the page. - */ - isPresent(): webdriver.promise.Promise; - - /** - * Override for WebElement.prototype.isElementPresent so that protractor waits - * for Angular to settle before making the check. - * - * @see ElementFinder.isPresent - * @return {!webdriver.promise.Promise} which resolves to whether the element is present on the page. - */ - isElementPresent(locator: webdriver.Locator): webdriver.promise.Promise; - - /** - * Return this ElementFinder's locator. - * - * @return {webdriver.Locator} - */ - locator(): webdriver.Locator; - - /** - * Use as: element(locator).getWebElement() - * Returns the WebElement represented by this ElementFinder. - * Throws the WebDriver error if the element doesn't exist. - * If index is null, it makes sure that there is only one underlying WebElement - * described by the chain of locators and issues a warning otherwise. - * If index is not null, it retrieves the WebElement specified by the index.. - * @return {webdriver.WebElement} The WebElement represented by the ElementFinder. - */ - getWebElement(): webdriver.WebElement; - - /** - * Evalates the input as if it were on the scope of the current element. - * @param {string} expression - * - * @return {!webdriver.promise.Promise} A promise that will resolve to the - * evaluated expression. The result will be resolved as in - * {@link webdriver.WebDriver.executeScript}. In summary - primitives will - * be resolved as is, functions will be converted to string, and elements - * will be returned as a WebElement. - */ - evaluate(expression: string): webdriver.promise.Promise; - - /** - * Determine if animation is allowed on the current element. - * @param {string} value - * - * @return {ElementFinder} which resolves to whether animation is allowed. - */ - allowAnimations(value: string): webdriver.promise.Promise; - - /** - * Access the underlying actionResult of ElementFinder. Implementation allows ElementFinder to be used as a webdriver.promise.Promise. - * @param {function(webdriver.promise.Promise)} fn Function which takes the value of the underlying actionResult. - * - * @return {webdriver.promise.Promise} Promise which contains the results of evaluating fn. - */ - then(fn: IThenFunction): webdriver.promise.Promise; - - /** - * Schedules a command to click on this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the click command has completed. - */ - click(): webdriver.promise.Promise; - - /** - * Schedules a command to type a sequence on the DOM element represented by this - * instance. - *

- * Modifier keys (SHIFT, CONTROL, ALT, META) are stateful; once a modifier is - * processed in the keysequence, that key state is toggled until one of the - * following occurs: - *

    - *
  • The modifier key is encountered again in the sequence. At this point the - * state of the key is toggled (along with the appropriate keyup/down events). - *
  • - *
  • The {@code webdriver.Key.NULL} key is encountered in the sequence. When - * this key is encountered, all modifier keys current in the down state are - * released (with accompanying keyup events). The NULL key can be used to - * simulate common keyboard shortcuts: - * - * element.sendKeys("text was", - * webdriver.Key.CONTROL, "a", webdriver.Key.NULL, - * "now text is"); - * // Alternatively: - * element.sendKeys("text was", - * webdriver.Key.chord(webdriver.Key.CONTROL, "a"), - * "now text is"); - *
  • - *
  • The end of the keysequence is encountered. When there are no more keys - * to type, all depressed modifier keys are released (with accompanying keyup - * events). - *
  • - *
- * Note: On browsers where native keyboard events are not yet - * supported (e.g. Firefox on OS X), key events will be synthesized. Special - * punctionation keys will be synthesized according to a standard QWERTY en-us - * keyboard layout. - * - * @param {...string} var_args The sequence of keys to - * type. All arguments will be joined into a single sequence (var_args is - * permitted for convenience). - * @return {!webdriver.promise.Promise} A promise that will be resolved when all - * keys have been typed. - */ - sendKeys(...var_args: string[]): webdriver.promise.Promise; - - /** - * Schedules a command to query for the tag/node name of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's tag name. - */ - getTagName(): webdriver.promise.Promise; - - /** - * Schedules a command to query for the computed style of the element - * represented by this instance. If the element inherits the named style from - * its parent, the parent will be queried for its value. Where possible, color - * values will be converted to their hex representation (e.g. #00ff00 instead of - * rgb(0, 255, 0)). - *

- * Warning: the value returned will be as the browser interprets it, so - * it may be tricky to form a proper assertion. - * - * @param {string} cssStyleProperty The name of the CSS style property to look - * up. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * requested CSS value. - */ - getCssValue(cssStyleProperty: string): webdriver.promise.Promise; - - /** - * Schedules a command to query for the value of the given attribute of the - * element. Will return the current value even if it has been modified after the - * page has been loaded. More exactly, this method will return the value of the - * given attribute, unless that attribute is not present, in which case the - * value of the property with the same name is returned. If neither value is - * set, null is returned. The "style" attribute is converted as best can be to a - * text representation with a trailing semi-colon. The following are deemed to - * be "boolean" attributes and will be returned as thus: - * - *

async, autofocus, autoplay, checked, compact, complete, controls, declare, - * defaultchecked, defaultselected, defer, disabled, draggable, ended, - * formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, - * loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, - * paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, - * selected, spellcheck, truespeed, willvalidate - * - *

Finally, the following commonly mis-capitalized attribute/property names - * are evaluated as expected: - *

    - *
  • "class" - *
  • "readonly" - *
- * @param {string} attributeName The name of the attribute to query. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * attribute's value. - */ - getAttribute(attributeName: string): webdriver.promise.Promise; - - /** - * Get the visible (i.e. not hidden by CSS) innerText of this element, including - * sub-elements, without any leading or trailing whitespace. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's visible text. - */ - getText(): webdriver.promise.Promise; - - /** - * Schedules a command to compute the size of this element's bounding box, in - * pixels. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's size as a {@code {width:number, height:number}} object. - */ - getSize(): webdriver.promise.Promise; - - /** - * Schedules a command to compute the location of this element in page space. - * @return {!webdriver.promise.Promise} A promise that will be resolved to the - * element's location as a {@code {x:number, y:number}} object. - */ - getLocation(): webdriver.promise.Promise; - - /** - * Schedules a command to query whether the DOM element represented by this - * instance is enabled, as dicted by the {@code disabled} attribute. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently enabled. - */ - isEnabled(): webdriver.promise.Promise; - - /** - * Schedules a command to query whether this element is selected. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently selected. - */ - isSelected(): webdriver.promise.Promise; - - /** - * Schedules a command to submit the form containing this element (or this - * element if it is a FORM element). This command is a no-op if the element is - * not contained in a form. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the form has been submitted. - */ - submit(): webdriver.promise.Promise; - - /** - * Schedules a command to clear the {@code value} of this element. This command - * has no effect if the underlying DOM element is neither a text INPUT element - * nor a TEXTAREA element. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the element has been cleared. - */ - clear(): webdriver.promise.Promise; - - /** - * Schedules a command to test whether this element is currently displayed. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently visible on the page. - */ - isDisplayed(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the outer HTML of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * the element's outer HTML. - */ - getOuterHtml(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the inner HTML of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's inner HTML. - */ - getInnerHtml(): webdriver.promise.Promise; - - /** - * @return {!webdriver.promise.Promise.} A promise - * that resolves to this element's JSON representation as defined by the - * WebDriver wire protocol. - * @see http://code.google.com/p/selenium/wiki/JsonWireProtocol - */ - toWireValue(): webdriver.promise.Promise; - } - - interface IThenFunction { - (promiseResult: any): any; - } - - - interface ElementArrayFinder { - /** - * Use as: element.all(locator).getWebElements() - * Returns the array of WebElements represented by this ElementArrayFinder. - * - * @return {Array.} Array of WebElements represented by this ElementArrayFinder - */ - getWebElements(): webdriver.WebElement[]; - - /** - * Use as: element.all(locator).get(index) - * Get an element found by the locator by index. The index starts at 0. This does not actually retrieve the underlying element. - * - * @param {number} index Element index. - * - * @return {protractor.ElementFinder} Finder representing element at the given index - */ - get(index: number): protractor.ElementFinder; - - - /** - * Use as: element.all(locator).first() - * Get the first matching element for the locator. This does not actually retrieve the underlying element. - * - * @return {Protractor.ElementFinder} Finder representing the first matching element - */ - first(): protractor.ElementFinder; - - /** - * Use as: element.all(locator).last() - * Get the last matching element for the locator. This does not actually retrieve the underlying element. - * - * @return {Protractor.ElementFinder} Finder representing the last matching element - */ - last(): protractor.ElementFinder; - - /** - * Use as: element.all(locator).getWebElements() - * Returns the array of WebElements represented by this ElementArrayFinder. - * - * @return {!webdriver.promise.Promise} The array of WebElements represented by this ElementArrayFinder - */ - count(): webdriver.promise.Promise; - - /** - * Use as: element.all(locator).each(eachFunction) - * Calls the input function on each ElementFinder found by the locator. - * - * @param {function(ElementFinder)} fn Input function. - */ - each(fn: IEachFunction): void; - - /** - * Use as: element.all(locator).map(mapFunction) - * Apply a map function to each element found using the locator. The callback receives the ElementFinder as the first argument and the index as a second arg. - * - * @param {function(ElementFinder, number)} mapFn Map function that will be applied to each element. - * - * @return {!webdriver.promise.Promise} A promise that resolves to an array of values returned by the map function. - */ - map(mapFn: IMapFunction): webdriver.promise.Promise; - - /** - * Use as: element.all(locator).filter(filterFn) - * Apply a filter function to each element found using the locator. Returns promise of a new array with all elements that pass the filter function. The filter function receives the ElementFinder as the first argument and the index as a second arg. - * - * @param {function(ElementFinder, number): webdriver.promise.Promise} filterFn Filter function that will test if an element should be returned. filterFn should return a promise that resolves to a boolean. - * - * @return {!webdriver.promise.Promise} A promise that resolves to an array of ElementFinders that satisfy the filter function. - */ - filter(func: IFilterFunction): webdriver.promise.Promise; - - /** - * Use as: element.all(locator).reduce(reduceFn) - * Apply a reduce function against an accumulator and every element found using the locator (from left-to-right). - * The reduce function has to reduce every element into a single value (the accumulator). - * Returns promise of the accumulator. - * The reduce function receives the accumulator, current ElementFinder, the index, and the entire array of ElementFinders, respectively. - * - * @param {function(number, ElementFinder, number, Array.): webdriver.promise.Promise} reduceFn Reduce function that reduces every element into a single value. - * @param {*} initialValue Initial value of the accumulator. - * - * @return {!webdriver.promise.Promise} A promise that resolves to the final value of the accumulator. - */ - reduce(func: IReductionFunction, initialValue: any): webdriver.promise.Promise; - - /** - * Represents the ElementArrayFinder as an array of ElementFinders. - * - * @return {!webdriver.promise.Promise} Return a promise, which resolves to a list (array) - * of ElementFinders specified by the locator. - */ - asElementFinders_(): webdriver.promise.Promise; - - - /** - * Find the elements specified by the locator. The input function is passed - * to the resulting promise, which resolves to an array of ElementFinders. - * - * Use as: element.all(locator).then(thenFunction) - *
    - *
  • First
  • - *
  • Second
  • - *
  • Third
  • - *
- * - * element.all(by.css('.items li')).then(function(arr) { - * expect(arr.length).toEqual(3); - * }); - * - * @param {function(Array.)} fn - * - * @type {webdriver.promise.Promise} a promise which will resolve to - * an array of ElementFinders matching the locator. - */ - then(fn: IElementArrayFinderThenFunction): webdriver.promise.Promise; - } - - interface IEachFunction { - (element: protractor.ElementFinder): void; - } - - interface IMapFunction { - (element: ElementFinder, index: number): any; - } - - interface IFilterFunction { - (element: ElementFinder, index: number): webdriver.promise.Promise; - } - - interface IReductionFunction { - (accumulator: any, element: protractor.ElementFinder, index?: number, array?: protractor.ElementFinder[]): webdriver.promise.Promise; - } - - interface IElementArrayFinderThenFunction { - (promiseResult: ElementFinder[]): any; - } - - class LocatorWithColumn extends webdriver.Locator { - column(index: number): webdriver.Locator; - } - - class RepeaterLocator extends LocatorWithColumn { - row(index: number): LocatorWithColumn; - } - - interface IProtractorLocatorStrategy extends webdriver.ILocatorStrategy { - /** - * Add a locator to this instance of ProtractorBy. This locator can then be - * used with element(by.()). - * - * @param {string} name - * @param {function|string} script A script to be run in the context of - * the browser. This script will be passed an array of arguments - * that begins with the element scoping the search, and then - * contains any args passed into the locator. It should return - * an array of elements. - */ - addLocator(name: string, script: any): void; - - /** - * Usage: - * {{status}} - * var status = element(by.binding('{{status}}')); - * - * @param {string} bindingDescriptor - * @return {webdriver.Locator} - */ - binding(bindingDescriptor: string): webdriver.Locator; - - /** - * Find an element by exact binding. - * - * {{ person.name }} - * - * {{person_phone|uppercase}} - * - * expect(element(by.exactBinding('person.name')).isPresent()).toBe(true); - * expect(element(by.exactBinding('person-email')).isPresent()).toBe(true); - * expect(element(by.exactBinding('person')).isPresent()).toBe(false); - * expect(element(by.exactBinding('person_phone')).isPresent()).toBe(true); - * expect(element(by.exactBinding('person_phone|uppercase')).isPresent()).toBe(true); - * expect(element(by.exactBinding('phone')).isPresent()).toBe(false); - * - * @param {string} bindingDescriptor - * @return {webdriver.Locator} - */ - exactBinding(bindingDescriptor: string): webdriver.Locator; - - /** - * - * Find an element by ng-model expression. - * - * Usage: - * - * var input = element(by.model('person.name')); - * input.sendKeys('123'); - * expect(input.getAttribute('value')).toBe('Foo123'); - * - * @param {string} model ng-model expression. - * @return {webdriver.Locator} - */ - model(model: string): webdriver.Locator; - - /** - * Find a button by text. - * - * Usage: - * - * element(by.buttonText('Save')); - * - * @param {string} searchText - * @return {webdriver.Locator} - */ - buttonText(searchText: string): webdriver.Locator; - - - /** - * Find a button by partial text. - * - * Usage: - * - * element(by.partialButtonText('Save')); - * - * @param {string} searchText - * @return {webdriver.Locator} - */ - partialButtonText(searchText: string): webdriver.Locator; - - /** - * Find elements inside an ng-repeat. - * - * Usage: - *
- * {{cat.name}} - * {{cat.age}} - *
- * - *
- * {{$index}} - *
- *
- *

{{book.name}}

- *

{{book.blurb}}

- *
- * - * // Returns the DIV for the second cat. - * var secondCat = element(by.repeater('cat in pets').row(1)); - * - * // Returns the SPAN for the first cat's name. - * var firstCatName = element(by.repeater('cat in pets'). - * row(0).column('{{cat.name}}')); - * - * // Returns a promise that resolves to an array of WebElements from a column - * var ages = element.all( - * by.repeater('cat in pets').column('{{cat.age}}')); - * - * // Returns a promise that resolves to an array of WebElements containing - * // all top level elements repeated by the repeater. For 2 pets rows resolves - * // to an array of 2 elements. - * var rows = element.all(by.repeater('cat in pets')); - * - * // Returns a promise that resolves to an array of WebElements containing all - * // the elements with a binding to the book's name. - * var divs = element.all(by.repeater('book in library').column('book.name')); - * - * // Returns a promise that resolves to an array of WebElements containing - * // the DIVs for the second book. - * var bookInfo = element.all(by.repeater('book in library').row(1)); - * - * // Returns the H4 for the first book's name. - * var firstBookName = element(by.repeater('book in library'). - * row(0).column('{{book.name}}')); - * - * // Returns a promise that resolves to an array of WebElements containing - * // all top level elements repeated by the repeater. For 2 books divs - * // resolves to an array of 4 elements. - * var divs = element.all(by.repeater('book in library')); - */ - repeater(repeatDescriptor: string): RepeaterLocator; - - /** - * Find elements by CSS which contain a certain string. - * - * @view - *
    - *
  • Dog
  • - *
  • Cat
  • - *
- * - * @example - * // Returns the DIV for the dog, but not cat. - * var dog = element(by.cssContainingText('.pet', 'Dog')); - * - * @param cssSelector {string} - * @param searchText {string} - * @return {webdriver.Locator} - */ - cssContainingText(cssSelector: string, searchText: string): webdriver.Locator; - - /** - * Find an element by ng-options expression. - * - * Usage: - * - * - * var allOptions = element.all(by.options('c for c in colors')); - * expect(allOptions.count()).toEqual(2); - * var firstOption = allOptions.first(); - * expect(firstOption.getText()).toEqual('red'); - * - * @param {string} optionsDescriptor ng-options expression. - * @return {webdriver.Locator} - */ - options(optionsDescriptor: string): webdriver.Locator; - } - - var By: IProtractorLocatorStrategy; - - class Protractor extends webdriver.WebDriver { - - //region Constructors - - /** - * @param {webdriver.WebDriver} webdriver - * @param {string=} opt_baseUrl A base URL to run get requests against. - * @param {string=body} opt_rootElement Selector element that has an ng-app in - * scope. - * @constructor - */ - constructor(webdriver: webdriver.WebDriver, opt_baseUrl?: string, opt_rootElement?: string); - - //endregion - - //region Properties - - /** - * The wrapped webdriver instance. Use this to interact with pages that do - * not contain Angular (such as a log-in screen). - * - * @type {webdriver.WebDriver} - */ - driver: webdriver.WebDriver; - - /** - * All get methods will be resolved against this base URL. Relative URLs are = - * resolved the way anchor tags resolve. - * - * @type {string} - */ - baseUrl: string; - - /** - * The css selector for an element on which to find Angular. This is usually - * 'body' but if your ng-app is on a subsection of the page it may be - * a subelement. - * - * @type {string} - */ - rootEl: string; - - /** - * If true, Protractor will not attempt to synchronize with the page before - * performing actions. This can be harmful because Protractor will not wait - * until $timeouts and $http calls have been processed, which can cause - * tests to become flaky. This should be used only when necessary, such as - * when a page continuously polls an API using $timeout. - * - * @type {boolean} - */ - ignoreSynchronization: boolean; - - /** - * An object that holds custom test parameters. - * - * @type {Object} - */ - params: any; - - //endregion - - //region Methods - - /** - * Instruct webdriver to wait until Angular has finished rendering and has - * no outstanding $http calls before continuing. - * - * @return {!webdriver.promise.Promise} A promise that will resolve to the - * scripts return value. - */ - waitForAngular(): webdriver.promise.Promise; - - /** - * Waits for Angular to finish rendering before searching for elements. - * @see webdriver.WebDriver.findElement - * - * @param {webdriver.Locator} locator The locator used to find the element. - * @return {!webdriver.WebElement} - */ - findElement(locator: webdriver.Locator): protractor.WebElement; - - /** - * Waits for Angular to finish rendering before searching for elements. - * @see webdriver.WebDriver.findElements - * - * @param {webdriver.Locator} locator The locator used to find the elements. - * @return {!webdriver.promise.Promise} A promise that will be resolved to an - * array of the located {@link webdriver.WebElement}s. - */ - findElements(locator: webdriver.Locator): webdriver.promise.Promise; - - /** - * Tests if an element is present on the page. - * @see webdriver.WebDriver.isElementPresent - * @return {!webdriver.promise.Promise} A promise that will resolve to whether - * the element is present on the page. - */ - isElementPresent(locatorOrElement: webdriver.Locator): webdriver.promise.Promise; - isElementPresent(locatorOrElement: any): webdriver.promise.Promise; - - /** - * Helper function for finding elements. - * - * @type {function(webdriver.Locator): ElementFinder} - */ - element(locator: webdriver.Locator): ElementFinder; - - /** - * Helper function for finding elements by css. - * - * @type {function(string): ElementFinder} - */ - $(cssLocator: string): ElementFinder; - - /** - * Helper function for finding arrays of elements by css. - * - * @type {function(string): ElementArrayFinder} - */ - $$(cssLocator: string): ElementArrayFinder; - - /** - * Add a module to load before Angular whenever Protractor.get is called. - * Modules will be registered after existing modules already on the page, - * so any module registered here will override preexisting modules with the same - * name. - * - * @param {string} name The name of the module to load or override. - * @param {string|Function} script The JavaScript to load the module. - * @param {...*} varArgs Any additional arguments will be provided to - * the script and may be referenced using the `arguments` object. - */ - addMockModule(name: string, script: string, ...varArgs: any[]): void; - addMockModule(name: string, script: any, ...varArgs: any[]): void; - - /** - * Clear the list of registered mock modules. - */ - clearMockModules(): void; - - /** - * Remove a registered mock module. - * @param {!string} name The name of the module to remove. - */ - removeMockModule(name: string): void; - - /** - * See webdriver.WebDriver.get - * - * Navigate to the given destination and loads mock modules before - * Angular. Assumes that the page being loaded uses Angular. - * If you need to access a page which does not have Angular on load, use - * the wrapped webdriver directly. - * - * @param {string} destination Destination URL. - * @param {number=} opt_timeout Number of seconds to wait for Angular to start. - */ - get(destination: string, opt_timeout?: number): webdriver.promise.Promise; - - /** - * See webdriver.WebDriver.refresh - * - * Makes a full reload of the current page and loads mock modules before - * Angular. Assumes that the page being loaded uses Angular. - * If you need to access a page which does not have Angular on load, use - * the wrapped webdriver directly. - * - * @param {number=} opt_timeout Number of seconds to wait for Angular to start. - */ - refresh(opt_timeout?: number): void; - - /** - * Mixin navigation methods back into the navigation object so that - * they are invoked as before, i.e. driver.navigate().refresh() - */ - navigate(): webdriver.WebDriverNavigation; - - /** - * Browse to another page using in-page navigation. - * - * @param {string} url In page URL using the same syntax as $location.url() - * @returns {!webdriver.promise.Promise} A promise that will resolve once - * page has been changed. - */ - setLocation(url: string): webdriver.promise.Promise; - - /** - * Returns the current absolute url from AngularJS. - */ - getLocationAbsUrl(): webdriver.promise.Promise; - - /** - * Pauses the test and injects some helper functions into the browser, so that - * debugging may be done in the browser console. - * - * This should be used under node in debug mode, i.e. with - * protractor debug - * - * While in the debugger, commands can be scheduled through webdriver by - * entering the repl: - * debug> repl - * Press Ctrl + C to leave rdebug repl - * > ptor.findElement(protractor.By.input('user').sendKeys('Laura')); - * > ptor.debugger(); - * debug> c - * - * This will run the sendKeys command as the next task, then re-enter the - * debugger. - */ - debugger(): void; - - /** - * Beta (unstable) pause function for debugging webdriver tests. Use - * browser.pause() in your test to enter the protractor debugger from that - * point in the control flow. - * Does not require changes to the command line (no need to add 'debug'). - * - * @param {=number} opt_debugPort Optional port to use for the debugging process - */ - pause(opt_debugPort?: number): void; - - //endregion - } - - /** - * Create a new instance of Protractor by wrapping a webdriver instance. - * - * @param {webdriver.WebDriver} webdriver The configured webdriver instance. - * @param {string=} opt_baseUrl A URL to prepend to relative gets. - * @return {Protractor} - */ - function wrapDriver(webdriver: webdriver.WebDriver, opt_baseUrl?: string, opt_rootElement?: string): Protractor; - - /** - * Set a singleton instance of protractor. - * @param {Protractor} ptor - */ - function setInstance(ptor: Protractor): void; - - /** - * Get the singleton instance. - * @return {Protractor} - */ - function getInstance(): Protractor; - -} - -interface cssSelectorHelper { - (cssLocator: string): protractor.ElementFinder; -} - -interface cssArraySelectorHelper { - (cssLocator: string): protractor.ElementArrayFinder; -} - -declare var browser: protractor.Protractor; -declare var by: protractor.IProtractorLocatorStrategy; -declare var element: protractor.Element; -declare var $: cssSelectorHelper; -declare var $$: cssArraySelectorHelper; - -declare module 'protractor' { - export = protractor; -} diff --git a/selenium-webdriver/chrome-tests.ts b/selenium-webdriver/chrome-tests.ts deleted file mode 100644 index 14a15be78..000000000 --- a/selenium-webdriver/chrome-tests.ts +++ /dev/null @@ -1,47 +0,0 @@ -/// - -function TestChromeDriver() { - var driver: chrome.Driver = new chrome.Driver(); - driver = new chrome.Driver(webdriver.Capabilities.chrome()); - driver = new chrome.Driver(webdriver.Capabilities.chrome(), new webdriver.promise.ControlFlow()); - - var baseDriver: webdriver.WebDriver = driver; -} - -function TestChromeOptions() { - var options: chrome.Options = new chrome.Options(); - options = chrome.Options.fromCapabilities(webdriver.Capabilities.chrome()); - - options = options.addArguments("a", "b", "c"); - options = options.addExtensions("a", "b", "c"); - options = options.detachDriver(true); - options = options.setChromeBinaryPath("path"); - options = options.setChromeLogFile("logfile"); - options = options.setLocalState("state"); - options = options.setLoggingPrefs(new webdriver.logging.Preferences()); - options = options.setProxy({ proxyType: "proxyType" }); - options = options.setUserPreferences("preferences"); - var capabilities: webdriver.Capabilities = options.toCapabilities(); - capabilities = options.toCapabilities(webdriver.Capabilities.chrome()); - var values: chrome.IOptionsValues = options.toJSON(); -} - -function TestServiceBuilder() { - var builder: chrome.ServiceBuilder = new chrome.ServiceBuilder(); - builder = new chrome.ServiceBuilder("exe"); - - var anything: any = builder.build(); - builder = builder.enableVerboseLogging(); - builder = builder.loggingTo("path"); - builder = builder.setNumHttpThreads(5); - builder = builder.setStdio("config"); - builder = builder.setStdio(["A", "B"]); - builder = builder.setUrlBasePath("path"); - builder = builder.usingPort(8080); - builder = builder.withEnvironment({ "A": "a", "B": "b" }); -} - -function TestChromeModule() { - var service: any = chrome.getDefaultService(); - chrome.setDefaultService({}); -} \ No newline at end of file diff --git a/selenium-webdriver/chrome.d.ts b/selenium-webdriver/chrome.d.ts deleted file mode 100644 index 292551576..000000000 --- a/selenium-webdriver/chrome.d.ts +++ /dev/null @@ -1,269 +0,0 @@ -declare module chrome { - /** - * Creates a new WebDriver client for Chrome. - * - * @extends {webdriver.WebDriver} - */ - class Driver extends webdriver.WebDriver { - /** - * @param {(webdriver.Capabilities|Options)=} opt_config The configuration - * options. - * @param {remote.DriverService=} opt_service The session to use; will use - * the {@link getDefaultService default service} by default. - * @param {webdriver.promise.ControlFlow=} opt_flow The control flow to use, or - * {@code null} to use the currently active flow. - * @constructor - */ - constructor(opt_config?: webdriver.Capabilities, opt_service?: any, opt_flow?: webdriver.promise.ControlFlow); - constructor(opt_config?: Options, opt_service?: any, opt_flow?: webdriver.promise.ControlFlow); - } - - interface IOptionsValues { - args: string[]; - binary?: string; - detach: boolean; - extensions: string[]; - localState?: any; - logFile?: string; - prefs?: any; - } - - /** - * Class for managing ChromeDriver specific options. - */ - class Options { - /** - * @constructor - */ - constructor(); - - /** - * Extracts the ChromeDriver specific options from the given capabilities - * object. - * @param {!webdriver.Capabilities} capabilities The capabilities object. - * @return {!Options} The ChromeDriver options. - */ - static fromCapabilities(capabilities: webdriver.Capabilities): Options; - - - /** - * Add additional command line arguments to use when launching the Chrome - * browser. Each argument may be specified with or without the "--" prefix - * (e.g. "--foo" and "foo"). Arguments with an associated value should be - * delimited by an "=": "foo=bar". - * @param {...(string|!Array.)} var_args The arguments to add. - * @return {!Options} A self reference. - */ - addArguments(...var_args: string[]): Options; - - - /** - * Add additional extensions to install when launching Chrome. Each extension - * should be specified as the path to the packed CRX file, or a Buffer for an - * extension. - * @param {...(string|!Buffer|!Array.<(string|!Buffer)>)} var_args The - * extensions to add. - * @return {!Options} A self reference. - */ - addExtensions(...var_args: any[]): Options; - - - /** - * Sets the path to the Chrome binary to use. On Mac OS X, this path should - * reference the actual Chrome executable, not just the application binary - * (e.g. "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"). - * - * The binary path be absolute or relative to the chromedriver server - * executable, but it must exist on the machine that will launch Chrome. - * - * @param {string} path The path to the Chrome binary to use. - * @return {!Options} A self reference. - */ - setChromeBinaryPath(path: string): Options; - - - /** - * Sets whether to leave the started Chrome browser running if the controlling - * ChromeDriver service is killed before {@link webdriver.WebDriver#quit()} is - * called. - * @param {boolean} detach Whether to leave the browser running if the - * chromedriver service is killed before the session. - * @return {!Options} A self reference. - */ - detachDriver(detach: boolean): Options; - - - /** - * Sets the user preferences for Chrome's user profile. See the "Preferences" - * file in Chrome's user data directory for examples. - * @param {!Object} prefs Dictionary of user preferences to use. - * @return {!Options} A self reference. - */ - setUserPreferences(prefs: any): Options; - - - /** - * Sets the logging preferences for the new session. - * @param {!webdriver.logging.Preferences} prefs The logging preferences. - * @return {!Options} A self reference. - */ - setLoggingPrefs(prefs: webdriver.logging.Preferences): Options; - - - /** - * Sets preferences for the "Local State" file in Chrome's user data - * directory. - * @param {!Object} state Dictionary of local state preferences. - * @return {!Options} A self reference. - */ - setLocalState(state: any): Options; - - - /** - * Sets the path to Chrome's log file. This path should exist on the machine - * that will launch Chrome. - * @param {string} path Path to the log file to use. - * @return {!Options} A self reference. - */ - setChromeLogFile(path: string): Options; - - - /** - * Sets the proxy settings for the new session. - * @param {webdriver.ProxyConfig} proxy The proxy configuration to use. - * @return {!Options} A self reference. - */ - setProxy(proxy: webdriver.ProxyConfig): Options; - - - /** - * Converts this options instance to a {@link webdriver.Capabilities} object. - * @param {webdriver.Capabilities=} opt_capabilities The capabilities to merge - * these options into, if any. - * @return {!webdriver.Capabilities} The capabilities. - */ - toCapabilities(opt_capabilities?: webdriver.Capabilities): webdriver.Capabilities; - - - /** - * Converts this instance to its JSON wire protocol representation. Note this - * function is an implementation not intended for general use. - * @return {{args: !Array., - * binary: (string|undefined), - * detach: boolean, - * extensions: !Array., - * localState: (Object|undefined), - * logFile: (string|undefined), - * prefs: (Object|undefined)}} The JSON wire protocol representation - * of this instance. - */ - toJSON(): IOptionsValues; - } - - /** - * Creates {@link remote.DriverService} instances that manage a ChromeDriver - * server. - */ - class ServiceBuilder { - /** - * @param {string=} opt_exe Path to the server executable to use. If omitted, - * the builder will attempt to locate the chromedriver on the current - * PATH. - * @throws {Error} If provided executable does not exist, or the chromedriver - * cannot be found on the PATH. - * @constructor - */ - constructor(opt_exe?: string); - - /** - * Sets the port to start the ChromeDriver on. - * @param {number} port The port to use, or 0 for any free port. - * @return {!ServiceBuilder} A self reference. - * @throws {Error} If the port is invalid. - */ - usingPort(port: number): ServiceBuilder; - - - /** - * Sets the path of the log file the driver should log to. If a log file is - * not specified, the driver will log to stderr. - * @param {string} path Path of the log file to use. - * @return {!ServiceBuilder} A self reference. - */ - loggingTo(path: string): ServiceBuilder; - - - /** - * Enables verbose logging. - * @return {!ServiceBuilder} A self reference. - */ - enableVerboseLogging(): ServiceBuilder; - - - /** - * Sets the number of threads the driver should use to manage HTTP requests. - * By default, the driver will use 4 threads. - * @param {number} n The number of threads to use. - * @return {!ServiceBuilder} A self reference. - */ - setNumHttpThreads(n: number): ServiceBuilder; - - - /** - * Sets the base path for WebDriver REST commands (e.g. "/wd/hub"). - * By default, the driver will accept commands relative to "/". - * @param {string} path The base path to use. - * @return {!ServiceBuilder} A self reference. - */ - setUrlBasePath(path: string): ServiceBuilder; - - - /** - * Defines the stdio configuration for the driver service. See - * {@code child_process.spawn} for more information. - * @param {(string|!Array.)} config The - * configuration to use. - * @return {!ServiceBuilder} A self reference. - */ - setStdio(config: string): ServiceBuilder; - setStdio(config: any[]): ServiceBuilder; - - - /** - * Defines the environment to start the server under. This settings will be - * inherited by every browser session started by the server. - * @param {!Object.} env The environment to use. - * @return {!ServiceBuilder} A self reference. - */ - withEnvironment(env: { [key: string]: string }): ServiceBuilder; - - - /** - * Creates a new DriverService using this instance's current configuration. - * @return {remote.DriverService} A new driver service using this instance's - * current configuration. - * @throws {Error} If the driver exectuable was not specified and a default - * could not be found on the current PATH. - */ - build(): any; - } - - /** - * Returns the default ChromeDriver service. If such a service has not been - * configured, one will be constructed using the default configuration for - * a ChromeDriver executable found on the system PATH. - * @return {!remote.DriverService} The default ChromeDriver service. - */ - function getDefaultService(): any; - - /** - * Sets the default service to use for new ChromeDriver instances. - * @param {!remote.DriverService} service The service to use. - * @throws {Error} If the default service is currently running. - */ - function setDefaultService(service: any): void; -} - -declare module 'selenium-webdriver/chrome' { - export = chrome; -} diff --git a/selenium-webdriver/executors-tests.ts b/selenium-webdriver/executors-tests.ts deleted file mode 100644 index a2dd27356..000000000 --- a/selenium-webdriver/executors-tests.ts +++ /dev/null @@ -1,8 +0,0 @@ -/// -/// - -function TestExecutors() { - var exec: webdriver.CommandExecutor = executors.createExecutor("url"); - exec = executors.createExecutor(new webdriver.promise.Promise()); -} - \ No newline at end of file diff --git a/selenium-webdriver/executors.d.ts b/selenium-webdriver/executors.d.ts deleted file mode 100644 index c8fc80d08..000000000 --- a/selenium-webdriver/executors.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -declare module executors { - /** - * Creates a command executor that uses WebDriver's JSON wire protocol. - * @param url The server's URL, or a promise that will resolve to that URL. - * @returns {!webdriver.CommandExecutor} The new command executor. - */ - function createExecutor(url: string): webdriver.CommandExecutor; - function createExecutor(url: webdriver.promise.Promise): webdriver.CommandExecutor; -} - -declare module 'selenium-webdriver/executors' { - export = executors; -} diff --git a/selenium-webdriver/firefox-tests.ts b/selenium-webdriver/firefox-tests.ts deleted file mode 100644 index 5d550c147..000000000 --- a/selenium-webdriver/firefox-tests.ts +++ /dev/null @@ -1,53 +0,0 @@ -/// - -function TestBinary() { - var binary: firefox.Binary = new firefox.Binary(); - binary = new firefox.Binary("exe"); - - binary.addArguments("A", "B", "C"); - var promise: webdriver.promise.Promise = binary.kill(); - binary.launch("profile").then(function (result: any) { }); -} - -function TestFirefoxDriver() { - var driver: firefox.Driver = new firefox.Driver(); - driver = new chrome.Driver(webdriver.Capabilities.firefox()); - driver = new chrome.Driver(webdriver.Capabilities.firefox(), new webdriver.promise.ControlFlow()); - - var baseDriver: webdriver.WebDriver = driver; -} - -function TestFirefoxOptions() { - var options: firefox.Options = new firefox.Options(); - - options = options.setBinary("binary"); - options = options.setBinary(new firefox.Binary()); - options = options.setLoggingPreferences(new webdriver.logging.Preferences()); - options = options.setProfile("profile"); - options = options.setProfile(new firefox.Profile()); - options = options.setProxy({ proxyType: "proxy" }); - var capabilities: webdriver.Capabilities = options.toCapabilities(); - var capabilities: webdriver.Capabilities = options.toCapabilities({}); -} - -function TestFirefoxProfile() { - var profile: firefox.Profile = new firefox.Profile(); - profile = new firefox.Profile("dir"); - - var bool: boolean = profile.acceptUntrustedCerts(); - profile.addExtension("ext"); - bool = profile.assumeUntrustedCertIssuer(); - profile.encode().then(function (prof: string) { }); - var num: number = profile.getPort(); - var anything: any = profile.getPreference("key"); - bool = profile.nativeEventsEnabled(); - profile.setAcceptUntrustedCerts(true); - profile.setAssumeUntrustedCertIssuer(true); - profile.setNativeEventsEnabled(true); - profile.setPort(8080); - profile.setPreference("key", "value"); - profile.setPreference("key", 5); - profile.setPreference("key", true); - var stringPromise: webdriver.promise.Promise = profile.writeToDisk(); - stringPromise = profile.writeToDisk(true); -} diff --git a/selenium-webdriver/firefox.d.ts b/selenium-webdriver/firefox.d.ts deleted file mode 100644 index c7666e6d4..000000000 --- a/selenium-webdriver/firefox.d.ts +++ /dev/null @@ -1,238 +0,0 @@ -declare module firefox { - /** - * Manages a Firefox subprocess configured for use with WebDriver. - */ - class Binary { - /** - * @param {string=} opt_exe Path to the Firefox binary to use. If not - * specified, will attempt to locate Firefox on the current system. - * @constructor - */ - constructor(opt_exe?: string); - - /** - * Add arguments to the command line used to start Firefox. - * @param {...(string|!Array.)} var_args Either the arguments to add as - * varargs, or the arguments as an array. - */ - addArguments(...var_args: string[]): void; - - - /** - * Launches Firefox and eturns a promise that will be fulfilled when the process - * terminates. - * @param {string} profile Path to the profile directory to use. - * @return {!promise.Promise.} A promise for the process result. - * @throws {Error} If this instance has already been started. - */ - launch(profile: string): webdriver.promise.Promise; - - - /** - * Kills the managed Firefox process. - * @return {!promise.Promise} A promise for when the process has terminated. - */ - kill(): webdriver.promise.Promise; - } - - /** - * A WebDriver client for Firefox. - * - * @extends {webdriver.WebDriver} - */ - class Driver extends webdriver.WebDriver { - /** - * @param {(Options|webdriver.Capabilities|Object)=} opt_config The - * configuration options for this driver, specified as either an - * {@link Options} or {@link webdriver.Capabilities}, or as a raw hash - * object. - * @param {webdriver.promise.ControlFlow=} opt_flow The flow to - * schedule commands through. Defaults to the active flow object. - * @constructor - */ - constructor(opt_config?: webdriver.Capabilities, opt_flow?: webdriver.promise.ControlFlow); - constructor(opt_config?: any, opt_flow?: webdriver.promise.ControlFlow); - } - - /** - * Configuration options for the FirefoxDriver. - */ - class Options { - /** - * @constructor - */ - constructor(); - - /** - * Sets the profile to use. The profile may be specified as a - * {@link Profile} object or as the path to an existing Firefox profile to use - * as a template. - * - * @param {(string|!Profile)} profile The profile to use. - * @return {!Options} A self reference. - */ - setProfile(profile: string): Options; - setProfile(profile: Profile): Options; - - - /** - * Sets the binary to use. The binary may be specified as the path to a Firefox - * executable, or as a {@link Binary} object. - * - * @param {(string|!Binary)} binary The binary to use. - * @return {!Options} A self reference. - */ - setBinary(binary: string): Options; - setBinary(binary: Binary): Options; - - - /** - * Sets the logging preferences for the new session. - * @param {webdriver.logging.Preferences} prefs The logging preferences. - * @return {!Options} A self reference. - */ - setLoggingPreferences(prefs: webdriver.logging.Preferences): Options; - - - /** - * Sets the proxy to use. - * - * @param {webdriver.ProxyConfig} proxy The proxy configuration to use. - * @return {!Options} A self reference. - */ - setProxy(proxy: webdriver.ProxyConfig): Options; - - - /** - * Converts these options to a {@link webdriver.Capabilities} instance. - * - * @return {!webdriver.Capabilities} A new capabilities object. - */ - toCapabilities(opt_remote?: any): webdriver.Capabilities; - } - - /** - * Models a Firefox proifle directory for use with the FirefoxDriver. The - * {@code Proifle} directory uses an in-memory model until {@link #writeToDisk} - * is called. - */ - class Profile { - /** - * @param {string=} opt_dir Path to an existing Firefox profile directory to - * use a template for this profile. If not specified, a blank profile will - * be used. - * @constructor - */ - constructor(opt_dir?: string); - - /** - * Registers an extension to be included with this profile. - * @param {string} extension Path to the extension to include, as either an - * unpacked extension directory or the path to a xpi file. - */ - addExtension(extension: string): void; - - - /** - * Sets a desired preference for this profile. - * @param {string} key The preference key. - * @param {(string|number|boolean)} value The preference value. - * @throws {Error} If attempting to set a frozen preference. - */ - setPreference(key: string, value: string): void; - setPreference(key: string, value: number): void; - setPreference(key: string, value: boolean): void; - - - /** - * Returns the currently configured value of a profile preference. This does - * not include any defaults defined in the profile's template directory user.js - * file (if a template were specified on construction). - * @param {string} key The desired preference. - * @return {(string|number|boolean|undefined)} The current value of the - * requested preference. - */ - getPreference(key: string): any; - - - /** - * @return {number} The port this profile is currently configured to use, or - * 0 if the port will be selected at random when the profile is written - * to disk. - */ - getPort(): number; - - - /** - * Sets the port to use for the WebDriver extension loaded by this profile. - * @param {number} port The desired port, or 0 to use any free port. - */ - setPort(port: number): void; - - - /** - * @return {boolean} Whether the FirefoxDriver is configured to automatically - * accept untrusted SSL certificates. - */ - acceptUntrustedCerts(): boolean; - - - /** - * Sets whether the FirefoxDriver should automatically accept untrusted SSL - * certificates. - * @param {boolean} value . - */ - setAcceptUntrustedCerts(value: boolean): void; - - - /** - * Sets whether to assume untrusted certificates come from untrusted issuers. - * @param {boolean} value . - */ - setAssumeUntrustedCertIssuer(value: boolean): void; - - - /** - * @return {boolean} Whether to assume untrusted certs come from untrusted - * issuers. - */ - assumeUntrustedCertIssuer(): boolean; - - - /** - * Sets whether to use native events with this profile. - * @param {boolean} enabled . - */ - setNativeEventsEnabled(enabled: boolean): void; - - - /** - * Returns whether native events are enabled in this profile. - * @return {boolean} . - */ - nativeEventsEnabled(): boolean; - - - /** - * Writes this profile to disk. - * @param {boolean=} opt_excludeWebDriverExt Whether to exclude the WebDriver - * extension from the generated profile. Used to reduce the size of an - * {@link #encode() encoded profile} since the server will always install - * the extension itself. - * @return {!promise.Promise.} A promise for the path to the new - * profile directory. - */ - writeToDisk(opt_excludeWebDriverExt?: boolean): webdriver.promise.Promise; - - - /** - * Encodes this profile as a zipped, base64 encoded directory. - * @return {!promise.Promise.} A promise for the encoded profile. - */ - encode(): webdriver.promise.Promise; - } -} - -declare module 'selenium-webdriver/firefox' { - export = firefox; -} \ No newline at end of file diff --git a/selenium-webdriver/legacy/selenium-webdriver-2.39.0-tests.ts b/selenium-webdriver/legacy/selenium-webdriver-2.39.0-tests.ts deleted file mode 100644 index c1cde5147..000000000 --- a/selenium-webdriver/legacy/selenium-webdriver-2.39.0-tests.ts +++ /dev/null @@ -1,917 +0,0 @@ -/// - -function TestAbstractBuilder() { - var builder: webdriver.AbstractBuilder = new webdriver.AbstractBuilder(); - var driver: webdriver.WebDriver = builder.build(); - var capabilities: webdriver.Capabilities = builder.getCapabilities(); - url = builder.getServerUrl(); - var otherBuilder: webdriver.AbstractBuilder = builder.usingServer(url); - otherBuilder = builder.withCapabilities(webdriver.Capabilities.android()); - var objCapabilities: { [index: string]: string; } = {}; - objCapabilities[webdriver.Capability.BROWSER_NAME] = webdriver.Browser.PHANTOM_JS; - otherBuilder = builder.withCapabilities(objCapabilities); - var url: string = webdriver.AbstractBuilder.DEFAULT_SERVER_URL; - var env: string = webdriver.AbstractBuilder.SERVER_URL_ENV; -} - -function TestBuilder() { - var builder: webdriver.Builder = new webdriver.Builder(); - var abstractBuilder: webdriver.AbstractBuilder = builder; - - var driver: webdriver.WebDriver = builder.build(); - var session: string = builder.getSession(); - abstractBuilder = builder.usingSession("ID"); - - var env: string = webdriver.Builder.SESSION_ID_ENV; -} - -function TestActionSequence() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - var sequence: webdriver.ActionSequence = new webdriver.ActionSequence(driver); - var element: webdriver.WebElement = new webdriver.WebElement(driver, 'id'); - - // Click - sequence = sequence.click(); - sequence = sequence.click(webdriver.Button.LEFT); - sequence = sequence.click(element); - sequence = sequence.click(element, webdriver.Button.LEFT); - - // DoubleClick - sequence = sequence.doubleClick(); - sequence = sequence.doubleClick(webdriver.Button.LEFT); - sequence = sequence.doubleClick(element); - sequence = sequence.doubleClick(element, webdriver.Button.LEFT); - - // DragAndDrop - sequence = sequence.dragAndDrop(element, element); - sequence = sequence.dragAndDrop(element, {x: 1, y: 2}); - - // KeyDown - sequence = sequence.keyDown(webdriver.Key.ADD); - - // KeyUp - sequence = sequence.keyUp(webdriver.Key.ADD); - - // MouseDown - sequence = sequence.mouseDown(); - sequence = sequence.mouseDown(webdriver.Button.LEFT); - sequence = sequence.mouseDown(element); - sequence = sequence.mouseDown(element, webdriver.Button.LEFT); - - // MouseMove - sequence = sequence.mouseMove(element); - sequence = sequence.mouseMove({x: 1, y: 1}); - sequence = sequence.mouseMove(element, {x: 1, y: 2}); - - // MouseUp - sequence = sequence.mouseUp(); - sequence = sequence.mouseUp(webdriver.Button.LEFT); - sequence = sequence.mouseUp(element); - sequence = sequence.mouseUp(element, webdriver.Button.LEFT); - - // SendKeys - sequence = sequence.sendKeys("A", "B", "C"); - sequence = sequence.sendKeys(["A", "B", "C"]); - - var promise: webdriver.promise.Promise = sequence.perform(); -} - -function TestAlert() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - var promise: webdriver.promise.Promise = new webdriver.promise.Promise(); - - var alert: webdriver.Alert = new webdriver.Alert(driver, 'ABC'); - alert = new webdriver.Alert(driver, promise); - var deferred: webdriver.promise.Deferred = alert; - - promise = alert.accept(); - promise = alert.dismiss(); - promise = alert.getText(); - promise = alert.sendKeys("ABC"); -} - -function TestBrowser() { - var browser: string; - - browser = webdriver.Browser.ANDROID; - browser = webdriver.Browser.CHROME; - browser = webdriver.Browser.FIREFOX; - browser = webdriver.Browser.HTMLUNIT; - browser = webdriver.Browser.INTERNET_EXPLORER; - browser = webdriver.Browser.IPAD; - browser = webdriver.Browser.IPHONE; - browser = webdriver.Browser.OPERA; - browser = webdriver.Browser.PHANTOM_JS; - browser = webdriver.Browser.SAFARI; -} - -function TestButton() { - var button: number; - - button = webdriver.Button.LEFT; - button = webdriver.Button.MIDDLE; - button = webdriver.Button.RIGHT; -} - -function TestCapabilities() { - var capabilities: webdriver.Capabilities = new webdriver.Capabilities(); - capabilities = new webdriver.Capabilities(webdriver.Capabilities.chrome()); - var objCapabilities: any = {}; - objCapabilities[webdriver.Capability.BROWSER_NAME] = webdriver.Browser.PHANTOM_JS; - capabilities = new webdriver.Capabilities(objCapabilities); - - var anything: any = capabilities.get(webdriver.Capability.SECURE_SSL); - var check: boolean = capabilities.has(webdriver.Capability.SECURE_SSL); - capabilities = capabilities.merge(capabilities); - capabilities = capabilities.merge(objCapabilities); - capabilities = capabilities.set(webdriver.Capability.VERSION, { abc: 'def' }); - capabilities = capabilities.set(webdriver.Capability.VERSION, null); - - anything = capabilities.toJSON(); - - capabilities = webdriver.Capabilities.android(); - capabilities = webdriver.Capabilities.chrome(); - capabilities = webdriver.Capabilities.firefox(); - capabilities = webdriver.Capabilities.htmlunit(); - capabilities = webdriver.Capabilities.htmlunitwithjs(); - capabilities = webdriver.Capabilities.ie(); - capabilities = webdriver.Capabilities.ipad(); - capabilities = webdriver.Capabilities.iphone(); - capabilities = webdriver.Capabilities.opera(); - capabilities = webdriver.Capabilities.phantomjs(); - capabilities = webdriver.Capabilities.safari(); -} - -function TestCapability() { - var capability: string; - - capability = webdriver.Capability.ACCEPT_SSL_CERTS; - capability = webdriver.Capability.BROWSER_NAME; - capability = webdriver.Capability.HANDLES_ALERTS; - capability = webdriver.Capability.LOGGING_PREFS; - capability = webdriver.Capability.PLATFORM; - capability = webdriver.Capability.PROXY; - capability = webdriver.Capability.ROTATABLE; - capability = webdriver.Capability.SECURE_SSL; - capability = webdriver.Capability.SUPPORTS_APPLICATION_CACHE; - capability = webdriver.Capability.SUPPORTS_BROWSER_CONNECTION; - capability = webdriver.Capability.SUPPORTS_CSS_SELECTORS; - capability = webdriver.Capability.SUPPORTS_JAVASCRIPT; - capability = webdriver.Capability.SUPPORTS_LOCATION_CONTEXT; - capability = webdriver.Capability.TAKES_SCREENSHOT; - capability = webdriver.Capability.UNEXPECTED_ALERT_BEHAVIOR; - capability = webdriver.Capability.VERSION; -} - -function TestCommand() { - var command: webdriver.Command = new webdriver.Command(webdriver.CommandName.ADD_COOKIE); - - var name: string = command.getName(); - var param: any = command.getParameter("param"); - - var params: any = command.getParameters(); - - command = command.setParameter("param", 123); - command = command.setParameters({ param: 123 }); -} - -function TestCommandExecutor() { - var c: webdriver.CommandExecutor = { execute: function(command: webdriver.Command, callback: (error: Error, obj: any) => any) {} }; -} - -function TestCommandName() { - var command: string; - - command = webdriver.CommandName.ACCEPT_ALERT; - command = webdriver.CommandName.ADD_COOKIE; - command = webdriver.CommandName.CLEAR_APP_CACHE; - command = webdriver.CommandName.CLEAR_ELEMENT; - command = webdriver.CommandName.CLEAR_LOCAL_STORAGE; - command = webdriver.CommandName.CLEAR_SESSION_STORAGE; - command = webdriver.CommandName.CLICK; - command = webdriver.CommandName.CLICK_ELEMENT; - command = webdriver.CommandName.CLOSE; - command = webdriver.CommandName.DELETE_ALL_COOKIES; - command = webdriver.CommandName.DELETE_COOKIE; - command = webdriver.CommandName.DESCRIBE_SESSION; - command = webdriver.CommandName.DISMISS_ALERT; - command = webdriver.CommandName.DOUBLE_CLICK; - command = webdriver.CommandName.ELEMENT_EQUALS; - command = webdriver.CommandName.EXECUTE_ASYNC_SCRIPT; - command = webdriver.CommandName.EXECUTE_SCRIPT; - command = webdriver.CommandName.EXECUTE_SQL; - command = webdriver.CommandName.FIND_CHILD_ELEMENT; - command = webdriver.CommandName.FIND_CHILD_ELEMENTS; - command = webdriver.CommandName.FIND_ELEMENT; - command = webdriver.CommandName.FIND_ELEMENTS; - command = webdriver.CommandName.GET; - command = webdriver.CommandName.GET_ACTIVE_ELEMENT; - command = webdriver.CommandName.GET_ALERT_TEXT; - command = webdriver.CommandName.GET_ALL_COOKIES; - command = webdriver.CommandName.GET_APP_CACHE; - command = webdriver.CommandName.GET_APP_CACHE_STATUS; - command = webdriver.CommandName.GET_AVAILABLE_LOG_TYPES; - command = webdriver.CommandName.GET_COOKIE; - command = webdriver.CommandName.GET_CURRENT_URL; - command = webdriver.CommandName.GET_CURRENT_WINDOW_HANDLE; - command = webdriver.CommandName.GET_ELEMENT_ATTRIBUTE; - command = webdriver.CommandName.GET_ELEMENT_LOCATION; - command = webdriver.CommandName.GET_ELEMENT_LOCATION_IN_VIEW; - command = webdriver.CommandName.GET_ELEMENT_SIZE; - command = webdriver.CommandName.GET_ELEMENT_TAG_NAME; - command = webdriver.CommandName.GET_ELEMENT_TEXT; - command = webdriver.CommandName.GET_ELEMENT_VALUE_OF_CSS_PROPERTY; - command = webdriver.CommandName.GET_LOCAL_STORAGE_ITEM; - command = webdriver.CommandName.GET_LOCAL_STORAGE_KEYS; - command = webdriver.CommandName.GET_LOCAL_STORAGE_SIZE; - command = webdriver.CommandName.GET_LOCATION; - command = webdriver.CommandName.GET_LOG; - command = webdriver.CommandName.GET_PAGE_SOURCE; - command = webdriver.CommandName.GET_SCREEN_ORIENTATION; - command = webdriver.CommandName.GET_SERVER_STATUS; - command = webdriver.CommandName.GET_SESSION_LOGS; - command = webdriver.CommandName.GET_SESSION_STORAGE_ITEM; - command = webdriver.CommandName.GET_SESSION_STORAGE_KEYS; - command = webdriver.CommandName.GET_SESSION_STORAGE_SIZE; - command = webdriver.CommandName.GET_SESSIONS; - command = webdriver.CommandName.GET_TITLE; - command = webdriver.CommandName.GET_WINDOW_HANDLES; - command = webdriver.CommandName.GET_WINDOW_POSITION; - command = webdriver.CommandName.GET_WINDOW_SIZE; - command = webdriver.CommandName.GO_BACK; - command = webdriver.CommandName.GO_FORWARD; - command = webdriver.CommandName.IMPLICITLY_WAIT; - command = webdriver.CommandName.IS_BROWSER_ONLINE; - command = webdriver.CommandName.IS_ELEMENT_DISPLAYED; - command = webdriver.CommandName.IS_ELEMENT_ENABLED; - command = webdriver.CommandName.IS_ELEMENT_SELECTED; - command = webdriver.CommandName.MAXIMIZE_WINDOW; - command = webdriver.CommandName.MOUSE_DOWN; - command = webdriver.CommandName.MOUSE_UP; - command = webdriver.CommandName.MOVE_TO; - command = webdriver.CommandName.NEW_SESSION; - command = webdriver.CommandName.QUIT; - command = webdriver.CommandName.REFRESH; - command = webdriver.CommandName.REMOVE_LOCAL_STORAGE_ITEM; - command = webdriver.CommandName.REMOVE_SESSION_STORAGE_ITEM; - command = webdriver.CommandName.SCREENSHOT; - command = webdriver.CommandName.SEND_KEYS_TO_ACTIVE_ELEMENT; - command = webdriver.CommandName.SEND_KEYS_TO_ELEMENT; - command = webdriver.CommandName.SET_ALERT_TEXT; - command = webdriver.CommandName.SET_BROWSER_ONLINE; - command = webdriver.CommandName.SET_LOCAL_STORAGE_ITEM; - command = webdriver.CommandName.SET_LOCATION; - command = webdriver.CommandName.SET_SCREEN_ORIENTATION; - command = webdriver.CommandName.SET_SCRIPT_TIMEOUT; - command = webdriver.CommandName.SET_SESSION_STORAGE_ITEM; - command = webdriver.CommandName.SET_TIMEOUT; - command = webdriver.CommandName.SET_WINDOW_POSITION; - command = webdriver.CommandName.SET_WINDOW_SIZE; - command = webdriver.CommandName.SUBMIT_ELEMENT; - command = webdriver.CommandName.SWITCH_TO_FRAME; - command = webdriver.CommandName.SWITCH_TO_WINDOW; - command = webdriver.CommandName.TOUCH_DOUBLE_TAP; - command = webdriver.CommandName.TOUCH_DOWN; - command = webdriver.CommandName.TOUCH_FLICK; - command = webdriver.CommandName.TOUCH_LONG_PRESS; - command = webdriver.CommandName.TOUCH_MOVE; - command = webdriver.CommandName.TOUCH_SCROLL; - command = webdriver.CommandName.TOUCH_SINGLE_TAP; - command = webdriver.CommandName.TOUCH_UP; -} - -function TestEventEmitter() { - var emitter: webdriver.EventEmitter = new webdriver.EventEmitter(); - - var callback = function (a: number, b: number, c: number) {}; - - emitter = emitter.addListener('ABC', callback); - - emitter.emit('ABC', 1, 2, 3); - - var listeners = emitter.listeners('ABC'); - var length: number = listeners.length; - var listenerInfo = listeners[0]; - if (listenerInfo.oneshot) { - listenerInfo.fn.apply(listenerInfo.scope, [1, 2, 3]); - } - - emitter = emitter.on('ABC', callback); - - emitter = emitter.once('ABC', callback); - - emitter = emitter.removeListener('ABC', callback); - - emitter.removeAllListeners('ABC'); - emitter.removeAllListeners(); -} - -function TestFirefoxDomExecutor() { - if (webdriver.FirefoxDomExecutor.isAvailable()) { - var executor: webdriver.CommandExecutor = new webdriver.FirefoxDomExecutor(); - var callback = function(error: Error, responseObject: any) {}; - executor.execute(new webdriver.Command(webdriver.CommandName.CLICK), callback); - } -} - -function TestKey() { - var key: string; - - key = webdriver.Key.ADD; - key = webdriver.Key.ALT; - key = webdriver.Key.ARROW_DOWN; - key = webdriver.Key.ARROW_LEFT; - key = webdriver.Key.ARROW_RIGHT; - key = webdriver.Key.ARROW_UP; - key = webdriver.Key.BACK_SPACE; - key = webdriver.Key.CANCEL; - key = webdriver.Key.CLEAR; - key = webdriver.Key.COMMAND; - key = webdriver.Key.CONTROL; - key = webdriver.Key.DECIMAL; - key = webdriver.Key.DELETE; - key = webdriver.Key.DIVIDE; - key = webdriver.Key.DOWN; - key = webdriver.Key.END; - key = webdriver.Key.ENTER; - key = webdriver.Key.EQUALS; - key = webdriver.Key.ESCAPE; - key = webdriver.Key.F1; - key = webdriver.Key.F2; - key = webdriver.Key.F3; - key = webdriver.Key.F4; - key = webdriver.Key.F5; - key = webdriver.Key.F6; - key = webdriver.Key.F7; - key = webdriver.Key.F8; - key = webdriver.Key.F9; - key = webdriver.Key.F10; - key = webdriver.Key.F11; - key = webdriver.Key.F12; - key = webdriver.Key.HELP; - key = webdriver.Key.HOME; - key = webdriver.Key.INSERT; - key = webdriver.Key.LEFT; - key = webdriver.Key.META; - key = webdriver.Key.MULTIPLY; - key = webdriver.Key.NULL; - key = webdriver.Key.NUMPAD0; - key = webdriver.Key.NUMPAD1; - key = webdriver.Key.NUMPAD2; - key = webdriver.Key.NUMPAD3; - key = webdriver.Key.NUMPAD4; - key = webdriver.Key.NUMPAD5; - key = webdriver.Key.NUMPAD6; - key = webdriver.Key.NUMPAD7; - key = webdriver.Key.NUMPAD8; - key = webdriver.Key.NUMPAD9; - key = webdriver.Key.PAGE_DOWN; - key = webdriver.Key.PAGE_UP; - key = webdriver.Key.PAUSE; - key = webdriver.Key.RETURN; - key = webdriver.Key.RIGHT; - key = webdriver.Key.SEMICOLON; - key = webdriver.Key.SEPARATOR; - key = webdriver.Key.SHIFT; - key = webdriver.Key.SPACE; - key = webdriver.Key.SUBTRACT; - key = webdriver.Key.TAB; - key = webdriver.Key.UP; - - key = webdriver.Key.chord(webdriver.Key.NUMPAD0, webdriver.Key.NUMPAD1); -} - -function TestLocator() { - var locator: webdriver.Locator = new webdriver.Locator('id', 'ABC'); - - var locatorStr: string = locator.toString(); - - var using: string = locator.using; - var value: string = locator.value; - - locator = webdriver.Locator.checkLocator(webdriver.Locator.Strategy.id('ABC')); - locator = webdriver.Locator.checkLocator({id: 'ABC'}); - - locator = webdriver.Locator.createFromObj({id: 'ABC'}); - - locator = webdriver.Locator.Strategy.id('ABC'); - - locator = webdriver.By.id('ABC'); -} - -function TestSession() { - var session: webdriver.Session = new webdriver.Session('ABC', webdriver.Capabilities.android()); - var capabilitiesObj: any = {}; - capabilitiesObj[webdriver.Capability.BROWSER_NAME] = webdriver.Browser.ANDROID; - capabilitiesObj[webdriver.Capability.PLATFORM] = 'ANDROID'; - session = new webdriver.Session('ABC', capabilitiesObj); - - var capabilities: webdriver.Capabilities = session.getCapabilities(); - var capability: any = session.getCapability(webdriver.Capability.BROWSER_NAME); - var id: string = session.getId(); - var data: string = session.toJSON(); -} - -function TestUnhandledAlertError() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - var promise: webdriver.promise.Promise = new webdriver.promise.Promise(); - - var alert: webdriver.Alert = new webdriver.Alert(driver, 'ABC'); - var error = new webdriver.UnhandledAlertError('An error', alert); - var baseError: webdriver.error.Error = error; - - alert = error.getAlert(); -} - -function TestWebDriverLogs() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - var logs: webdriver.WebDriverLogs = webdriver.WebDriver.Logs; - var promise: webdriver.promise.Promise; - - promise = logs.get(webdriver.logging.Type.BROWSER); - promise = logs.getAvailableLogTypes(); -} - -function TestWebDriverNavigation() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - var navigation: webdriver.WebDriverNavigation = webdriver.WebDriver.Navigation; - var promise: webdriver.promise.Promise; - - promise = navigation.back(); - promise = navigation.forward(); - promise = navigation.refresh(); - promise = navigation.to('http://google.com'); -} - -function TestWebDriverOptions() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - var options: webdriver.WebDriverOptions = webdriver.WebDriver.Options; - var promise: webdriver.promise.Promise; - - // Add Cookie - promise = options.addCookie('name', 'value'); - promise = options.addCookie('name', 'value', 'path'); - promise = options.addCookie('name', 'value', 'path', 'domain'); - promise = options.addCookie('name', 'value', 'path', 'domain', true); - promise = options.addCookie('name', 'value', 'path', 'domain', true, 123); - promise = options.addCookie('name', 'value', 'path', 'domain', true, Date.now()); - - promise = options.deleteAllCookies(); - promise = options.deleteCookie('name'); - promise = options.getCookie('name'); - promise = options.getCookies(); - - var logs: webdriver.WebDriverLogs = options.logs(); - var timeouts: webdriver.WebDriverTimeouts = options.timeouts(); - var window: webdriver.WebDriverWindow = options.window(); -} - -function TestWebDriverTargetLocator() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - var locator: webdriver.WebDriverTargetLocator = webdriver.WebDriver.TargetLocator; - var promise: webdriver.promise.Promise; - - var element: webdriver.WebElement = locator.activeElement(); - var alert: webdriver.Alert = locator.alert(); - promise = locator.defaultContent(); - promise = locator.frame('name'); - promise = locator.frame(1); - promise = locator.window('nameOrHandle'); -} - -function TestWebDriverTimeouts() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - var timeouts: webdriver.WebDriverTimeouts = webdriver.WebDriver.Timeouts; - var promise: webdriver.promise.Promise; - - promise = timeouts.implicitlyWait(123); - promise = timeouts.pageLoadTimeout(123); - promise = timeouts.setScriptTimeout(123); -} - -function TestWebDriverWindow() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - var window: webdriver.WebDriverWindow = webdriver.WebDriver.Window; - var promise: webdriver.promise.Promise; - - promise = window.getPosition(); - promise = window.getSize(); - promise = window.maximize(); - promise = window.setPosition(12, 34); - promise = window.setSize(12, 34); -} - -function TestWebDriver() { - var session: webdriver.Session = new webdriver.Session('ABC', webdriver.Capabilities.android()); - var promise: webdriver.promise.Promise = new webdriver.promise.Promise(); - var executor: webdriver.CommandExecutor = new webdriver.FirefoxDomExecutor(); - var flow: webdriver.promise.ControlFlow = new webdriver.promise.ControlFlow(); - var driver: webdriver.WebDriver = new webdriver.WebDriver(session, executor); - driver = new webdriver.WebDriver(session, executor, flow); - driver = new webdriver.WebDriver(promise, executor); - driver = new webdriver.WebDriver(promise, executor, flow); - - // Call - var actions: webdriver.ActionSequence = driver.actions(); - promise = driver.call(function(){}); - promise = driver.call(function(){ var d: any = this;}, driver); - promise = driver.call(function(a: number){}, driver, 1); - - promise = driver.close(); - flow = driver.controlFlow(); - - // ExecuteAsyncScript - promise = driver.executeAsyncScript('function(){}'); - promise = driver.executeAsyncScript('function(){}', 1, 2, 3); - promise = driver.executeAsyncScript(function(){}); - promise = driver.executeAsyncScript(function(a: number){}, 1); - - // ExecuteScript - promise = driver.executeScript('function(){}'); - promise = driver.executeScript('function(){}', 1, 2, 3); - promise = driver.executeScript(function(){}); - promise = driver.executeScript(function(a: number){}, 1); - - var element: webdriver.WebElement; - element = driver.findElement(webdriver.By.id('ABC')); - element = driver.findElement({id: 'ABC'}); - element = driver.findElement(webdriver.By.js('function(){}'), 1, 2, 3); - element = driver.findElement({js: 'function(){}'}, 1, 2, 3); - - promise = driver.findElements(webdriver.By.className('ABC')); - promise = driver.findElements({className: 'ABC'}); - promise = driver.findElements(webdriver.By.js('function(){}'), 1, 2, 3); - promise = driver.findElements({js: 'function(){}'}, 1, 2, 3); - - promise = driver.get('http://www.google.com'); - promise = driver.getAllWindowHandles(); - promise = driver.getCapabilities(); - promise = driver.getCurrentUrl(); - promise = driver.getPageSource() - promise = driver.getSession(); - promise = driver.getTitle(); - promise = driver.getWindowHandle(); - - promise = driver.isElementPresent(webdriver.By.className('ABC')); - promise = driver.isElementPresent({className: 'ABC'}); - promise = driver.isElementPresent(webdriver.By.js('function(){}'), 1, 2, 3); - promise = driver.isElementPresent({js: 'function(){}'}, 1, 2, 3); - - var options: webdriver.WebDriverOptions = driver.manage(); - var navigation: webdriver.WebDriverNavigation = driver.navigate(); - var locator: webdriver.WebDriverTargetLocator = driver.switchTo(); - - promise = driver.quit(); - promise = driver.schedule(new webdriver.Command(webdriver.CommandName.CLICK), 'ABC'); - promise = driver.sleep(123); - promise = driver.takeScreenshot(); - - promise = driver.wait(function() { return true; }, 123); - promise = driver.wait(function() { return true; }, 123, 'Message'); - promise = driver.wait(function() { return promise; }, 123); - promise = driver.wait(function() { return promise; }, 123, 'Message'); - - driver = webdriver.WebDriver.attachToSession(executor, 'ABC'); - driver = webdriver.WebDriver.createSession(executor, webdriver.Capabilities.android()); -} - -function TestWebElement() { - var driver: webdriver.WebDriver = new webdriver.Builder(). - withCapabilities(webdriver.Capabilities.chrome()). - build(); - - var element: webdriver.WebElement; - var promise: webdriver.promise.Promise = new webdriver.promise.Promise(); - - element = new webdriver.WebElement(driver, 'ID'); - element = new webdriver.WebElement(driver, promise); - - var deferred: webdriver.promise.Deferred = element; - - promise = element.clear(); - promise = element.click(); - - element = element.findElement(webdriver.By.id('ABC')); - element = element.findElement({id: 'ABC'}); - element = element.findElement(webdriver.By.js('function(){}'), 1, 2, 3); - element = element.findElement({js: 'function(){}'}, 1, 2, 3); - - promise = element.findElements(webdriver.By.className('ABC')); - promise = element.findElements({className: 'ABC'}); - promise = element.findElements(webdriver.By.js('function(){}'), 1, 2, 3); - promise = element.findElements({js: 'function(){}'}, 1, 2, 3); - - promise = element.isElementPresent(webdriver.By.className('ABC')); - promise = element.isElementPresent({className: 'ABC'}); - promise = element.isElementPresent(webdriver.By.js('function(){}'), 1, 2, 3); - promise = element.isElementPresent({js: 'function(){}'}, 1, 2, 3); - - promise = element.getAttribute('class'); - promise = element.getCssValue('display'); - driver = element.getDriver(); - promise = element.getInnerHtml(); - promise = element.getLocation(); - promise = element.getOuterHtml(); - promise = element.getSize(); - promise = element.getTagName(); - promise = element.getText(); - promise = element.isDisplayed(); - promise = element.isEnabled(); - promise = element.isSelected(); - promise = element.sendKeys('A', 'B', 'C'); - promise = element.submit(); - promise = element.toWireValue(); - - promise = webdriver.WebElement.equals(element, new webdriver.WebElement(driver, 'ID2')); - - var key: string = webdriver.WebElement.ELEMENT_KEY; -} - -function TestLogging() { - webdriver.logging.Preferences['name'] = 'ABC'; - var level: webdriver.logging.Level = webdriver.logging.getLevel('OFF'); - level = webdriver.logging.getLevel(1); - - level = webdriver.logging.Level.ALL; - level = webdriver.logging.Level.DEBUG; - level = webdriver.logging.Level.INFO; - level = webdriver.logging.Level.OFF; - level = webdriver.logging.Level.SEVERE; - level = webdriver.logging.Level.WARNING; - - var name: string = level.name; - var value: number = level.value; - - name = webdriver.logging.LevelName.ALL; - name = webdriver.logging.LevelName.DEBUG; - name = webdriver.logging.LevelName.INFO; - name = webdriver.logging.LevelName.OFF; - name = webdriver.logging.LevelName.SEVERE; - name = webdriver.logging.LevelName.WARNING; - - var type: string; - type = webdriver.logging.Type.BROWSER; - type = webdriver.logging.Type.CLIENT; - type = webdriver.logging.Type.DRIVER; - type = webdriver.logging.Type.PERFORMANCE; - type = webdriver.logging.Type.SERVER; -} - -function TestLoggingEntry() { - var entry: webdriver.logging.Entry; - - entry = new webdriver.logging.Entry(webdriver.logging.Level.ALL, 'ABC'); - entry = new webdriver.logging.Entry('ALL', 'ABC'); - entry = new webdriver.logging.Entry(webdriver.logging.Level.ALL, 'ABC', 123); - entry = new webdriver.logging.Entry('ALL', 'ABC', 123); - entry = new webdriver.logging.Entry(webdriver.logging.Level.ALL, 'ABC', 123, webdriver.logging.Type.BROWSER); - entry = new webdriver.logging.Entry('ALL', 'ABC', 123, webdriver.logging.Type.BROWSER); - - var entryObj: any = entry.toJSON(); - - var message: string = entry.message; - var timestamp: number = entry.timestamp; - var type: string = entry.type; - - entry = webdriver.logging.Entry.fromClosureLogRecord({}); - entry = webdriver.logging.Entry.fromClosureLogRecord({}, webdriver.logging.Type.DRIVER); -} - -function TestProcess() { - var isNative: boolean = webdriver.process.isNative(); - var value: string; - - value = webdriver.process.getEnv('name'); - value = webdriver.process.getEnv('name', 'default'); - - webdriver.process.setEnv('name', 'value'); - webdriver.process.setEnv('name', 123); -} - -function TestPromise() { - var promise: webdriver.promise.Promise = new webdriver.promise.Promise(); - - webdriver.promise.asap(promise, function(value: any){ return true; }); - webdriver.promise.asap(promise, function(value: any){}, function(err: any) { return 'ABC'; }); - - promise = webdriver.promise.checkedNodeCall(function(err: any, value: any) { return 123; }); - - var flow: webdriver.promise.ControlFlow = webdriver.promise.controlFlow(); - - promise = webdriver.promise.createFlow(function(newFlow: webdriver.promise.ControlFlow) { }); - - var deferred: webdriver.promise.Deferred; - deferred = webdriver.promise.defer(function() {}); - deferred = webdriver.promise.defer(function(reason?: any) {}); - - promise = webdriver.promise.delayed(123); - - promise = webdriver.promise.fulfilled(); - promise = webdriver.promise.fulfilled({a: 123}); - - promise = webdriver.promise.fullyResolved({a: 123}); - - var isPromise: boolean = webdriver.promise.isPromise('ABC'); - - promise = webdriver.promise.rejected({a: 123}); - - webdriver.promise.setDefaultFlow(new webdriver.promise.ControlFlow()); - - promise = webdriver.promise.when(promise, function(value: any) { return 123; }, function(err: Error) { return 123; }); -} - -function TestControlFlow() { - var flow: webdriver.promise.ControlFlow; - flow = new webdriver.promise.ControlFlow(); - flow = new webdriver.promise.ControlFlow({clearInterval: function(a: number) {}, - clearTimeout: function(a: number) {}, - setInterval: function(a: () => void, b: number) { return 2; }, - setTimeout: function(a: () => void, b: number) { return 2; }}); - - var emitter: webdriver.EventEmitter = flow; - - var eventType: string; - - eventType = webdriver.promise.ControlFlow.EventType.IDLE; - eventType = webdriver.promise.ControlFlow.EventType.SCHEDULE_TASK; - eventType = webdriver.promise.ControlFlow.EventType.UNCAUGHT_EXCEPTION; - - var e: any = flow.annotateError(new Error('Error')); - - var promise: webdriver.promise.Promise; - - promise = flow.await(promise); - - flow.clearHistory(); - - promise = flow.execute(function() { return promise; }); - promise = flow.execute(function() { return promise; }, 'Description'); - - var history: string[] = flow.getHistory(); - - var schedule: string = flow.getSchedule(); - - flow.reset(); - - promise = flow.timeout(123); - promise = flow.timeout(123, 'Description'); - - promise = flow.wait(function() { return true; }, 123); - promise = flow.wait(function() { return true; }, 123, 'Timeout Message'); - promise = flow.wait(function() { return promise; }, 123, 'Timeout Message'); - - var timer: webdriver.promise.IControlFlowTimer = flow.timer; - - timer = webdriver.promise.ControlFlow.defaultTimer; - var loopFrequency: number = webdriver.promise.ControlFlow.EVENT_LOOP_FREQUENCY; -} - -function TestDeferred() { - var deferred: webdriver.promise.Deferred; - - deferred = new webdriver.promise.Deferred(); - deferred = new webdriver.promise.Deferred(function() {}); - deferred = new webdriver.promise.Deferred(function(reason: any) { }); - deferred = new webdriver.promise.Deferred(function() {}, new webdriver.promise.ControlFlow()); - - var promise: webdriver.promise.Promise = deferred; - - deferred.errback(new Error('Error')); - deferred.errback('Error'); - deferred.fulfill(123); - deferred.reject(new Error('Error')); - deferred.reject('Error'); - deferred.removeAll(); - - promise = deferred.promise; -} - -function TestPromiseClass() { - var promise: webdriver.promise.Promise = new webdriver.promise.Promise(); - - var obj = { - a: 5 - } - - promise = promise.addBoth(function( a: any ) { }); - promise = promise.addBoth(function( a: any ) { return 123; }); - promise = promise.addBoth(function( a: any ) { }, obj); - - promise = promise.addCallback(function( a: any ) { }); - promise = promise.addCallback(function( a: any ) { return 123; }); - promise = promise.addCallback(function( a: any ) { }, obj); - - promise = promise.addErrback(function( e: any ) { }); - promise = promise.addErrback(function( e: any ) { return 123; }); - promise = promise.addErrback(function( e: any ) { }, obj); - - promise.cancel(obj); - - var isPending: boolean = promise.isPending(); - - promise = promise.then(); - promise = promise.then(function( a: any ) { }); - promise = promise.then(function( a: any ) { return 123; }); - promise = promise.then(function( a: any ) {}, function( e: any) {}); - promise = promise.then(function( a: any ) {}, function( e: any) { return 123; }); -} - -function TestErrorCode() { - var errorCode: number; - - errorCode = webdriver.error.ErrorCode.ELEMENT_NOT_SELECTABLE; - errorCode = webdriver.error.ErrorCode.ELEMENT_NOT_VISIBLE; - errorCode = webdriver.error.ErrorCode.IME_ENGINE_ACTIVATION_FAILED; - errorCode = webdriver.error.ErrorCode.IME_NOT_AVAILABLE; - errorCode = webdriver.error.ErrorCode.INVALID_COOKIE_DOMAIN; - errorCode = webdriver.error.ErrorCode.INVALID_ELEMENT_COORDINATES; - errorCode = webdriver.error.ErrorCode.INVALID_ELEMENT_STATE; - errorCode = webdriver.error.ErrorCode.INVALID_SELECTOR_ERROR; - errorCode = webdriver.error.ErrorCode.INVALID_XPATH_SELECTOR; - errorCode = webdriver.error.ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPE; - errorCode = webdriver.error.ErrorCode.JAVASCRIPT_ERROR; - errorCode = webdriver.error.ErrorCode.METHOD_NOT_ALLOWED; - errorCode = webdriver.error.ErrorCode.MODAL_DIALOG_OPENED; - errorCode = webdriver.error.ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS; - errorCode = webdriver.error.ErrorCode.NO_MODAL_DIALOG_OPEN; - errorCode = webdriver.error.ErrorCode.NO_SUCH_ELEMENT; - errorCode = webdriver.error.ErrorCode.NO_SUCH_FRAME; - errorCode = webdriver.error.ErrorCode.NO_SUCH_WINDOW; - errorCode = webdriver.error.ErrorCode.SCRIPT_TIMEOUT; - errorCode = webdriver.error.ErrorCode.SESSION_NOT_CREATED; - errorCode = webdriver.error.ErrorCode.SQL_DATABASE_ERROR; - errorCode = webdriver.error.ErrorCode.STALE_ELEMENT_REFERENCE; - errorCode = webdriver.error.ErrorCode.SUCCESS; - errorCode = webdriver.error.ErrorCode.TIMEOUT; - errorCode = webdriver.error.ErrorCode.UNABLE_TO_SET_COOKIE; - errorCode = webdriver.error.ErrorCode.UNKNOWN_COMMAND; - errorCode = webdriver.error.ErrorCode.UNKNOWN_ERROR; - errorCode = webdriver.error.ErrorCode.UNSUPPORTED_OPERATION; - errorCode = webdriver.error.ErrorCode.XPATH_LOOKUP_ERROR; -} - -function TestError() { - var error: webdriver.error.Error; - - error = new webdriver.error.Error(webdriver.error.ErrorCode.ELEMENT_NOT_SELECTABLE); - error = new webdriver.error.Error(webdriver.error.ErrorCode.ELEMENT_NOT_SELECTABLE, 'Message'); - - var code: number = error.code; - var state: string = error.state; - var message: string = error.message; - var name: string = error.name; - var stack: string = error.stack; - var isAutomationError: boolean = error.isAutomationError; - var errorStr: string = error.toString(); - - state = webdriver.error.Error.State.ELEMENT_NOT_SELECTABLE - state = webdriver.error.Error.State.ELEMENT_NOT_VISIBLE; - state = webdriver.error.Error.State.IME_ENGINE_ACTIVATION_FAILED; - state = webdriver.error.Error.State.IME_NOT_AVAILABLE; - state = webdriver.error.Error.State.INVALID_COOKIE_DOMAIN; - state = webdriver.error.Error.State.INVALID_ELEMENT_COORDINATES; - state = webdriver.error.Error.State.INVALID_ELEMENT_STATE; - state = webdriver.error.Error.State.INVALID_SELECTOR; - state = webdriver.error.Error.State.JAVASCRIPT_ERROR; - state = webdriver.error.Error.State.MOVE_TARGET_OUT_OF_BOUNDS; - state = webdriver.error.Error.State.NO_SUCH_ALERT; - state = webdriver.error.Error.State.NO_SUCH_DOM - state = webdriver.error.Error.State.NO_SUCH_ELEMENT; - state = webdriver.error.Error.State.NO_SUCH_FRAME; - state = webdriver.error.Error.State.NO_SUCH_WINDOW; - state = webdriver.error.Error.State.SCRIPT_TIMEOUT; - state = webdriver.error.Error.State.SESSION_NOT_CREATED; - state = webdriver.error.Error.State.STALE_ELEMENT_REFERENCE; - state = webdriver.error.Error.State.SUCCESS; - state = webdriver.error.Error.State.TIMEOUT; - state = webdriver.error.Error.State.UNABLE_TO_SET_COOKIE; - state = webdriver.error.Error.State.UNEXPECTED_ALERT_OPEN - state = webdriver.error.Error.State.UNKNOWN_COMMAND; - state = webdriver.error.Error.State.UNKNOWN_ERROR; - state = webdriver.error.Error.State.UNSUPPORTED_OPERATION; -} \ No newline at end of file diff --git a/selenium-webdriver/legacy/selenium-webdriver-2.39.0.d.ts b/selenium-webdriver/legacy/selenium-webdriver-2.39.0.d.ts deleted file mode 100644 index a4d1017aa..000000000 --- a/selenium-webdriver/legacy/selenium-webdriver-2.39.0.d.ts +++ /dev/null @@ -1,3225 +0,0 @@ -// Type definitions for Selenium WebDriverJS 2.39.0 -// Project: https://code.google.com/p/selenium/ -// Definitions by: Bill Armstrong -// Definitions: https://github.com/borisyankov/DefinitelyTyped - -declare module webdriver { - - module logging { - - /** - * A hash describing log preferences. - * @typedef {Object.} - */ - var Preferences: any; - - /** - * Log level names from WebDriver's JSON wire protocol. - * @enum {string} - */ - class LevelName { - static ALL: string; - static DEBUG: string; - static INFO: string; - static WARNING: string; - static SEVERE: string; - static OFF: string; - } - - /** - * Common log types. - * @enum {string} - */ - class Type { - /** Logs originating from the browser. */ - static BROWSER: string; - /** Logs from a WebDriver client. */ - static CLIENT: string; - /** Logs from a WebDriver implementation. */ - static DRIVER: string; - /** Logs related to performance. */ - static PERFORMANCE: string; - /** Logs from the remote server. */ - static SERVER: string; - } - - /** - * Logging levels. - * @enum {{value: number, name: webdriver.logging.LevelName}} - */ - class Level { - //region Static Properties - - static ALL: Level; - static DEBUG: Level; - static INFO: Level; - static WARNING: Level; - static SEVERE: Level; - static OFF: Level; - - //endregion - - //region Properties - - value: number; - name: string; - - //endregion - } - - /** - * Converts a level name or value to a {@link webdriver.logging.Level} value. - * If the name/value is not recognized, {@link webdriver.logging.Level.ALL} - * will be returned. - * @param {(number|string)} nameOrValue The log level name, or value, to - * convert . - * @return {!webdriver.logging.Level} The converted level. - */ - function getLevel(nameOrValue: string): webdriver.logging.Level; - function getLevel(nameOrValue: number): webdriver.logging.Level; - - /** - * A single log entry. - */ - class Entry { - - //region Constructors - - /** - * @param {(!webdriver.logging.Level|string)} level The entry level. - * @param {string} message The log message. - * @param {number=} opt_timestamp The time this entry was generated, in - * milliseconds since 0:00:00, January 1, 1970 UTC. If omitted, the - * current time will be used. - * @param {string=} opt_type The log type, if known. - * @constructor - */ - constructor(level: webdriver.logging.Level, message: string, opt_timestamp?:number, opt_type?:string); - constructor(level: string, message: string, opt_timestamp?:number, opt_type?:string); - - //endregion - - //region Public Properties - - /** @type {!webdriver.logging.Level} */ - level: webdriver.logging.Level; - - /** @type {string} */ - message: string; - - /** @type {number} */ - timestamp: number; - - /** @type {string} */ - type: string; - - //endregion - - //region Static Methods - - /** - * Converts a {@link goog.debug.LogRecord} into a - * {@link webdriver.logging.Entry}. - * @param {!goog.debug.LogRecord} logRecord The record to convert. - * @param {string=} opt_type The log type. - * @return {!webdriver.logging.Entry} The converted entry. - */ - static fromClosureLogRecord(logRecord: any, opt_type?:string): webdriver.logging.Entry; - - //endregion - - //region Methods - - /** - * @return {{level: string, message: string, timestamp: number, - * type: string}} The JSON representation of this entry. - */ - toJSON(): webdriver.logging.Level; - - //endregion - } - } - - module promise { - - //region Functions - - /** - * @return {!webdriver.promise.ControlFlow} The currently active control flow. - */ - function controlFlow(): webdriver.promise.ControlFlow; - - /** - * Creates a new control flow. The provided callback will be invoked as the - * first task within the new flow, with the flow as its sole argument. Returns - * a promise that resolves to the callback result. - * @param {function(!webdriver.promise.ControlFlow)} callback The entry point - * to the newly created flow. - * @return {!webdriver.promise.Promise} A promise that resolves to the callback - * result. - */ - function createFlow(callback: (flow: webdriver.promise.ControlFlow) => any): webdriver.promise.Promise; - - /** - * Determines whether a {@code value} should be treated as a promise. - * Any object whose "then" property is a function will be considered a promise. - * - * @param {*} value The value to test. - * @return {boolean} Whether the value is a promise. - */ - function isPromise(value: any): boolean; - - /** - * Creates a promise that will be resolved at a set time in the future. - * @param {number} ms The amount of time, in milliseconds, to wait before - * resolving the promise. - * @return {!webdriver.promise.Promise} The promise. - */ - function delayed(ms: number): webdriver.promise.Promise; - - /** - * Creates a new deferred object. - * @param {Function=} opt_canceller Function to call when cancelling the - * computation of this instance's value. - * @return {!webdriver.promise.Deferred} The new deferred object. - */ - function defer(opt_canceller?: any): webdriver.promise.Deferred; - - /** - * Creates a promise that has been resolved with the given value. - * @param {*=} opt_value The resolved value. - * @return {!webdriver.promise.Promise} The resolved promise. - */ - function fulfilled(opt_value?: any): webdriver.promise.Promise; - - /** - * Creates a promise that has been rejected with the given reason. - * @param {*=} opt_reason The rejection reason; may be any value, but is - * usually an Error or a string. - * @return {!webdriver.promise.Promise} The rejected promise. - */ - function rejected(opt_reason?: any): webdriver.promise.Promise; - - /** - * Wraps a function that is assumed to be a node-style callback as its final - * argument. This callback takes two arguments: an error value (which will be - * null if the call succeeded), and the success value as the second argument. - * If the call fails, the returned promise will be rejected, otherwise it will - * be resolved with the result. - * @param {!Function} fn The function to wrap. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * result of the provided function's callback. - */ - function checkedNodeCall(fn: (error: any, value: any) => any): webdriver.promise.Promise; - - /** - * Registers an observer on a promised {@code value}, returning a new promise - * that will be resolved when the value is. If {@code value} is not a promise, - * then the return promise will be immediately resolved. - * @param {*} value The value to observe. - * @param {Function=} opt_callback The function to call when the value is - * resolved successfully. - * @param {Function=} opt_errback The function to call when the value is - * rejected. - * @return {!webdriver.promise.Promise} A new promise. - */ - function when(value: any, opt_callback?: (value: any) => any, opt_errback?: (error: any) => any): webdriver.promise.Promise; - - /** - * Invokes the appropriate callback function as soon as a promised - * {@code value} is resolved. This function is similar to - * {@code webdriver.promise.when}, except it does not return a new promise. - * @param {*} value The value to observe. - * @param {Function} callback The function to call when the value is - * resolved successfully. - * @param {Function=} opt_errback The function to call when the value is - * rejected. - */ - function asap(value: any, callback: (value: any) => any, opt_errback?: (error: any) => any): void; - - /** - * Returns a promise that will be resolved with the input value in a - * fully-resolved state. If the value is an array, each element will be fully - * resolved. Likewise, if the value is an object, all keys will be fully - * resolved. In both cases, all nested arrays and objects will also be - * fully resolved. All fields are resolved in place; the returned promise will - * resolve on {@code value} and not a copy. - * - * Warning: This function makes no checks against objects that contain - * cyclical references: - * - * var value = {}; - * value['self'] = value; - * webdriver.promise.fullyResolved(value); // Stack overflow. - * - * @param {*} value The value to fully resolve. - * @return {!webdriver.promise.Promise} A promise for a fully resolved version - * of the input value. - */ - function fullyResolved(value: any): webdriver.promise.Promise; - - /** - * Changes the default flow to use when no others are active. - * @param {!webdriver.promise.ControlFlow} flow The new default flow. - * @throws {Error} If the default flow is not currently active. - */ - function setDefaultFlow(flow: webdriver.promise.ControlFlow): void; - - //endregion - - /** - * Represents the eventual value of a completed operation. Each promise may be - * in one of three states: pending, resolved, or rejected. Each promise starts - * in the pending state and may make a single transition to either a - * fulfilled or failed state. - * - *

This class is based on the Promise/A proposal from CommonJS. Additional - * functions are provided for API compatibility with Dojo Deferred objects. - * - * @see http://wiki.commonjs.org/wiki/Promises/A - */ - class Promise { - - //region Constructors - - /** - * @constructor - * @see http://wiki.commonjs.org/wiki/Promises/A - */ - constructor(); - - //endregion - - //region Methods - - /** - * Cancels the computation of this promise's value, rejecting the promise in the - * process. - * @param {*} reason The reason this promise is being cancelled. If not an - * {@code Error}, one will be created using the value's string - * representation. - */ - cancel(reason: any): void; - - /** @return {boolean} Whether this promise's value is still being computed. */ - isPending(): boolean; - - /** - * Registers listeners for when this instance is resolved. This function most - * overridden by subtypes. - * - * @param {Function=} opt_callback The function to call if this promise is - * successfully resolved. The function should expect a single argument: the - * promise's resolved value. - * @param {Function=} opt_errback The function to call if this promise is - * rejected. The function should expect a single argument: the rejection - * reason. - * @return {!webdriver.promise.Promise} A new promise which will be resolved - * with the result of the invoked callback. - */ - then(opt_callback?: (value: any) => any, opt_errback?: (error: any) => any): Promise; - - /** - * Registers a function to be invoked when this promise is successfully - * resolved. This function is provided for backwards compatibility with the - * Dojo Deferred API. - * - * @param {Function} callback The function to call if this promise is - * successfully resolved. The function should expect a single argument: the - * promise's resolved value. - * @param {!Object=} opt_self The object which |this| should refer to when the - * function is invoked. - * @return {!webdriver.promise.Promise} A new promise which will be resolved - * with the result of the invoked callback. - */ - addCallback(callback: (value: any) => any, opt_self?: any): Promise; - - - /** - * Registers a function to be invoked when this promise is rejected. - * This function is provided for backwards compatibility with the - * Dojo Deferred API. - * - * @param {Function} errback The function to call if this promise is - * rejected. The function should expect a single argument: the rejection - * reason. - * @param {!Object=} opt_self The object which |this| should refer to when the - * function is invoked. - * @return {!webdriver.promise.Promise} A new promise which will be resolved - * with the result of the invoked callback. - */ - addErrback(errback: (error: any) => any, opt_self?: any): Promise; - - /** - * Registers a function to be invoked when this promise is either rejected or - * resolved. This function is provided for backwards compatibility with the - * Dojo Deferred API. - * - * @param {Function} callback The function to call when this promise is - * either resolved or rejected. The function should expect a single - * argument: the resolved value or rejection error. - * @param {!Object=} opt_self The object which |this| should refer to when the - * function is invoked. - * @return {!webdriver.promise.Promise} A new promise which will be resolved - * with the result of the invoked callback. - */ - addBoth(callback : (value: any) => any, opt_self?: any): Promise; - - /** - * An alias for {@code webdriver.promise.Promise.prototype.then} that permits - * the scope of the invoked function to be specified. This function is provided - * for backwards compatibility with the Dojo Deferred API. - * - * @param {Function} callback The function to call if this promise is - * successfully resolved. The function should expect a single argument: the - * promise's resolved value. - * @param {Function} errback The function to call if this promise is - * rejected. The function should expect a single argument: the rejection - * reason. - * @param {!Object=} opt_self The object which |this| should refer to when the - * function is invoked. - * @return {!webdriver.promise.Promise} A new promise which will be resolved - * with the result of the invoked callback. - */ - addCallbacks(callback: (value: any) => any, errback: (error: any) => any, opt_self?: any): Promise; - - //endregion - } - - /** - * Represents a value that will be resolved at some point in the future. This - * class represents the protected "producer" half of a Promise - each Deferred - * has a {@code promise} property that may be returned to consumers for - * registering callbacks, reserving the ability to resolve the deferred to the - * producer. - * - *

If this Deferred is rejected and there are no listeners registered before - * the next turn of the event loop, the rejection will be passed to the - * {@link webdriver.promise.ControlFlow} as an unhandled failure. - * - *

If this Deferred is cancelled, the cancellation reason will be forward to - * the Deferred's canceller function (if provided). The canceller may return a - * truth-y value to override the reason provided for rejection. - * - * @extends {webdriver.promise.Promise} - */ - class Deferred extends Promise { - //region Constructors - - /** - * - * @param {Function=} opt_canceller Function to call when cancelling the - * computation of this instance's value. - * @param {webdriver.promise.ControlFlow=} opt_flow The control flow - * this instance was created under. This should only be provided during - * unit tests. - * @constructor - */ - constructor(opt_canceller?: any, opt_flow?: webdriver.promise.ControlFlow); - - //endregion - - //region Properties - - /** - * The consumer promise for this instance. Provides protected access to the - * callback registering functions. - * @type {!webdriver.promise.Promise} - */ - promise: webdriver.promise.Promise; - - //endregion - - //region Methods - - /** - * Rejects this promise. If the error is itself a promise, this instance will - * be chained to it and be rejected with the error's resolved value. - * @param {*=} opt_error The rejection reason, typically either a - * {@code Error} or a {@code string}. - */ - reject(opt_error?: any): void; - errback(opt_error?: any): void; - - /** - * Resolves this promise with the given value. If the value is itself a - * promise and not a reference to this deferred, this instance will wait for - * it before resolving. - * @param {*=} opt_value The resolved value. - */ - fulfill(opt_value?: any): void; - - /** - * Cancels the computation of this promise's value and flags the promise as a - * rejected value. - * @param {*=} opt_reason The reason for cancelling this promise. - */ - cancel(opt_reason?: any): void; - - /** - * Removes all of the listeners previously registered on this deferred. - * @throws {Error} If this deferred has already been resolved. - */ - removeAll(): void; - - //endregion - } - - interface IControlFlowTimer { - clearInterval: (ms: number) => void; - clearTimeout: (ms: number) => void; - setInterval: (fn: any, ms: number) => number; - setTimeout: (fn: any, ms: number) => number; - } - - /** - * Handles the execution of scheduled tasks, each of which may be an - * asynchronous operation. The control flow will ensure tasks are executed in - * the ordered scheduled, starting each task only once those before it have - * completed. - * - *

Each task scheduled within this flow may return a - * {@link webdriver.promise.Promise} to indicate it is an asynchronous - * operation. The ControlFlow will wait for such promises to be resolved before - * marking the task as completed. - * - *

Tasks and each callback registered on a {@link webdriver.promise.Deferred} - * will be run in their own ControlFlow frame. Any tasks scheduled within a - * frame will have priority over previously scheduled tasks. Furthermore, if - * any of the tasks in the frame fails, the remainder of the tasks in that frame - * will be discarded and the failure will be propagated to the user through the - * callback/task's promised result. - * - *

Each time a ControlFlow empties its task queue, it will fire an - * {@link webdriver.promise.ControlFlow.EventType.IDLE} event. Conversely, - * whenever the flow terminates due to an unhandled error, it will remove all - * remaining tasks in its queue and fire an - * {@link webdriver.promise.ControlFlow.EventType.UNCAUGHT_EXCEPTION} event. If - * there are no listeners registered with the flow, the error will be - * rethrown to the global error handler. - * - * @extends {webdriver.EventEmitter} - */ - class ControlFlow extends webdriver.EventEmitter { - - //region Constructors - - /** - * @param {webdriver.promise.ControlFlow.Timer=} opt_timer The timer object - * to use. Should only be set for testing. - * @constructor - */ - constructor(opt_timer?: webdriver.promise.IControlFlowTimer); - - //endregion - - //region Properties - - /** - * The timer used by this instance. - * @type {webdriver.promise.ControlFlow.Timer} - */ - timer: webdriver.promise.IControlFlowTimer; - - //endregion - - //region Static Properties - - /** - * The default timer object, which uses the global timer functions. - * @type {webdriver.promise.ControlFlow.Timer} - */ - static defaultTimer: webdriver.promise.IControlFlowTimer; - - /** - * Events that may be emitted by an {@link webdriver.promise.ControlFlow}. - * @enum {string} - */ - static EventType: { - /** Emitted when all tasks have been successfully executed. */ - IDLE: string; - - /** Emitted whenever a new task has been scheduled. */ - SCHEDULE_TASK: string; - - /** - * Emitted whenever a control flow aborts due to an unhandled promise - * rejection. This event will be emitted along with the offending rejection - * reason. Upon emitting this event, the control flow will empty its task - * queue and revert to its initial state. - */ - UNCAUGHT_EXCEPTION: string; - }; - - /** - * How often, in milliseconds, the event loop should run. - * @type {number} - * @const - */ - static EVENT_LOOP_FREQUENCY: number; - - //endregion - - //region Methods - - /** - * Resets this instance, clearing its queue and removing all event listeners. - */ - reset(): void; - - /** - * Returns a summary of the recent task activity for this instance. This - * includes the most recently completed task, as well as any parent tasks. In - * the returned summary, the task at index N is considered a sub-task of the - * task at index N+1. - * @return {!Array.} A summary of this instance's recent task - * activity. - */ - getHistory(): string[]; - - /** Clears this instance's task history. */ - clearHistory(): void; - - /** - * Appends a summary of this instance's recent task history to the given - * error's stack trace. This function will also ensure the error's stack trace - * is in canonical form. - * @param {!(Error|goog.testing.JsUnitException)} e The error to annotate. - * @return {!(Error|goog.testing.JsUnitException)} The annotated error. - */ - annotateError(e: any): any; - - /** - * @return {string} The scheduled tasks still pending with this instance. - */ - getSchedule(): string; - - /** - * Schedules a task for execution. If there is nothing currently in the - * queue, the task will be executed in the next turn of the event loop. - * - * @param {!Function} fn The function to call to start the task. If the - * function returns a {@link webdriver.promise.Promise}, this instance - * will wait for it to be resolved before starting the next task. - * @param {string=} opt_description A description of the task. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * the result of the action. - */ - execute(fn: any, opt_description?: string): webdriver.promise.Promise; - - /** - * Inserts a {@code setTimeout} into the command queue. This is equivalent to - * a thread sleep in a synchronous programming language. - * - * @param {number} ms The timeout delay, in milliseconds. - * @param {string=} opt_description A description to accompany the timeout. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * the result of the action. - */ - timeout(ms: number, opt_description?: string): webdriver.promise.Promise; - - /** - * Schedules a task that shall wait for a condition to hold. Each condition - * function may return any value, but it will always be evaluated as a boolean. - * - *

Condition functions may schedule sub-tasks with this instance, however, - * their execution time will be factored into whether a wait has timed out. - * - *

In the event a condition returns a Promise, the polling loop will wait for - * it to be resolved before evaluating whether the condition has been satisfied. - * The resolution time for a promise is factored into whether a wait has timed - * out. - * - *

If the condition function throws, or returns a rejected promise, the - * wait task will fail. - * - * @param {!Function} condition The condition function to poll. - * @param {number} timeout How long to wait, in milliseconds, for the condition - * to hold before timing out. - * @param {string=} opt_message An optional error message to include if the - * wait times out; defaults to the empty string. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * condition has been satisified. The promise shall be rejected if the wait - * times out waiting for the condition. - */ - wait(condition: any, timeout: number, opt_message?: string): webdriver.promise.Promise; - - /** - * Schedules a task that will wait for another promise to resolve. The resolved - * promise's value will be returned as the task result. - * @param {!webdriver.promise.Promise} promise The promise to wait on. - * @return {!webdriver.promise.Promise} A promise that will resolve when the - * task has completed. - */ - await(promise: webdriver.promise.Promise): webdriver.promise.Promise; - - //endregion - } - } - - module error { - - // NOTE: A class was used instead of an Enum so that it could be extended in Protractor. - class ErrorCode { - static SUCCESS: number; - - static NO_SUCH_ELEMENT: number; - static NO_SUCH_FRAME: number; - static UNKNOWN_COMMAND: number; - static UNSUPPORTED_OPERATION: number; // Alias for UNKNOWN_COMMAND. - static STALE_ELEMENT_REFERENCE: number; - static ELEMENT_NOT_VISIBLE: number; - static INVALID_ELEMENT_STATE: number; - static UNKNOWN_ERROR: number; - static ELEMENT_NOT_SELECTABLE: number; - static JAVASCRIPT_ERROR: number; - static XPATH_LOOKUP_ERROR: number; - static TIMEOUT: number; - static NO_SUCH_WINDOW: number; - static INVALID_COOKIE_DOMAIN: number; - static UNABLE_TO_SET_COOKIE: number; - static MODAL_DIALOG_OPENED: number; - static NO_MODAL_DIALOG_OPEN: number; - static SCRIPT_TIMEOUT: number; - static INVALID_ELEMENT_COORDINATES: number; - static IME_NOT_AVAILABLE: number; - static IME_ENGINE_ACTIVATION_FAILED: number; - static INVALID_SELECTOR_ERROR: number; - static SESSION_NOT_CREATED: number; - static MOVE_TARGET_OUT_OF_BOUNDS: number; - static SQL_DATABASE_ERROR: number; - static INVALID_XPATH_SELECTOR: number; - static INVALID_XPATH_SELECTOR_RETURN_TYPE: number; - // The following error codes are derived straight from HTTP return codes. - static METHOD_NOT_ALLOWED: number; - } - - /** - * Error extension that includes error status codes from the WebDriver wire - * protocol: - * http://code.google.com/p/selenium/wiki/JsonWireProtocol#Response_Status_Codes - * - * @extends {Error} - */ - class Error { - - //region Constructors - - /** - * @param {!bot.ErrorCode} code The error's status code. - * @param {string=} opt_message Optional error message. - * @constructor - */ - constructor(code: number, opt_message?: string); - - //endregion - - //region Static Properties - - /** - * Status strings enumerated in the W3C WebDriver working draft. - * @enum {string} - * @see http://www.w3.org/TR/webdriver/#status-codes - */ - static State: { - ELEMENT_NOT_SELECTABLE: string; - ELEMENT_NOT_VISIBLE: string; - IME_ENGINE_ACTIVATION_FAILED: string; - IME_NOT_AVAILABLE: string; - INVALID_COOKIE_DOMAIN: string; - INVALID_ELEMENT_COORDINATES: string; - INVALID_ELEMENT_STATE: string; - INVALID_SELECTOR: string; - JAVASCRIPT_ERROR: string; - MOVE_TARGET_OUT_OF_BOUNDS: string; - NO_SUCH_ALERT: string; - NO_SUCH_DOM: string; - NO_SUCH_ELEMENT: string; - NO_SUCH_FRAME: string; - NO_SUCH_WINDOW: string; - SCRIPT_TIMEOUT: string; - SESSION_NOT_CREATED: string; - STALE_ELEMENT_REFERENCE: string; - SUCCESS: string; - TIMEOUT: string; - UNABLE_TO_SET_COOKIE: string; - UNEXPECTED_ALERT_OPEN: string; - UNKNOWN_COMMAND: string; - UNKNOWN_ERROR: string; - UNSUPPORTED_OPERATION: string; - } - - //endregion - - //region Properties - - /** - * This error's status code. - * @type {!bot.ErrorCode} - */ - code: number; - - /** @type {string} */ - state: string; - - /** @override */ - message: string; - - /** @override */ - name: string; - - /** @override */ - stack: string; - - /** - * Flag used for duck-typing when this code is embedded in a Firefox extension. - * This is required since an Error thrown in one component and then reported - * to another will fail instanceof checks in the second component. - * @type {boolean} - */ - isAutomationError: boolean; - - //endregion - - //region Methods - - /** @return {string} The string representation of this error. */ - toString(): string; - - //endregion - } - } - - module process { - - /** - * Queries for a named environment variable. - * @param {string} name The name of the environment variable to look up. - * @param {string=} opt_default The default value if the named variable is not - * defined. - * @return {string} The queried environment variable. - */ - function getEnv(name: string, opt_default?: string): string; - - /** - * @return {boolean} Whether the current process is Node's native process - * object. - */ - function isNative(): boolean; - - /** - * Sets an environment value. If the new value is either null or undefined, the - * environment variable will be cleared. - * @param {string} name The value to set. - * @param {*} value The new value; will be coerced to a string. - */ - function setEnv(name: string, value: any): void; - - } - - /** - * Creates new {@code webdriver.WebDriver} clients. Upon instantiation, each - * Builder will configure itself based on the following environment variables: - *

- *
{@code webdriver.AbstractBuilder.SERVER_URL_ENV}
- *
Defines the remote WebDriver server that should be used for command - * command execution; may be overridden using - * {@code webdriver.AbstractBuilder.prototype.usingServer}.
- *
- */ - class AbstractBuilder { - - //region Constructors - - /** - * @constructor - */ - constructor(); - - //endregion - - //region Static Properties - - /** - * Environment variable that defines the URL of the WebDriver server that - * should be used for all new WebDriver clients. This setting may be overridden - * using {@code #usingServer(url)}. - * @type {string} - * @const - * @see webdriver.process.getEnv - */ - static SERVER_URL_ENV: string; - - - /** - * The default URL of the WebDriver server to use if - * {@link webdriver.AbstractBuilder.SERVER_URL_ENV} is not set. - * @type {string} - * @const - */ - static DEFAULT_SERVER_URL: string; - - //endregion - - //region Methods - - /** - * Configures which WebDriver server should be used for new sessions. Overrides - * the value loaded from the {@link webdriver.AbstractBuilder.SERVER_URL_ENV} - * upon creation of this instance. - * @param {string} url URL of the server to use. - * @return {!webdriver.AbstractBuilder} This Builder instance for chain calling. - */ - usingServer(url: string): AbstractBuilder; - - /** - * @return {string} The URL of the WebDriver server this instance is configured - * to use. - */ - getServerUrl(): string; - - /** - * Sets the desired capabilities when requesting a new session. This will - * overwrite any previously set desired capabilities. - * @param {!(Object|webdriver.Capabilities)} capabilities The desired - * capabilities for a new session. - * @return {!webdriver.AbstractBuilder} This Builder instance for chain calling. - */ - withCapabilities(capabilities: webdriver.Capabilities): AbstractBuilder; - withCapabilities(capabilities: any): AbstractBuilder; - - /** - * @return {!webdriver.Capabilities} The current desired capabilities for this - * builder. - */ - getCapabilities(): webdriver.Capabilities; - - /** - * Builds a new {@link webdriver.WebDriver} instance using this builder's - * current configuration. - * @return {!webdriver.WebDriver} A new WebDriver client. - */ - build(): webdriver.WebDriver; - - //endregion - } - - interface ILocation { - x: number; - y: number; - } - - /** - * Enumeration of the buttons used in the advanced interactions API. - * NOTE: A TypeScript enum was not used so that this class could be extended in Protractor. - * @enum {number} - */ - class Button { - static LEFT: number; - static MIDDLE: number; - static RIGHT: number; - } - - /** - * Representations of pressable keys that aren't text. These are stored in - * the Unicode PUA (Private Use Area) code points, 0xE000-0xF8FF. Refer to - * http://www.google.com.au/search?&q=unicode+pua&btnG=Search - * NOTE: A class was used instead of an Enum so that it could be extended in Protractor - * - * @enum {string} - */ - class Key { - static NULL: string; - static CANCEL: string; // ^break - static HELP: string; - static BACK_SPACE: string; - static TAB: string; - static CLEAR: string; - static RETURN: string; - static ENTER: string; - static SHIFT: string; - static CONTROL: string; - static ALT: string; - static PAUSE: string; - static ESCAPE: string; - static SPACE: string; - static PAGE_UP: string; - static PAGE_DOWN: string; - static END: string; - static HOME: string; - static ARROW_LEFT: string; - static LEFT: string; - static ARROW_UP: string; - static UP: string; - static ARROW_RIGHT: string; - static RIGHT: string; - static ARROW_DOWN: string; - static DOWN: string; - static INSERT: string; - static DELETE: string; - static SEMICOLON: string; - static EQUALS: string; - - static NUMPAD0: string; // number pad keys - static NUMPAD1: string; - static NUMPAD2: string; - static NUMPAD3: string; - static NUMPAD4: string; - static NUMPAD5: string; - static NUMPAD6: string; - static NUMPAD7: string; - static NUMPAD8: string; - static NUMPAD9: string; - static MULTIPLY: string; - static ADD: string; - static SEPARATOR: string; - static SUBTRACT: string; - static DECIMAL: string; - static DIVIDE: string; - - static F1: string; // function keys - static F2: string; - static F3: string; - static F4: string; - static F5: string; - static F6: string; - static F7: string; - static F8: string; - static F9: string; - static F10: string; - static F11: string; - static F12: string; - - static COMMAND: string; // Apple command key - static META: string; // alias for Windows key - - /** - * Simulate pressing many keys at once in a "chord". Takes a sequence of - * {@link webdriver.Key}s or strings, appends each of the values to a string, - * and adds the chord termination key ({@link webdriver.Key.NULL}) and returns - * the resultant string. - * - * Note: when the low-level webdriver key handlers see Keys.NULL, active - * modifier keys (CTRL/ALT/SHIFT/etc) release via a keyup event. - * - * @param {...string} var_args The key sequence to concatenate. - * @return {string} The null-terminated key sequence. - * @see http://code.google.com/p/webdriver/issues/detail?id=79 - */ - static chord(...var_args: string[]): string; - } - - /** - * Class for defining sequences of complex user interactions. Each sequence - * will not be executed until {@link #perform} is called. - * - *

Example:


-     *   new webdriver.ActionSequence(driver).
-     *       keyDown(webdriver.Key.SHIFT).
-     *       click(element1).
-     *       click(element2).
-     *       dragAndDrop(element3, element4).
-     *       keyUp(webdriver.Key.SHIFT).
-     *       perform();
-     * 
- * - */ - class ActionSequence { - - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The driver instance to use. - * @constructor - */ - constructor(driver: webdriver.WebDriver); - - //endregion - - //region Methods - - /** - * Executes this action sequence. - * @return {!webdriver.promise.Promise} A promise that will be resolved once - * this sequence has completed. - */ - perform(): webdriver.promise.Promise; - - /** - * Moves the mouse. The location to move to may be specified in terms of the - * mouse's current location, an offset relative to the top-left corner of an - * element, or an element (in which case the middle of the element is used). - * @param {(!webdriver.WebElement|{x: number, y: number})} location The - * location to drag to, as either another WebElement or an offset in pixels. - * @param {{x: number, y: number}=} opt_offset An optional offset, in pixels. - * Defaults to (0, 0). - * @return {!webdriver.ActionSequence} A self reference. - */ - mouseMove(location: webdriver.WebElement, opt_offset?: ILocation): ActionSequence - mouseMove(location: ILocation): ActionSequence - - /** - * Presses a mouse button. The mouse button will not be released until - * {@link #mouseUp} is called, regardless of whether that call is made in this - * sequence or another. The behavior for out-of-order events (e.g. mouseDown, - * click) is undefined. - * - *

If an element is provided, the mouse will first be moved to the center - * of that element. This is equivalent to: - *

sequence.mouseMove(element).mouseDown()
- * - *

Warning: this method currently only supports the left mouse button. See - * http://code.google.com/p/selenium/issues/detail?id=4047 - * - * @param {(webdriver.WebElement|webdriver.Button)=} opt_elementOrButton Either - * the element to interact with or the button to click with. - * Defaults to {@link webdriver.Button.LEFT} if neither an element nor - * button is specified. - * @param {webdriver.Button=} opt_button The button to use. Defaults to - * {@link webdriver.Button.LEFT}. Ignored if a button is provided as the - * first argument. - * @return {!webdriver.ActionSequence} A self reference. - */ - mouseDown(opt_elementOrButton?: webdriver.WebElement, opt_button?: number): ActionSequence; - mouseDown(opt_elementOrButton?: number): ActionSequence; - - /** - * Releases a mouse button. Behavior is undefined for calling this function - * without a previous call to {@link #mouseDown}. - * - *

If an element is provided, the mouse will first be moved to the center - * of that element. This is equivalent to: - *

sequence.mouseMove(element).mouseUp()
- * - *

Warning: this method currently only supports the left mouse button. See - * http://code.google.com/p/selenium/issues/detail?id=4047 - * - * @param {(webdriver.WebElement|webdriver.Button)=} opt_elementOrButton Either - * the element to interact with or the button to click with. - * Defaults to {@link webdriver.Button.LEFT} if neither an element nor - * button is specified. - * @param {webdriver.Button=} opt_button The button to use. Defaults to - * {@link webdriver.Button.LEFT}. Ignored if a button is provided as the - * first argument. - * @return {!webdriver.ActionSequence} A self reference. - */ - mouseUp(opt_elementOrButton?: webdriver.WebElement, opt_button?: number): ActionSequence; - mouseUp(opt_elementOrButton?: number): ActionSequence; - - /** - * Convenience function for performing a "drag and drop" manuever. The target - * element may be moved to the location of another element, or by an offset (in - * pixels). - * @param {!webdriver.WebElement} element The element to drag. - * @param {(!webdriver.WebElement|{x: number, y: number})} location The - * location to drag to, either as another WebElement or an offset in pixels. - * @return {!webdriver.ActionSequence} A self reference. - */ - dragAndDrop(element: webdriver.WebElement, location: webdriver.WebElement): ActionSequence; - dragAndDrop(element: webdriver.WebElement, location: ILocation): ActionSequence; - - /** - * Clicks a mouse button. - * - *

If an element is provided, the mouse will first be moved to the center - * of that element. This is equivalent to: - *

sequence.mouseMove(element).click()
- * - * @param {(webdriver.WebElement|webdriver.Button)=} opt_elementOrButton Either - * the element to interact with or the button to click with. - * Defaults to {@link webdriver.Button.LEFT} if neither an element nor - * button is specified. - * @param {webdriver.Button=} opt_button The button to use. Defaults to - * {@link webdriver.Button.LEFT}. Ignored if a button is provided as the - * first argument. - * @return {!webdriver.ActionSequence} A self reference. - */ - click(opt_elementOrButton?: webdriver.WebElement, opt_button?: number): ActionSequence; - click(opt_elementOrButton?: number): ActionSequence; - - /** - * Double-clicks a mouse button. - * - *

If an element is provided, the mouse will first be moved to the center of - * that element. This is equivalent to: - *

sequence.mouseMove(element).doubleClick()
- * - *

Warning: this method currently only supports the left mouse button. See - * http://code.google.com/p/selenium/issues/detail?id=4047 - * - * @param {(webdriver.WebElement|webdriver.Button)=} opt_elementOrButton Either - * the element to interact with or the button to click with. - * Defaults to {@link webdriver.Button.LEFT} if neither an element nor - * button is specified. - * @param {webdriver.Button=} opt_button The button to use. Defaults to - * {@link webdriver.Button.LEFT}. Ignored if a button is provided as the - * first argument. - * @return {!webdriver.ActionSequence} A self reference. - */ - doubleClick(opt_elementOrButton?: webdriver.WebElement, opt_button?: number): ActionSequence; - doubleClick(opt_elementOrButton?: number): ActionSequence; - - /** - * Performs a modifier key press. The modifier key is not released - * until {@link #keyUp} or {@link #sendKeys} is called. The key press will be - * targetted at the currently focused element. - * @param {!webdriver.Key} key The modifier key to push. Must be one of - * {ALT, CONTROL, SHIFT, COMMAND, META}. - * @return {!webdriver.ActionSequence} A self reference. - * @throws {Error} If the key is not a valid modifier key. - */ - keyDown(key: string): ActionSequence; - - /** - * Performs a modifier key release. The release is targetted at the currently - * focused element. - * @param {!webdriver.Key} key The modifier key to release. Must be one of - * {ALT, CONTROL, SHIFT, COMMAND, META}. - * @return {!webdriver.ActionSequence} A self reference. - * @throws {Error} If the key is not a valid modifier key. - */ - keyUp(key: string): ActionSequence; - - /** - * Simulates typing multiple keys. Each modifier key encountered in the - * sequence will not be released until it is encountered again. All key events - * will be targetted at the currently focused element. - * @param {...(string|!webdriver.Key|!Array.<(string|!webdriver.Key)>)} var_args - * The keys to type. - * @return {!webdriver.ActionSequence} A self reference. - * @throws {Error} If the key is not a valid modifier key. - */ - sendKeys(...var_args: any[]): ActionSequence; - - //endregion - } - - /** - * Represents a modal dialog such as {@code alert}, {@code confirm}, or - * {@code prompt}. Provides functions to retrieve the message displayed with - * the alert, accept or dismiss the alert, and set the response text (in the - * case of {@code prompt}). - * @extends {webdriver.promise.Deferred} - */ - class Alert extends webdriver.promise.Deferred { - - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The driver controlling the browser this - * alert is attached to. - * @param {!(string|webdriver.promise.Promise)} text Either the message text - * displayed with this alert, or a promise that will be resolved to said - * text. - * @constructor - */ - constructor(driver: webdriver.WebDriver, text: string); - constructor(driver: webdriver.WebDriver, text: webdriver.promise.Promise); - - //endregion - - //region Methods - - /** - * Retrieves the message text displayed with this alert. For instance, if the - * alert were opened with alert("hello"), then this would return "hello". - * @return {!webdriver.promise.Promise} A promise that will be resolved to the - * text displayed with this alert. - */ - getText(): webdriver.promise.Promise; - - /** - * Accepts this alert. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * this command has completed. - */ - accept(): webdriver.promise.Promise; - - /** - * Dismisses this alert. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * this command has completed. - */ - dismiss(): webdriver.promise.Promise; - - /** - * Sets the response text on this alert. This command will return an error if - * the underlying alert does not support response text (e.g. window.alert and - * window.confirm). - * @param {string} text The text to set. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * this command has completed. - */ - sendKeys(text: string): webdriver.promise.Promise; - - //endregion - - } - - /** - * An error returned to indicate that there is an unhandled modal dialog on the - * current page. - * @extends {bot.Error} - */ - class UnhandledAlertError extends webdriver.error.Error { - //region Constructors - - /** - * @param {string} message The error message. - * @param {!webdriver.Alert} alert The alert handle. - * @constructor - */ - constructor(message: string, alert: webdriver.Alert); - - //endregion - - //region Methods - - /** - * @return {!webdriver.Alert} The open alert. - */ - getAlert(): webdriver.Alert; - - //endregion - } - - /** - * Recognized browser names. - * @enum {string} - */ - class Browser { - static ANDROID: string; - static CHROME: string; - static FIREFOX: string; - static INTERNET_EXPLORER: string; - static IPAD: string; - static IPHONE: string; - static OPERA: string; - static PHANTOM_JS: string; - static SAFARI: string; - static HTMLUNIT: string; - } - - /** - * @extends {webdriver.AbstractBuilder} - */ - class Builder extends AbstractBuilder { - - //region Constructors - - /** - * @constructor - */ - constructor(); - - //endregion - - //region Static Properties - - /** - * Environment variable that defines the session ID of an existing WebDriver - * session to use when creating clients. If set, all new Builder instances will - * default to creating clients that use this session. To create a new session, - * use {@code #useExistingSession(boolean)}. The use of this environment - * variable requires that {@link webdriver.AbstractBuilder.SERVER_URL_ENV} also - * be set. - * @type {string} - * @const - * @see webdriver.process.getEnv - */ - static SESSION_ID_ENV: string; - - //endregion - - //region Methods - - /** - * Configures the builder to create a client that will use an existing WebDriver - * session. - * @param {string} id The existing session ID to use. - * @return {!webdriver.AbstractBuilder} This Builder instance for chain calling. - */ - usingSession(id: string): webdriver.AbstractBuilder; - - /** - * @return {string} The ID of the session, if any, this builder is configured - * to reuse. - */ - getSession(): string; - - /** - * @override - */ - build(): webdriver.WebDriver; - - //endregion - } - - /** - * Common webdriver capability keys. - * @enum {string} - */ - class Capability { - - /** - * Indicates whether a driver should accept all SSL certs by default. This - * capability only applies when requesting a new session. To query whether - * a driver can handle insecure SSL certs, see - * {@link webdriver.Capability.SECURE_SSL}. - */ - static ACCEPT_SSL_CERTS: string; - - - /** - * The browser name. Common browser names are defined in the - * {@link webdriver.Browser} enum. - */ - static BROWSER_NAME: string; - - /** - * Whether the driver is capable of handling modal alerts (e.g. alert, - * confirm, prompt). To define how a driver should handle alerts, - * use {@link webdriver.Capability.UNEXPECTED_ALERT_BEHAVIOR}. - */ - static HANDLES_ALERTS: string; - - /** - * Key for the logging driver logging preferences. - */ - static LOGGING_PREFS: string; - - /** - * Describes the platform the browser is running on. Will be one of - * ANDROID, IOS, LINUX, MAC, UNIX, or WINDOWS. When requesting a - * session, ANY may be used to indicate no platform preference (this is - * semantically equivalent to omitting the platform capability). - */ - static PLATFORM: string; - - /** - * Describes the proxy configuration to use for a new WebDriver session. - */ - static PROXY: string; - - /** Whether the driver supports changing the brower's orientation. */ - static ROTATABLE: string; - - /** - * Whether a driver is only capable of handling secure SSL certs. To request - * that a driver accept insecure SSL certs by default, use - * {@link webdriver.Capability.ACCEPT_SSL_CERTS}. - */ - static SECURE_SSL: string; - - /** Whether the driver supports manipulating the app cache. */ - static SUPPORTS_APPLICATION_CACHE: string; - - /** - * Whether the driver supports controlling the browser's internet - * connectivity. - */ - static SUPPORTS_BROWSER_CONNECTION: string; - - /** Whether the driver supports locating elements with CSS selectors. */ - static SUPPORTS_CSS_SELECTORS: string; - - /** Whether the browser supports JavaScript. */ - static SUPPORTS_JAVASCRIPT: string; - - /** Whether the driver supports controlling the browser's location info. */ - static SUPPORTS_LOCATION_CONTEXT: string; - - /** Whether the driver supports taking screenshots. */ - static TAKES_SCREENSHOT: string; - - /** - * Defines how the driver should handle unexpected alerts. The value should - * be one of "accept", "dismiss", or "ignore. - */ - static UNEXPECTED_ALERT_BEHAVIOR: string; - - /** Defines the browser version. */ - static VERSION: string; - } - - class Capabilities { - //region Constructors - - /** - * @param {(webdriver.Capabilities|Object)=} opt_other Another set of - * capabilities to merge into this instance. - * @constructor - */ - constructor(opt_other?: Capabilities); - constructor(opt_other?: any); - - //endregion - - //region Methods - - /** @return {!Object} The JSON representation of this instance. */ - toJSON(): any; - - /** - * Merges another set of capabilities into this instance. Any duplicates in - * the provided set will override those already set on this instance. - * @param {!(webdriver.Capabilities|Object)} other The capabilities to - * merge into this instance. - * @return {!webdriver.Capabilities} A self reference. - */ - merge(other: Capabilities): Capabilities; - merge(other: any): Capabilities; - - /** - * @param {string} key The capability to set. - * @param {*} value The capability value. Capability values must be JSON - * serializable. Pass {@code null} to unset the capability. - * @return {!webdriver.Capabilities} A self reference. - */ - set(key: string, value: any): Capabilities; - - /** - * @param {string} key The capability to return. - * @return {*} The capability with the given key, or {@code null} if it has - * not been set. - */ - get(key: string): any; - - /** - * @param {string} key The capability to check. - * @return {boolean} Whether the specified capability is set. - */ - has(key: string): boolean; - - //endregion - - //region Static Methods - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for Android. - */ - static android(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for Chrome. - */ - static chrome(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for Firefox. - */ - static firefox(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for - * Internet Explorer. - */ - static ie(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for iPad. - */ - static ipad(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for iPhone. - */ - static iphone(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for Opera. - */ - static opera(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for - * PhantomJS. - */ - static phantomjs(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for Safari. - */ - static safari(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for HTMLUnit. - */ - static htmlunit(): Capabilities; - - /** - * @return {!webdriver.Capabilities} A basic set of capabilities for HTMLUnit - * with enabled Javascript. - */ - static htmlunitwithjs(): Capabilities; - - //endregion - } - - /** - * An enumeration of valid command string. - * NOTE: A Class was used instead of an Enum so that the class could be extended in Protractor. - */ - class CommandName { - static GET_SERVER_STATUS: string; - - static NEW_SESSION: string; - static GET_SESSIONS: string; - static DESCRIBE_SESSION: string; - - static CLOSE: string; - static QUIT: string; - - static GET_CURRENT_URL: string; - static GET: string; - static GO_BACK: string; - static GO_FORWARD: string; - static REFRESH: string; - - static ADD_COOKIE: string; - static GET_COOKIE: string; - static GET_ALL_COOKIES: string; - static DELETE_COOKIE: string; - static DELETE_ALL_COOKIES: string; - - static GET_ACTIVE_ELEMENT: string; - static FIND_ELEMENT: string; - static FIND_ELEMENTS: string; - static FIND_CHILD_ELEMENT: string; - static FIND_CHILD_ELEMENTS: string; - - static CLEAR_ELEMENT: string; - static CLICK_ELEMENT: string; - static SEND_KEYS_TO_ELEMENT: string; - static SUBMIT_ELEMENT: string; - - static GET_CURRENT_WINDOW_HANDLE: string; - static GET_WINDOW_HANDLES: string; - static GET_WINDOW_POSITION: string; - static SET_WINDOW_POSITION: string; - static GET_WINDOW_SIZE: string; - static SET_WINDOW_SIZE: string; - static MAXIMIZE_WINDOW: string; - - static SWITCH_TO_WINDOW: string; - static SWITCH_TO_FRAME: string; - static GET_PAGE_SOURCE: string; - static GET_TITLE: string; - - static EXECUTE_SCRIPT: string; - static EXECUTE_ASYNC_SCRIPT: string; - - static GET_ELEMENT_TEXT: string; - static GET_ELEMENT_TAG_NAME: string; - static IS_ELEMENT_SELECTED: string; - static IS_ELEMENT_ENABLED: string; - static IS_ELEMENT_DISPLAYED: string; - static GET_ELEMENT_LOCATION: string; - static GET_ELEMENT_LOCATION_IN_VIEW: string; - static GET_ELEMENT_SIZE: string; - static GET_ELEMENT_ATTRIBUTE: string; - static GET_ELEMENT_VALUE_OF_CSS_PROPERTY: string; - static ELEMENT_EQUALS: string; - - static SCREENSHOT: string; - static IMPLICITLY_WAIT: string; - static SET_SCRIPT_TIMEOUT: string; - static SET_TIMEOUT: string; - - static ACCEPT_ALERT: string; - static DISMISS_ALERT: string; - static GET_ALERT_TEXT: string; - static SET_ALERT_TEXT: string; - - static EXECUTE_SQL: string; - static GET_LOCATION: string; - static SET_LOCATION: string; - static GET_APP_CACHE: string; - static GET_APP_CACHE_STATUS: string; - static CLEAR_APP_CACHE: string; - static IS_BROWSER_ONLINE: string; - static SET_BROWSER_ONLINE: string; - - static GET_LOCAL_STORAGE_ITEM: string; - static GET_LOCAL_STORAGE_KEYS: string; - static SET_LOCAL_STORAGE_ITEM: string; - static REMOVE_LOCAL_STORAGE_ITEM: string; - static CLEAR_LOCAL_STORAGE: string; - static GET_LOCAL_STORAGE_SIZE: string; - - static GET_SESSION_STORAGE_ITEM: string; - static GET_SESSION_STORAGE_KEYS: string; - static SET_SESSION_STORAGE_ITEM: string; - static REMOVE_SESSION_STORAGE_ITEM: string; - static CLEAR_SESSION_STORAGE: string; - static GET_SESSION_STORAGE_SIZE: string; - - static SET_SCREEN_ORIENTATION: string; - static GET_SCREEN_ORIENTATION: string; - - // These belong to the Advanced user interactions - an element is - // optional for these commands. - static CLICK: string; - static DOUBLE_CLICK: string; - static MOUSE_DOWN: string; - static MOUSE_UP: string; - static MOVE_TO: string; - static SEND_KEYS_TO_ACTIVE_ELEMENT: string; - - // These belong to the Advanced Touch API - static TOUCH_SINGLE_TAP: string; - static TOUCH_DOWN: string; - static TOUCH_UP: string; - static TOUCH_MOVE: string; - static TOUCH_SCROLL: string; - static TOUCH_DOUBLE_TAP: string; - static TOUCH_LONG_PRESS: string; - static TOUCH_FLICK: string; - - static GET_AVAILABLE_LOG_TYPES: string; - static GET_LOG: string; - static GET_SESSION_LOGS: string; - } - - /** - * Describes a command to be executed by the WebDriverJS framework. - * @param {!webdriver.CommandName} name The name of this command. - * @constructor - */ - class Command { - //region Constructors - - /** - * @param {!webdriver.CommandName} name The name of this command. - * @constructor - */ - constructor(name: string); - - //endregion - - //region Methods - - /** - * @return {!webdriver.CommandName} This command's name. - */ - getName(): string; - - /** - * Sets a parameter to send with this command. - * @param {string} name The parameter name. - * @param {*} value The parameter value. - * @return {!webdriver.Command} A self reference. - */ - setParameter(name: string, value: any): webdriver.Command; - - /** - * Sets the parameters for this command. - * @param {!Object.<*>} parameters The command parameters. - * @return {!webdriver.Command} A self reference. - */ - setParameters(parameters: any): webdriver.Command; - - /** - * Returns a named command parameter. - * @param {string} key The parameter key to look up. - * @return {*} The parameter value, or undefined if it has not been set. - */ - getParameter(key: string): any; - - /** - * @return {!Object.<*>} The parameters to send with this command. - */ - getParameters(): any; - - //endregion - } - - /** - * Handles the execution of {@code webdriver.Command} objects. - */ - interface CommandExecutor { - /** - * Executes the given {@code command}. If there is an error executing the - * command, the provided callback will be invoked with the offending error. - * Otherwise, the callback will be invoked with a null Error and non-null - * {@link bot.response.ResponseObject} object. - * @param {!webdriver.Command} command The command to execute. - * @param {function(Error, !bot.response.ResponseObject=)} callback the function - * to invoke when the command response is ready. - */ - execute(command: webdriver.Command, callback: (error: Error, responseObject: any) => any ): void; - } - - /** - * Object that can emit events for others to listen for. This is used instead - * of Closure's event system because it is much more light weight. The API is - * based on Node's EventEmitters. - */ - class EventEmitter { - //region Constructors - - /** - * @constructor - */ - constructor(); - - //endregion - - //region Methods - - /** - * Fires an event and calls all listeners. - * @param {string} type The type of event to emit. - * @param {...*} var_args Any arguments to pass to each listener. - */ - emit(type: string, ...var_args: any[]): void; - - /** - * Returns a mutable list of listeners for a specific type of event. - * @param {string} type The type of event to retrieve the listeners for. - * @return {!Array.<{fn: !Function, oneshot: boolean, - * scope: (Object|undefined)}>} The registered listeners for - * the given event type. - */ - listeners(type: string): Array<{fn: any; oneshot: boolean; scope: any;}>; - - /** - * Registers a listener. - * @param {string} type The type of event to listen for. - * @param {!Function} listenerFn The function to invoke when the event is fired. - * @param {Object=} opt_scope The object in whose scope to invoke the listener. - * @return {!webdriver.EventEmitter} A self reference. - */ - addListener(type: string, listenerFn: any, opt_scope?:any): EventEmitter; - - /** - * Registers a one-time listener which will be called only the first time an - * event is emitted, after which it will be removed. - * @param {string} type The type of event to listen for. - * @param {!Function} listenerFn The function to invoke when the event is fired. - * @param {Object=} opt_scope The object in whose scope to invoke the listener. - * @return {!webdriver.EventEmitter} A self reference. - */ - once(type: string, listenerFn: any, opt_scope?: any): EventEmitter; - - /** - * An alias for {@code #addListener()}. - * @param {string} type The type of event to listen for. - * @param {!Function} listenerFn The function to invoke when the event is fired. - * @param {Object=} opt_scope The object in whose scope to invoke the listener. - * @return {!webdriver.EventEmitter} A self reference. - */ - on(type: string, listenerFn: any, opt_scope?:any): EventEmitter; - - /** - * Removes a previously registered event listener. - * @param {string} type The type of event to unregister. - * @param {!Function} listenerFn The handler function to remove. - * @return {!webdriver.EventEmitter} A self reference. - */ - removeListener(type: string, listenerFn: any): EventEmitter; - - /** - * Removes all listeners for a specific type of event. If no event is - * specified, all listeners across all types will be removed. - * @param {string=} opt_type The type of event to remove listeners from. - * @return {!webdriver.EventEmitter} A self reference. - */ - removeAllListeners(opt_type?: string): EventEmitter; - - //endregion - } - - /** - * @implements {webdriver.CommandExecutor} - */ - class FirefoxDomExecutor implements webdriver.CommandExecutor { - //region Constructors - - /** - * @constructor - */ - constructor(); - - //endregion - - //region Static Methods - - /** - * @return {boolean} Whether the current environment supports the - * FirefoxDomExecutor. - */ - static isAvailable(): boolean; - - //endretion - - //region Methods - - /** @override */ - execute(command: webdriver.Command, callback: (error: Error, responseObject: any) => any ): void; - - //endregion - } - - /** - * Interface for navigating back and forth in the browser history. - */ - class WebDriverNavigation { - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The parent driver. - * @constructor - */ - constructor(driver: webdriver.WebDriver); - - //endregion - - //region Methods - - /** - * Schedules a command to navigate to a new URL. - * @param {string} url The URL to navigate to. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * URL has been loaded. - */ - to(url: string): webdriver.promise.Promise; - - /** - * Schedules a command to move backwards in the browser history. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * navigation event has completed. - */ - back(): webdriver.promise.Promise; - - /** - * Schedules a command to move forwards in the browser history. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * navigation event has completed. - */ - forward(): webdriver.promise.Promise; - - /** - * Schedules a command to refresh the current page. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * navigation event has completed. - */ - refresh(): webdriver.promise.Promise; - - //endregion - } - - /** - * Provides methods for managing browser and driver state. - */ - class WebDriverOptions { - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The parent driver. - * @constructor - */ - constructor(driver: webdriver.WebDriver); - - //endregion - - //region Methods - - /** - * Schedules a command to add a cookie. - * @param {string} name The cookie name. - * @param {string} value The cookie value. - * @param {string=} opt_path The cookie path. - * @param {string=} opt_domain The cookie domain. - * @param {boolean=} opt_isSecure Whether the cookie is secure. - * @param {(number|!Date)=} opt_expiry When the cookie expires. If specified as - * a number, should be in milliseconds since midnight, January 1, 1970 UTC. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * cookie has been added to the page. - */ - addCookie(name: string, value: string, opt_path?: string, opt_domain?: string, opt_isSecure?: boolean, opt_expiry?: number): webdriver.promise.Promise; - addCookie(name: string, value: string, opt_path?: string, opt_domain?: string, opt_isSecure?: boolean, opt_expiry?: Date): webdriver.promise.Promise; - - /** - * Schedules a command to delete all cookies visible to the current page. - * @return {!webdriver.promise.Promise} A promise that will be resolved when all - * cookies have been deleted. - */ - deleteAllCookies(): webdriver.promise.Promise; - - /** - * Schedules a command to delete the cookie with the given name. This command is - * a no-op if there is no cookie with the given name visible to the current - * page. - * @param {string} name The name of the cookie to delete. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * cookie has been deleted. - */ - deleteCookie(name: string): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve all cookies visible to the current page. - * Each cookie will be returned as a JSON object as described by the WebDriver - * wire protocol. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * cookies visible to the current page. - * @see http://code.google.com/p/selenium/wiki/JsonWireProtocol#Cookie_JSON_Object - */ - getCookies(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the cookie with the given name. Returns null - * if there is no such cookie. The cookie will be returned as a JSON object as - * described by the WebDriver wire protocol. - * @param {string} name The name of the cookie to retrieve. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * named cookie, or {@code null} if there is no such cookie. - * @see http://code.google.com/p/selenium/wiki/JsonWireProtocol#Cookie_JSON_Object - */ - getCookie(name: string): webdriver.promise.Promise; - - /** - * @return {!webdriver.WebDriver.Logs} The interface for managing driver - * logs. - */ - logs(): webdriver.WebDriverLogs; - - /** - * @return {!webdriver.WebDriver.Timeouts} The interface for managing driver - * timeouts. - */ - timeouts(): webdriver.WebDriverTimeouts; - - /** - * @return {!webdriver.WebDriver.Window} The interface for managing the - * current window. - */ - window(): webdriver.WebDriverWindow; - - //endregion - } - - /** - * An interface for managing timeout behavior for WebDriver instances. - */ - class WebDriverTimeouts { - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The parent driver. - * @constructor - */ - constructor(driver: webdriver.WebDriver); - - //endregion - - //region Methods - - /** - * Specifies the amount of time the driver should wait when searching for an - * element if it is not immediately present. - *

- * When searching for a single element, the driver should poll the page - * until the element has been found, or this timeout expires before failing - * with a {@code bot.ErrorCode.NO_SUCH_ELEMENT} error. When searching - * for multiple elements, the driver should poll the page until at least one - * element has been found or this timeout has expired. - *

- * Setting the wait timeout to 0 (its default value), disables implicit - * waiting. - *

- * Increasing the implicit wait timeout should be used judiciously as it - * will have an adverse effect on test run time, especially when used with - * slower location strategies like XPath. - * - * @param {number} ms The amount of time to wait, in milliseconds. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * implicit wait timeout has been set. - */ - implicitlyWait(ms: number): webdriver.promise.Promise; - - /** - * Sets the amount of time to wait, in milliseconds, for an asynchronous script - * to finish execution before returning an error. If the timeout is less than or - * equal to 0, the script will be allowed to run indefinitely. - * - * @param {number} ms The amount of time to wait, in milliseconds. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * script timeout has been set. - */ - setScriptTimeout(ms: number): webdriver.promise.Promise; - - /** - * Sets the amount of time to wait for a page load to complete before returning - * an error. If the timeout is negative, page loads may be indefinite. - * @param {number} ms The amount of time to wait, in milliseconds. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the timeout has been set. - */ - pageLoadTimeout(ms: number): webdriver.promise.Promise; - - //endregion - } - - /** - * An interface for managing the current window. - */ - class WebDriverWindow { - - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The parent driver. - * @constructor - */ - constructor(driver: webdriver.WebDriver); - - //endregion - - //region Methods - - /** - * Retrieves the window's current position, relative to the top left corner of - * the screen. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * window's position in the form of a {x:number, y:number} object literal. - */ - getPosition(): webdriver.promise.Promise; - - /** - * Repositions the current window. - * @param {number} x The desired horizontal position, relative to the left side - * of the screen. - * @param {number} y The desired vertical position, relative to the top of the - * of the screen. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * command has completed. - */ - setPosition(x: number, y: number): webdriver.promise.Promise; - - /** - * Retrieves the window's current size. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * window's size in the form of a {width:number, height:number} object - * literal. - */ - getSize(): webdriver.promise.Promise; - - /** - * Resizes the current window. - * @param {number} width The desired window width. - * @param {number} height The desired window height. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * command has completed. - */ - setSize(width: number, height: number): webdriver.promise.Promise; - - /** - * Maximizes the current window. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * command has completed. - */ - maximize(): webdriver.promise.Promise; - - //endregion - } - - /** - * Interface for managing WebDriver log records. - */ - class WebDriverLogs { - - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The parent driver. - * @constructor - */ - constructor(driver: webdriver.WebDriver); - - //endregion - - //region - - /** - * Fetches available log entries for the given type. - * - *

Note that log buffers are reset after each call, meaning that - * available log entries correspond to those entries not yet returned for a - * given log type. In practice, this means that this call will return the - * available log entries since the last call, or from the start of the - * session. - * - * @param {!webdriver.logging.Type} type The desired log type. - * @return {!webdriver.promise.Promise.>} A - * promise that will resolve to a list of log entries for the specified - * type. - */ - get(type: string): webdriver.promise.Promise; - - /** - * Retrieves the log types available to this driver. - * @return {!webdriver.promise.Promise.>} A - * promise that will resolve to a list of available log types. - */ - getAvailableLogTypes(): webdriver.promise.Promise; - - //endregion - } - - /** - * An interface for changing the focus of the driver to another frame or window. - */ - class WebDriverTargetLocator { - - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The parent driver. - * @constructor - */ - constructor(driver: webdriver.WebDriver); - - //endregion - - //region Methods - - /** - * Schedules a command retrieve the {@code document.activeElement} element on - * the current document, or {@code document.body} if activeElement is not - * available. - * @return {!webdriver.WebElement} The active element. - */ - activeElement(): webdriver.WebElement; - - /** - * Schedules a command to switch focus of all future commands to the first frame - * on the page. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * driver has changed focus to the default content. - */ - defaultContent(): webdriver.promise.Promise; - - /** - * Schedules a command to switch the focus of all future commands to another - * frame on the page. - *

- * If the frame is specified by a number, the command will switch to the frame - * by its (zero-based) index into the {@code window.frames} collection. - *

- * If the frame is specified by a string, the command will select the frame by - * its name or ID. To select sub-frames, simply separate the frame names/IDs by - * dots. As an example, "main.child" will select the frame with the name "main" - * and then its child "child". - *

- * If the specified frame can not be found, the deferred result will errback - * with a {@code bot.ErrorCode.NO_SUCH_FRAME} error. - * @param {string|number} nameOrIndex The frame locator. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * driver has changed focus to the specified frame. - */ - frame(nameOrIndex: string): webdriver.promise.Promise; - frame(nameOrIndex: number): webdriver.promise.Promise; - - /** - * Schedules a command to switch the focus of all future commands to another - * window. Windows may be specified by their {@code window.name} attribute or - * by its handle (as returned by {@code webdriver.WebDriver#getWindowHandles}). - *

- * If the specificed window can not be found, the deferred result will errback - * with a {@code bot.ErrorCode.NO_SUCH_WINDOW} error. - * @param {string} nameOrHandle The name or window handle of the window to - * switch focus to. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * driver has changed focus to the specified window. - */ - window(nameOrHandle: string): webdriver.promise.Promise; - - /** - * Schedules a command to change focus to the active alert dialog. This command - * will return a {@link bot.ErrorCode.NO_MODAL_DIALOG_OPEN} error if a modal - * dialog is not currently open. - * @return {!webdriver.Alert} The open alert. - */ - alert(): webdriver.Alert; - - //endregion - } - - /** - * Creates a new WebDriver client, which provides control over a browser. - * - * Every WebDriver command returns a {@code webdriver.promise.Promise} that - * represents the result of that command. Callbacks may be registered on this - * object to manipulate the command result or catch an expected error. Any - * commands scheduled with a callback are considered sub-commands and will - * execute before the next command in the current frame. For example: - * - * var message = []; - * driver.call(message.push, message, 'a').then(function() { - * driver.call(message.push, message, 'b'); - * }); - * driver.call(message.push, message, 'c'); - * driver.call(function() { - * alert('message is abc? ' + (message.join('') == 'abc')); - * }); - * - */ - class WebDriver { - //region Constructors - - /** - * @param {!(webdriver.Session|webdriver.promise.Promise)} session Either a - * known session or a promise that will be resolved to a session. - * @param {!webdriver.CommandExecutor} executor The executor to use when - * sending commands to the browser. - * @param {webdriver.promise.ControlFlow=} opt_flow The flow to - * schedule commands through. Defaults to the active flow object. - * @constructor - */ - constructor(session: webdriver.Session, executor: webdriver.CommandExecutor, opt_flow?: webdriver.promise.ControlFlow); - constructor(session: webdriver.promise.Promise, executor: webdriver.CommandExecutor, opt_flow?: webdriver.promise.ControlFlow); - - //endregion - - //region Static Properties - - static Navigation: WebDriverNavigation; - static Options: WebDriverOptions; - static Timeouts: WebDriverTimeouts; - static Window: WebDriverWindow; - static Logs: WebDriverLogs; - static TargetLocator: WebDriverTargetLocator; - - //endregion - - //region StaticMethods - - /** - * Creates a new WebDriver client for an existing session. - * @param {!webdriver.CommandExecutor} executor Command executor to use when - * querying for session details. - * @param {string} sessionId ID of the session to attach to. - * @return {!webdriver.WebDriver} A new client for the specified session. - */ - static attachToSession(executor: webdriver.CommandExecutor, sessionId: string): WebDriver; - - /** - * Creates a new WebDriver session. - * @param {!webdriver.CommandExecutor} executor The executor to create the new - * session with. - * @param {!webdriver.Capabilities} desiredCapabilities The desired - * capabilities for the new session. - * @return {!webdriver.WebDriver} The driver for the newly created session. - */ - static createSession(executor: webdriver.CommandExecutor, desiredCapabilities: webdriver.Capabilities): WebDriver; - - //endregion - - //region Methods - - /** - * @return {!webdriver.promise.ControlFlow} The control flow used by this - * instance. - */ - controlFlow(): webdriver.promise.ControlFlow; - - /** - * Schedules a {@code webdriver.Command} to be executed by this driver's - * {@code webdriver.CommandExecutor}. - * @param {!webdriver.Command} command The command to schedule. - * @param {string} description A description of the command for debugging. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * the command result. - */ - schedule(command: webdriver.Command, description: string): webdriver.promise.Promise; - - /** - * @return {!webdriver.promise.Promise} A promise for this client's session. - */ - getSession(): webdriver.promise.Promise; - - /** - * @return {!webdriver.promise.Promise} A promise that will resolve with the - * this instance's capabilities. - */ - getCapabilities(): webdriver.promise.Promise; - - /** - * Schedules a command to quit the current session. After calling quit, this - * instance will be invalidated and may no longer be used to issue commands - * against the browser. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the command has completed. - */ - quit(): webdriver.promise.Promise; - - /** - * Creates a new action sequence using this driver. The sequence will not be - * scheduled for execution until {@link webdriver.ActionSequence#perform} is - * called. Example: - *


-         *   driver.actions().
-         *       mouseDown(element1).
-         *       mouseMove(element2).
-         *       mouseUp().
-         *       perform();
-         * 
- * @return {!webdriver.ActionSequence} A new action sequence for this instance. - */ - actions(): webdriver.ActionSequence; - - /** - * Schedules a command to execute JavaScript in the context of the currently - * selected frame or window. The script fragment will be executed as the body - * of an anonymous function. If the script is provided as a function object, - * that function will be converted to a string for injection into the target - * window. - * - * Any arguments provided in addition to the script will be included as script - * arguments and may be referenced using the {@code arguments} object. - * Arguments may be a boolean, number, string, or {@code webdriver.WebElement}. - * Arrays and objects may also be used as script arguments as long as each item - * adheres to the types previously mentioned. - * - * The script may refer to any variables accessible from the current window. - * Furthermore, the script will execute in the window's context, thus - * {@code document} may be used to refer to the current document. Any local - * variables will not be available once the script has finished executing, - * though global variables will persist. - * - * If the script has a return value (i.e. if the script contains a return - * statement), then the following steps will be taken for resolving this - * functions return value: - *
    - *
  • For a HTML element, the value will resolve to a - * {@code webdriver.WebElement}
  • - *
  • Null and undefined return values will resolve to null
  • - *
  • Booleans, numbers, and strings will resolve as is
  • - *
  • Functions will resolve to their string representation
  • - *
  • For arrays and objects, each member item will be converted according to - * the rules above
  • - *
- * - * @param {!(string|Function)} script The script to execute. - * @param {...*} var_args The arguments to pass to the script. - * @return {!webdriver.promise.Promise} A promise that will resolve to the - * scripts return value. - */ - executeScript(script: string, ...var_args: any[]): webdriver.promise.Promise; - executeScript(script: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Schedules a command to execute asynchronous JavaScript in the context of the - * currently selected frame or window. The script fragment will be executed as - * the body of an anonymous function. If the script is provided as a function - * object, that function will be converted to a string for injection into the - * target window. - * - * Any arguments provided in addition to the script will be included as script - * arguments and may be referenced using the {@code arguments} object. - * Arguments may be a boolean, number, string, or {@code webdriver.WebElement}. - * Arrays and objects may also be used as script arguments as long as each item - * adheres to the types previously mentioned. - * - * Unlike executing synchronous JavaScript with - * {@code webdriver.WebDriver.prototype.executeScript}, scripts executed with - * this function must explicitly signal they are finished by invoking the - * provided callback. This callback will always be injected into the - * executed function as the last argument, and thus may be referenced with - * {@code arguments[arguments.length - 1]}. The following steps will be taken - * for resolving this functions return value against the first argument to the - * script's callback function: - *
    - *
  • For a HTML element, the value will resolve to a - * {@code webdriver.WebElement}
  • - *
  • Null and undefined return values will resolve to null
  • - *
  • Booleans, numbers, and strings will resolve as is
  • - *
  • Functions will resolve to their string representation
  • - *
  • For arrays and objects, each member item will be converted according to - * the rules above
  • - *
- * - * Example #1: Performing a sleep that is synchronized with the currently - * selected window: - *
-         * var start = new Date().getTime();
-         * driver.executeAsyncScript(
-         *     'window.setTimeout(arguments[arguments.length - 1], 500);').
-         *     then(function() {
-         *       console.log('Elapsed time: ' + (new Date().getTime() - start) + ' ms');
-         *     });
-         * 
- * - * Example #2: Synchronizing a test with an AJAX application: - *
-         * var button = driver.findElement(By.id('compose-button'));
-         * button.click();
-         * driver.executeAsyncScript(
-         *     'var callback = arguments[arguments.length - 1];' +
-         *     'mailClient.getComposeWindowWidget().onload(callback);');
-         * driver.switchTo().frame('composeWidget');
-         * driver.findElement(By.id('to')).sendKEys('dog@example.com');
-         * 
- * - * Example #3: Injecting a XMLHttpRequest and waiting for the result. In this - * example, the inject script is specified with a function literal. When using - * this format, the function is converted to a string for injection, so it - * should not reference any symbols not defined in the scope of the page under - * test. - *
-         * driver.executeAsyncScript(function() {
-         *   var callback = arguments[arguments.length - 1];
-         *   var xhr = new XMLHttpRequest();
-         *   xhr.open("GET", "/resource/data.json", true);
-         *   xhr.onreadystatechange = function() {
-         *     if (xhr.readyState == 4) {
-         *       callback(xhr.resposneText);
-         *     }
-         *   }
-         *   xhr.send('');
-         * }).then(function(str) {
-         *   console.log(JSON.parse(str)['food']);
-         * });
-         * 
- * - * @param {!(string|Function)} script The script to execute. - * @param {...*} var_args The arguments to pass to the script. - * @return {!webdriver.promise.Promise} A promise that will resolve to the - * scripts return value. - */ - executeAsyncScript(script: string, ...var_args: any[]): webdriver.promise.Promise; - executeAsyncScript(script: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Schedules a command to execute a custom function. - * @param {!Function} fn The function to execute. - * @param {Object=} opt_scope The object in whose scope to execute the function. - * @param {...*} var_args Any arguments to pass to the function. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * function's result. - */ - call(fn: any, opt_scope?: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Schedules a command to wait for a condition to hold, as defined by some - * user supplied function. If any errors occur while evaluating the wait, they - * will be allowed to propagate. - * @param {function():boolean|!webdriver.promise.Promise} fn The function to - * evaluate as a wait condition. - * @param {number} timeout How long to wait for the condition to be true. - * @param {string=} opt_message An optional message to use if the wait times - * out. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * wait condition has been satisfied. - */ - wait(fn: () => any, timeout: number, opt_message?: string): webdriver.promise.Promise; - - /** - * Schedules a command to make the driver sleep for the given amount of time. - * @param {number} ms The amount of time, in milliseconds, to sleep. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * sleep has finished. - */ - sleep(ms: number): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve they current window handle. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * current window handle. - */ - getWindowHandle(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the current list of available window handles. - * @return {!webdriver.promise.Promise} A promise that will be resolved with an - * array of window handles. - */ - getAllWindowHandles(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the current page's source. The page source - * returned is a representation of the underlying DOM: do not expect it to be - * formatted or escaped in the same way as the response sent from the web - * server. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * current page source. - */ - getPageSource(): webdriver.promise.Promise; - - /** - * Schedules a command to close the current window. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * this command has completed. - */ - close(): webdriver.promise.Promise; - - /** - * Schedules a command to navigate to the given URL. - * @param {string} url The fully qualified URL to open. - * @return {!webdriver.promise.Promise} A promise that will be resolved when the - * document has finished loading. - */ - get(url: string): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the URL of the current page. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * current URL. - */ - getCurrentUrl(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the current page's title. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * current page's title. - */ - getTitle(): webdriver.promise.Promise; - - /** - * Schedule a command to find an element on the page. If the element cannot be - * found, a {@code bot.ErrorCode.NO_SUCH_ELEMENT} result will be returned - * by the driver. Unlike other commands, this error cannot be suppressed. In - * other words, scheduling a command to find an element doubles as an assert - * that the element is present on the page. To test whether an element is - * present on the page, use {@code #isElementPresent} instead. - * - *

The search criteria for find an element may either be a - * {@code webdriver.Locator} object, or a simple JSON object whose sole key - * is one of the accepted locator strategies, as defined by - * {@code webdriver.Locator.Strategy}. For example, the following two statements - * are equivalent: - *

-         * var e1 = driver.findElement(By.id('foo'));
-         * var e2 = driver.findElement({id:'foo'});
-         * 
- * - *

When running in the browser, a WebDriver cannot manipulate DOM elements - * directly; it may do so only through a {@link webdriver.WebElement} reference. - * This function may be used to generate a WebElement from a DOM element. A - * reference to the DOM element will be stored in a known location and this - * driver will attempt to retrieve it through {@link #executeScript}. If the - * element cannot be found (eg, it belongs to a different document than the - * one this instance is currently focused on), a - * {@link bot.ErrorCode.NO_SUCH_ELEMENT} error will be returned. - * - * @param {!(webdriver.Locator|Object.|Element)} locatorOrElement The - * locator strategy to use when searching for the element, or the actual - * DOM element to be located by the server. - * @param {...} var_args Arguments to pass to {@code #executeScript} if using a - * JavaScript locator. Otherwise ignored. - * @return {!webdriver.WebElement} A WebElement that can be used to issue - * commands against the located element. If the element is not found, the - * element will be invalidated and all scheduled commands aborted. - */ - findElement(locatorOrElement: webdriver.Locator, ...var_args: any[]): webdriver.WebElement; - findElement(locatorOrElement: any, ...var_args: any[]): webdriver.WebElement; - - /** - * Schedules a command to test if an element is present on the page. - * - *

If given a DOM element, this function will check if it belongs to the - * document the driver is currently focused on. Otherwise, the function will - * test if at least one element can be found with the given search criteria. - * - * @param {!(webdriver.Locator|Object.|Element)} locatorOrElement The - * locator strategy to use when searching for the element, or the actual - * DOM element to be located by the server. - * @param {...} var_args Arguments to pass to {@code #executeScript} if using a - * JavaScript locator. Otherwise ignored. - * @return {!webdriver.promise.Promise} A promise that will resolve to whether - * the element is present on the page. - */ - isElementPresent(locatorOrElement: webdriver.Locator, ...var_args: any[]): webdriver.promise.Promise; - isElementPresent(locatorOrElement: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Schedule a command to search for multiple elements on the page. - * - * @param {webdriver.Locator|Object.} locator The locator - * strategy to use when searching for the element. - * @param {...} var_args Arguments to pass to {@code #executeScript} if using a - * JavaScript locator. Otherwise ignored. - * @return {!webdriver.promise.Promise} A promise that will be resolved to an - * array of the located {@link webdriver.WebElement}s. - */ - findElements(locator: webdriver.Locator, ...var_args: any[]): webdriver.promise.Promise; - findElements(locator: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Schedule a command to take a screenshot. The driver makes a best effort to - * return a screenshot of the following, in order of preference: - *

    - *
  1. Entire page - *
  2. Current window - *
  3. Visible portion of the current frame - *
  4. The screenshot of the entire display containing the browser - *
- * - * @return {!webdriver.promise.Promise} A promise that will be resolved to the - * screenshot as a base-64 encoded PNG. - */ - takeScreenshot(): webdriver.promise.Promise; - - /** - * @return {!webdriver.WebDriver.Options} The options interface for this - * instance. - */ - manage(): webdriver.WebDriverOptions; - - /** - * @return {!webdriver.WebDriver.Navigation} The navigation interface for this - * instance. - */ - navigate(): webdriver.WebDriverNavigation; - - /** - * @return {!webdriver.WebDriver.TargetLocator} The target locator interface for - * this instance. - */ - switchTo(): webdriver.WebDriverTargetLocator - - //endregion - } - - /** - * Represents a DOM element. WebElements can be found by searching from the - * document root using a {@code webdriver.WebDriver} instance, or by searching - * under another {@code webdriver.WebElement}: - * - * driver.get('http://www.google.com'); - * var searchForm = driver.findElement(By.tagName('form')); - * var searchBox = searchForm.findElement(By.name('q')); - * searchBox.sendKeys('webdriver'); - * - * The WebElement is implemented as a promise for compatibility with the promise - * API. It will always resolve itself when its internal state has been fully - * resolved and commands may be issued against the element. This can be used to - * catch errors when an element cannot be located on the page: - * - * driver.findElement(By.id('not-there')).then(function(element) { - * alert('Found an element that was not expected to be there!'); - * }, function(error) { - * alert('The element was not found, as expected'); - * }); - * - * @extends {webdriver.promise.Deferred} - */ - class WebElement extends webdriver.promise.Deferred { - //region Constructors - - /** - * @param {!webdriver.WebDriver} driver The parent WebDriver instance for this - * element. - * @param {!(string|webdriver.promise.Promise)} id Either the opaque ID for the - * underlying DOM element assigned by the server, or a promise that will - * resolve to that ID or another WebElement. - * @constructor - */ - constructor(driver: webdriver.WebDriver, id: webdriver.promise.Promise); - constructor(driver: webdriver.WebDriver, id: string); - - //endregion - - //region Static Properties - - /** - * The property key used in the wire protocol to indicate that a JSON object - * contains the ID of a WebElement. - * @type {string} - * @const - */ - static ELEMENT_KEY: string; - - //endregion - - //region Methods - - /** - * @return {!webdriver.WebDriver} The parent driver for this instance. - */ - getDriver(): webdriver.WebDriver; - - /** - * @return {!webdriver.promise.Promise} A promise that resolves to this - * element's JSON representation as defined by the WebDriver wire protocol. - * @see http://code.google.com/p/selenium/wiki/JsonWireProtocol - */ - toWireValue(): webdriver.promise.Promise; - - /** - * Schedule a command to find a descendant of this element. If the element - * cannot be found, a {@code bot.ErrorCode.NO_SUCH_ELEMENT} result will - * be returned by the driver. Unlike other commands, this error cannot be - * suppressed. In other words, scheduling a command to find an element doubles - * as an assert that the element is present on the page. To test whether an - * element is present on the page, use {@code #isElementPresent} instead. - *

- * The search criteria for find an element may either be a - * {@code webdriver.Locator} object, or a simple JSON object whose sole key - * is one of the accepted locator strategies, as defined by - * {@code webdriver.Locator.Strategy}. For example, the following two - * statements are equivalent: - *

-         * var e1 = element.findElement(By.id('foo'));
-         * var e2 = element.findElement({id:'foo'});
-         * 
- *

- * Note that JS locator searches cannot be restricted to a subtree. All such - * searches are delegated to this instance's parent WebDriver. - * - * @param {webdriver.Locator|Object.} locator The locator - * strategy to use when searching for the element. - * @param {...} var_args Arguments to pass to {@code WebDriver#executeScript} if - * using a JavaScript locator. Otherwise ignored. - * @return {webdriver.WebElement} A WebElement that can be used to issue - * commands against the located element. If the element is not found, the - * element will be invalidated and all scheduled commands aborted. - */ - findElement(locator: webdriver.Locator, ...var_args: any[]): WebElement; - findElement(locator: any, ...var_args: any[]): WebElement; - - /** - * Schedules a command to test if there is at least one descendant of this - * element that matches the given search criteria. - * - *

Note that JS locator searches cannot be restricted to a subtree of the - * DOM. All such searches are delegated to this instance's parent WebDriver. - * - * @param {webdriver.Locator|Object.} locator The locator - * strategy to use when searching for the element. - * @param {...} var_args Arguments to pass to {@code WebDriver#executeScript} if - * using a JavaScript locator. Otherwise ignored. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether an element could be located on the page. - */ - isElementPresent(locator: webdriver.Locator, ...var_args: any[]): webdriver.promise.Promise; - isElementPresent(locator: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Schedules a command to find all of the descendants of this element that match - * the given search criteria. - *

- * Note that JS locator searches cannot be restricted to a subtree. All such - * searches are delegated to this instance's parent WebDriver. - * - * @param {webdriver.Locator|Object.} locator The locator - * strategy to use when searching for the elements. - * @param {...} var_args Arguments to pass to {@code WebDriver#executeScript} if - * using a JavaScript locator. Otherwise ignored. - * @return {!webdriver.promise.Promise} A promise that will be resolved with an - * array of located {@link webdriver.WebElement}s. - */ - findElements(locator: webdriver.Locator, ...var_args: any[]): webdriver.promise.Promise; - findElements(locator: any, ...var_args: any[]): webdriver.promise.Promise; - - /** - * Schedules a command to click on this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the click command has completed. - */ - click(): webdriver.promise.Promise; - - /** - * Schedules a command to type a sequence on the DOM element represented by this - * instance. - *

- * Modifier keys (SHIFT, CONTROL, ALT, META) are stateful; once a modifier is - * processed in the keysequence, that key state is toggled until one of the - * following occurs: - *

    - *
  • The modifier key is encountered again in the sequence. At this point the - * state of the key is toggled (along with the appropriate keyup/down events). - *
  • - *
  • The {@code webdriver.Key.NULL} key is encountered in the sequence. When - * this key is encountered, all modifier keys current in the down state are - * released (with accompanying keyup events). The NULL key can be used to - * simulate common keyboard shortcuts: - * - * element.sendKeys("text was", - * webdriver.Key.CONTROL, "a", webdriver.Key.NULL, - * "now text is"); - * // Alternatively: - * element.sendKeys("text was", - * webdriver.Key.chord(webdriver.Key.CONTROL, "a"), - * "now text is"); - *
  • - *
  • The end of the keysequence is encountered. When there are no more keys - * to type, all depressed modifier keys are released (with accompanying keyup - * events). - *
  • - *
- * Note: On browsers where native keyboard events are not yet - * supported (e.g. Firefox on OS X), key events will be synthesized. Special - * punctionation keys will be synthesized according to a standard QWERTY en-us - * keyboard layout. - * - * @param {...string} var_args The sequence of keys to - * type. All arguments will be joined into a single sequence (var_args is - * permitted for convenience). - * @return {!webdriver.promise.Promise} A promise that will be resolved when all - * keys have been typed. - */ - sendKeys(...var_args: string[]): webdriver.promise.Promise; - - /** - * Schedules a command to query for the tag/node name of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's tag name. - */ - getTagName(): webdriver.promise.Promise; - - /** - * Schedules a command to query for the computed style of the element - * represented by this instance. If the element inherits the named style from - * its parent, the parent will be queried for its value. Where possible, color - * values will be converted to their hex representation (e.g. #00ff00 instead of - * rgb(0, 255, 0)). - *

- * Warning: the value returned will be as the browser interprets it, so - * it may be tricky to form a proper assertion. - * - * @param {string} cssStyleProperty The name of the CSS style property to look - * up. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * requested CSS value. - */ - getCssValue(cssStyleProperty: string): webdriver.promise.Promise; - - /** - * Schedules a command to query for the value of the given attribute of the - * element. Will return the current value even if it has been modified after the - * page has been loaded. More exactly, this method will return the value of the - * given attribute, unless that attribute is not present, in which case the - * value of the property with the same name is returned. If neither value is - * set, null is returned. The "style" attribute is converted as best can be to a - * text representation with a trailing semi-colon. The following are deemed to - * be "boolean" attributes and will be returned as thus: - * - *

async, autofocus, autoplay, checked, compact, complete, controls, declare, - * defaultchecked, defaultselected, defer, disabled, draggable, ended, - * formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, - * loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, - * paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, - * selected, spellcheck, truespeed, willvalidate - * - *

Finally, the following commonly mis-capitalized attribute/property names - * are evaluated as expected: - *

    - *
  • "class" - *
  • "readonly" - *
- * @param {string} attributeName The name of the attribute to query. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * attribute's value. - */ - getAttribute(attributeName: string): webdriver.promise.Promise; - - /** - * Get the visible (i.e. not hidden by CSS) innerText of this element, including - * sub-elements, without any leading or trailing whitespace. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's visible text. - */ - getText(): webdriver.promise.Promise; - - /** - * Schedules a command to compute the size of this element's bounding box, in - * pixels. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's size as a {@code {width:number, height:number}} object. - */ - getSize(): webdriver.promise.Promise; - - /** - * Schedules a command to compute the location of this element in page space. - * @return {!webdriver.promise.Promise} A promise that will be resolved to the - * element's location as a {@code {x:number, y:number}} object. - */ - getLocation(): webdriver.promise.Promise; - - /** - * Schedules a command to query whether the DOM element represented by this - * instance is enabled, as dicted by the {@code disabled} attribute. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently enabled. - */ - isEnabled(): webdriver.promise.Promise; - - /** - * Schedules a command to query whether this element is selected. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently selected. - */ - isSelected(): webdriver.promise.Promise; - - /** - * Schedules a command to submit the form containing this element (or this - * element if it is a FORM element). This command is a no-op if the element is - * not contained in a form. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the form has been submitted. - */ - submit(): webdriver.promise.Promise; - - /** - * Schedules a command to clear the {@code value} of this element. This command - * has no effect if the underlying DOM element is neither a text INPUT element - * nor a TEXTAREA element. - * @return {!webdriver.promise.Promise} A promise that will be resolved when - * the element has been cleared. - */ - clear(): webdriver.promise.Promise; - - /** - * Schedules a command to test whether this element is currently displayed. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * whether this element is currently visible on the page. - */ - isDisplayed(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the outer HTML of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with - * the element's outer HTML. - */ - getOuterHtml(): webdriver.promise.Promise; - - /** - * Schedules a command to retrieve the inner HTML of this element. - * @return {!webdriver.promise.Promise} A promise that will be resolved with the - * element's inner HTML. - */ - getInnerHtml(): webdriver.promise.Promise; - - //endregion - - //region Static Methods - - /** - * Compares to WebElements for equality. - * @param {!webdriver.WebElement} a A WebElement. - * @param {!webdriver.WebElement} b A WebElement. - * @return {!webdriver.promise.Promise} A promise that will be resolved to - * whether the two WebElements are equal. - */ - static equals(a: WebElement, b: WebElement): webdriver.promise.Promise; - - //endregion - } - - interface ILocatorStrategy { - className(value: string): Locator; - 'class name'(value: string): Locator; - css(value: string): Locator; - id(value: string): Locator; - js(value: string): Locator; - linkText(value: string): Locator; - 'link text'(value: string): Locator; - name(value: string): Locator; - partialLinkText(value: string): Locator; - 'partial link text'(value: string): Locator; - tagName(value: string): Locator; - 'tag name'(value: string): Locator; - xpath(value: string): Locator; - } - - var By: ILocatorStrategy; - - /** - * An element locator. - */ - class Locator { - - //region Constructors - - /** - * An element locator. - * @param {string} using The type of strategy to use for this locator. - * @param {string} value The search target of this locator. - * @constructor - */ - constructor(using: string, value: string); - - //endregion - - //region Properties - - /** - * The search strategy to use when searching for an element. - * @type {string} - */ - using: string; - - /** - * The search target for this locator. - * @type {string} - */ - value: string; - - //endregion - - //region Static Properties - - /** - * Factory methods for the supported locator strategies. - * @type {Object.} - */ - static Strategy: ILocatorStrategy; - - //endregion - - //region Methods - - /** @return {string} String representation of this locator. */ - toString(): string; - - //endregion - - //region Static Methods - - /** - * Creates a new Locator from an object whose only property is also a key in - * the {@code webdriver.Locator.Strategy} map. - * @param {Object.} obj The object to convert into a locator. - * @return {webdriver.Locator} The new locator object. - */ - static createFromObj(obj: any): Locator - - /** - * Verifies that a {@code locator} is a valid locator to use for searching for - * elements on the page. - * @param {webdriver.Locator|Object.} locator The locator - * to verify, or a short-hand object that can be converted into a locator - * to verify. - * @return {!webdriver.Locator} The validated locator. - */ - static checkLocator(locator: Locator): Locator; - static checkLocator(obj: any): Locator; - - //endregion - } - - /** - * Contains information about a WebDriver session. - */ - class Session { - - //region Constructors - - /** - * @param {string} id The session ID. - * @param {!(Object|webdriver.Capabilities)} capabilities The session - * capabilities. - * @constructor - */ - constructor(id: string, capabilities: webdriver.Capabilities); - constructor(id: string, capabilities: any); - - //endregion - - //region Methods - - /** - * @return {string} This session's ID. - */ - getId(): string; - - /** - * @return {!webdriver.Capabilities} This session's capabilities. - */ - getCapabilities(): webdriver.Capabilities; - - /** - * Retrieves the value of a specific capability. - * @param {string} key The capability to retrieve. - * @return {*} The capability value. - */ - getCapability(key: string): any; - - /** - * Returns the JSON representation of this object, which is just the string - * session ID. - * @return {string} The JSON representation of this Session. - */ - toJSON(): string; - - //endregion - } -} - -declare module 'selenium-webdriver' { - export = webdriver; -} - -declare module 'selenium-webdriver/testing' { - - /** - * Registers a new test suite. - * @param name The suite name. - * @param fn The suite function, or {@code undefined} to define a pending test suite. - */ - function describe(name: string, fn: Function): void; - - /** - * Defines a suppressed test suite. - * @param name The suite name. - * @param fn The suite function, or {@code undefined} to define a pending test suite. - */ - function xdescribe(name: string, fn: Function): void; - - /** - * Register a function to call after the current suite finishes. - * @param fn - */ - function after(fn: Function): void; - - /** - * Register a function to call after each test in a suite. - * @param fn - */ - function afterEach(fn: Function): void; - - /** - * Register a function to call before the current suite starts. - * @param fn - */ - function before(fn: Function): void; - - /** - * Register a function to call before each test in a suite. - * @param fn - */ - function beforeEach(fn: Function): void; - - /** - * Add a test to the current suite. - * @param name The test name. - * @param fn The test function, or {@code undefined} to define a pending test case. - */ - function it(name: string, fn: Function): void; - - /** - * An alias for {@link #it()} that flags the test as the only one that should - * be run within the current suite. - * @param name The test name. - * @param fn The test function, or {@code undefined} to define a pending test case. - */ - function iit(name: string, fn: Function): void; - - /** - * Adds a test to the current suite while suppressing it so it is not run. - * @param name The test name. - * @param fn The test function, or {@code undefined} to define a pending test case. - */ - function xit(name: string, fn: Function): void; -} - -declare module 'selenium-webdriver/executors' { - /** - * Creates a command executor that uses WebDriver's JSON wire protocol. - * @param url The server's URL, or a promise that will resolve to that URL. - * @returns {!webdriver.CommandExecutor} The new command executor. - */ - function createExecutor(url: any): webdriver.CommandExecutor; -} diff --git a/selenium-webdriver/selenium-webdriver-tests.ts b/selenium-webdriver/selenium-webdriver-tests.ts index 16ddb3631..c087267ae 100644 --- a/selenium-webdriver/selenium-webdriver-tests.ts +++ b/selenium-webdriver/selenium-webdriver-tests.ts @@ -1,5 +1,107 @@ /// -/// + +function TestChromeDriver() { + var driver: chrome.Driver = new chrome.Driver(); + driver = new chrome.Driver(webdriver.Capabilities.chrome()); + driver = new chrome.Driver(webdriver.Capabilities.chrome(), new webdriver.promise.ControlFlow()); + + var baseDriver: webdriver.WebDriver = driver; +} + +function TestChromeOptions() { + var options: chrome.Options = new chrome.Options(); + options = chrome.Options.fromCapabilities(webdriver.Capabilities.chrome()); + + options = options.addArguments("a", "b", "c"); + options = options.addExtensions("a", "b", "c"); + options = options.detachDriver(true); + options = options.setChromeBinaryPath("path"); + options = options.setChromeLogFile("logfile"); + options = options.setLocalState("state"); + options = options.setLoggingPrefs(new webdriver.logging.Preferences()); + options = options.setProxy({ proxyType: "proxyType" }); + options = options.setUserPreferences("preferences"); + var capabilities: webdriver.Capabilities = options.toCapabilities(); + capabilities = options.toCapabilities(webdriver.Capabilities.chrome()); + var values: chrome.IOptionsValues = options.toJSON(); +} + +function TestServiceBuilder() { + var builder: chrome.ServiceBuilder = new chrome.ServiceBuilder(); + builder = new chrome.ServiceBuilder("exe"); + + var anything: any = builder.build(); + builder = builder.enableVerboseLogging(); + builder = builder.loggingTo("path"); + builder = builder.setNumHttpThreads(5); + builder = builder.setStdio("config"); + builder = builder.setStdio(["A", "B"]); + builder = builder.setUrlBasePath("path"); + builder = builder.usingPort(8080); + builder = builder.withEnvironment({ "A": "a", "B": "b" }); +} + +function TestChromeModule() { + var service: any = chrome.getDefaultService(); + chrome.setDefaultService({}); +} + +function TestBinary() { + var binary: firefox.Binary = new firefox.Binary(); + binary = new firefox.Binary("exe"); + + binary.addArguments("A", "B", "C"); + var promise: webdriver.promise.Promise = binary.kill(); + binary.launch("profile").then(function (result: any) { }); +} + +function TestFirefoxDriver() { + var driver: firefox.Driver = new firefox.Driver(); + driver = new chrome.Driver(webdriver.Capabilities.firefox()); + driver = new chrome.Driver(webdriver.Capabilities.firefox(), new webdriver.promise.ControlFlow()); + + var baseDriver: webdriver.WebDriver = driver; +} + +function TestFirefoxOptions() { + var options: firefox.Options = new firefox.Options(); + + options = options.setBinary("binary"); + options = options.setBinary(new firefox.Binary()); + options = options.setLoggingPreferences(new webdriver.logging.Preferences()); + options = options.setProfile("profile"); + options = options.setProfile(new firefox.Profile()); + options = options.setProxy({ proxyType: "proxy" }); + var capabilities: webdriver.Capabilities = options.toCapabilities(); + var capabilities: webdriver.Capabilities = options.toCapabilities({}); +} + +function TestFirefoxProfile() { + var profile: firefox.Profile = new firefox.Profile(); + profile = new firefox.Profile("dir"); + + var bool: boolean = profile.acceptUntrustedCerts(); + profile.addExtension("ext"); + bool = profile.assumeUntrustedCertIssuer(); + profile.encode().then(function (prof: string) { }); + var num: number = profile.getPort(); + var anything: any = profile.getPreference("key"); + bool = profile.nativeEventsEnabled(); + profile.setAcceptUntrustedCerts(true); + profile.setAssumeUntrustedCertIssuer(true); + profile.setNativeEventsEnabled(true); + profile.setPort(8080); + profile.setPreference("key", "value"); + profile.setPreference("key", 5); + profile.setPreference("key", true); + var stringPromise: webdriver.promise.Promise = profile.writeToDisk(); + stringPromise = profile.writeToDisk(true); +} + +function TestExecutors() { + var exec: webdriver.CommandExecutor = executors.createExecutor("url"); + exec = executors.createExecutor(new webdriver.promise.Promise()); +} function TestBuilder() { var builder: webdriver.Builder = new webdriver.Builder(); diff --git a/selenium-webdriver/selenium-webdriver.d.ts b/selenium-webdriver/selenium-webdriver.d.ts index 57d58d14b..a98e19db0 100644 --- a/selenium-webdriver/selenium-webdriver.d.ts +++ b/selenium-webdriver/selenium-webdriver.d.ts @@ -3,8 +3,516 @@ // Definitions by: Bill Armstrong // Definitions: https://github.com/borisyankov/DefinitelyTyped -/// -/// +declare module chrome { + /** + * Creates a new WebDriver client for Chrome. + * + * @extends {webdriver.WebDriver} + */ + class Driver extends webdriver.WebDriver { + /** + * @param {(webdriver.Capabilities|Options)=} opt_config The configuration + * options. + * @param {remote.DriverService=} opt_service The session to use; will use + * the {@link getDefaultService default service} by default. + * @param {webdriver.promise.ControlFlow=} opt_flow The control flow to use, or + * {@code null} to use the currently active flow. + * @constructor + */ + constructor(opt_config?: webdriver.Capabilities, opt_service?: any, opt_flow?: webdriver.promise.ControlFlow); + constructor(opt_config?: Options, opt_service?: any, opt_flow?: webdriver.promise.ControlFlow); + } + + interface IOptionsValues { + args: string[]; + binary?: string; + detach: boolean; + extensions: string[]; + localState?: any; + logFile?: string; + prefs?: any; + } + + /** + * Class for managing ChromeDriver specific options. + */ + class Options { + /** + * @constructor + */ + constructor(); + + /** + * Extracts the ChromeDriver specific options from the given capabilities + * object. + * @param {!webdriver.Capabilities} capabilities The capabilities object. + * @return {!Options} The ChromeDriver options. + */ + static fromCapabilities(capabilities: webdriver.Capabilities): Options; + + + /** + * Add additional command line arguments to use when launching the Chrome + * browser. Each argument may be specified with or without the "--" prefix + * (e.g. "--foo" and "foo"). Arguments with an associated value should be + * delimited by an "=": "foo=bar". + * @param {...(string|!Array.)} var_args The arguments to add. + * @return {!Options} A self reference. + */ + addArguments(...var_args: string[]): Options; + + + /** + * Add additional extensions to install when launching Chrome. Each extension + * should be specified as the path to the packed CRX file, or a Buffer for an + * extension. + * @param {...(string|!Buffer|!Array.<(string|!Buffer)>)} var_args The + * extensions to add. + * @return {!Options} A self reference. + */ + addExtensions(...var_args: any[]): Options; + + + /** + * Sets the path to the Chrome binary to use. On Mac OS X, this path should + * reference the actual Chrome executable, not just the application binary + * (e.g. "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"). + * + * The binary path be absolute or relative to the chromedriver server + * executable, but it must exist on the machine that will launch Chrome. + * + * @param {string} path The path to the Chrome binary to use. + * @return {!Options} A self reference. + */ + setChromeBinaryPath(path: string): Options; + + + /** + * Sets whether to leave the started Chrome browser running if the controlling + * ChromeDriver service is killed before {@link webdriver.WebDriver#quit()} is + * called. + * @param {boolean} detach Whether to leave the browser running if the + * chromedriver service is killed before the session. + * @return {!Options} A self reference. + */ + detachDriver(detach: boolean): Options; + + + /** + * Sets the user preferences for Chrome's user profile. See the "Preferences" + * file in Chrome's user data directory for examples. + * @param {!Object} prefs Dictionary of user preferences to use. + * @return {!Options} A self reference. + */ + setUserPreferences(prefs: any): Options; + + + /** + * Sets the logging preferences for the new session. + * @param {!webdriver.logging.Preferences} prefs The logging preferences. + * @return {!Options} A self reference. + */ + setLoggingPrefs(prefs: webdriver.logging.Preferences): Options; + + + /** + * Sets preferences for the "Local State" file in Chrome's user data + * directory. + * @param {!Object} state Dictionary of local state preferences. + * @return {!Options} A self reference. + */ + setLocalState(state: any): Options; + + + /** + * Sets the path to Chrome's log file. This path should exist on the machine + * that will launch Chrome. + * @param {string} path Path to the log file to use. + * @return {!Options} A self reference. + */ + setChromeLogFile(path: string): Options; + + + /** + * Sets the proxy settings for the new session. + * @param {webdriver.ProxyConfig} proxy The proxy configuration to use. + * @return {!Options} A self reference. + */ + setProxy(proxy: webdriver.ProxyConfig): Options; + + + /** + * Converts this options instance to a {@link webdriver.Capabilities} object. + * @param {webdriver.Capabilities=} opt_capabilities The capabilities to merge + * these options into, if any. + * @return {!webdriver.Capabilities} The capabilities. + */ + toCapabilities(opt_capabilities?: webdriver.Capabilities): webdriver.Capabilities; + + + /** + * Converts this instance to its JSON wire protocol representation. Note this + * function is an implementation not intended for general use. + * @return {{args: !Array., + * binary: (string|undefined), + * detach: boolean, + * extensions: !Array., + * localState: (Object|undefined), + * logFile: (string|undefined), + * prefs: (Object|undefined)}} The JSON wire protocol representation + * of this instance. + */ + toJSON(): IOptionsValues; + } + + /** + * Creates {@link remote.DriverService} instances that manage a ChromeDriver + * server. + */ + class ServiceBuilder { + /** + * @param {string=} opt_exe Path to the server executable to use. If omitted, + * the builder will attempt to locate the chromedriver on the current + * PATH. + * @throws {Error} If provided executable does not exist, or the chromedriver + * cannot be found on the PATH. + * @constructor + */ + constructor(opt_exe?: string); + + /** + * Sets the port to start the ChromeDriver on. + * @param {number} port The port to use, or 0 for any free port. + * @return {!ServiceBuilder} A self reference. + * @throws {Error} If the port is invalid. + */ + usingPort(port: number): ServiceBuilder; + + + /** + * Sets the path of the log file the driver should log to. If a log file is + * not specified, the driver will log to stderr. + * @param {string} path Path of the log file to use. + * @return {!ServiceBuilder} A self reference. + */ + loggingTo(path: string): ServiceBuilder; + + + /** + * Enables verbose logging. + * @return {!ServiceBuilder} A self reference. + */ + enableVerboseLogging(): ServiceBuilder; + + + /** + * Sets the number of threads the driver should use to manage HTTP requests. + * By default, the driver will use 4 threads. + * @param {number} n The number of threads to use. + * @return {!ServiceBuilder} A self reference. + */ + setNumHttpThreads(n: number): ServiceBuilder; + + + /** + * Sets the base path for WebDriver REST commands (e.g. "/wd/hub"). + * By default, the driver will accept commands relative to "/". + * @param {string} path The base path to use. + * @return {!ServiceBuilder} A self reference. + */ + setUrlBasePath(path: string): ServiceBuilder; + + + /** + * Defines the stdio configuration for the driver service. See + * {@code child_process.spawn} for more information. + * @param {(string|!Array.)} config The + * configuration to use. + * @return {!ServiceBuilder} A self reference. + */ + setStdio(config: string): ServiceBuilder; + setStdio(config: any[]): ServiceBuilder; + + + /** + * Defines the environment to start the server under. This settings will be + * inherited by every browser session started by the server. + * @param {!Object.} env The environment to use. + * @return {!ServiceBuilder} A self reference. + */ + withEnvironment(env: { [key: string]: string }): ServiceBuilder; + + + /** + * Creates a new DriverService using this instance's current configuration. + * @return {remote.DriverService} A new driver service using this instance's + * current configuration. + * @throws {Error} If the driver exectuable was not specified and a default + * could not be found on the current PATH. + */ + build(): any; + } + + /** + * Returns the default ChromeDriver service. If such a service has not been + * configured, one will be constructed using the default configuration for + * a ChromeDriver executable found on the system PATH. + * @return {!remote.DriverService} The default ChromeDriver service. + */ + function getDefaultService(): any; + + /** + * Sets the default service to use for new ChromeDriver instances. + * @param {!remote.DriverService} service The service to use. + * @throws {Error} If the default service is currently running. + */ + function setDefaultService(service: any): void; +} + +declare module firefox { + /** + * Manages a Firefox subprocess configured for use with WebDriver. + */ + class Binary { + /** + * @param {string=} opt_exe Path to the Firefox binary to use. If not + * specified, will attempt to locate Firefox on the current system. + * @constructor + */ + constructor(opt_exe?: string); + + /** + * Add arguments to the command line used to start Firefox. + * @param {...(string|!Array.)} var_args Either the arguments to add as + * varargs, or the arguments as an array. + */ + addArguments(...var_args: string[]): void; + + + /** + * Launches Firefox and eturns a promise that will be fulfilled when the process + * terminates. + * @param {string} profile Path to the profile directory to use. + * @return {!promise.Promise.} A promise for the process result. + * @throws {Error} If this instance has already been started. + */ + launch(profile: string): webdriver.promise.Promise; + + + /** + * Kills the managed Firefox process. + * @return {!promise.Promise} A promise for when the process has terminated. + */ + kill(): webdriver.promise.Promise; + } + + /** + * A WebDriver client for Firefox. + * + * @extends {webdriver.WebDriver} + */ + class Driver extends webdriver.WebDriver { + /** + * @param {(Options|webdriver.Capabilities|Object)=} opt_config The + * configuration options for this driver, specified as either an + * {@link Options} or {@link webdriver.Capabilities}, or as a raw hash + * object. + * @param {webdriver.promise.ControlFlow=} opt_flow The flow to + * schedule commands through. Defaults to the active flow object. + * @constructor + */ + constructor(opt_config?: webdriver.Capabilities, opt_flow?: webdriver.promise.ControlFlow); + constructor(opt_config?: any, opt_flow?: webdriver.promise.ControlFlow); + } + + /** + * Configuration options for the FirefoxDriver. + */ + class Options { + /** + * @constructor + */ + constructor(); + + /** + * Sets the profile to use. The profile may be specified as a + * {@link Profile} object or as the path to an existing Firefox profile to use + * as a template. + * + * @param {(string|!Profile)} profile The profile to use. + * @return {!Options} A self reference. + */ + setProfile(profile: string): Options; + setProfile(profile: Profile): Options; + + + /** + * Sets the binary to use. The binary may be specified as the path to a Firefox + * executable, or as a {@link Binary} object. + * + * @param {(string|!Binary)} binary The binary to use. + * @return {!Options} A self reference. + */ + setBinary(binary: string): Options; + setBinary(binary: Binary): Options; + + + /** + * Sets the logging preferences for the new session. + * @param {webdriver.logging.Preferences} prefs The logging preferences. + * @return {!Options} A self reference. + */ + setLoggingPreferences(prefs: webdriver.logging.Preferences): Options; + + + /** + * Sets the proxy to use. + * + * @param {webdriver.ProxyConfig} proxy The proxy configuration to use. + * @return {!Options} A self reference. + */ + setProxy(proxy: webdriver.ProxyConfig): Options; + + + /** + * Converts these options to a {@link webdriver.Capabilities} instance. + * + * @return {!webdriver.Capabilities} A new capabilities object. + */ + toCapabilities(opt_remote?: any): webdriver.Capabilities; + } + + /** + * Models a Firefox proifle directory for use with the FirefoxDriver. The + * {@code Proifle} directory uses an in-memory model until {@link #writeToDisk} + * is called. + */ + class Profile { + /** + * @param {string=} opt_dir Path to an existing Firefox profile directory to + * use a template for this profile. If not specified, a blank profile will + * be used. + * @constructor + */ + constructor(opt_dir?: string); + + /** + * Registers an extension to be included with this profile. + * @param {string} extension Path to the extension to include, as either an + * unpacked extension directory or the path to a xpi file. + */ + addExtension(extension: string): void; + + + /** + * Sets a desired preference for this profile. + * @param {string} key The preference key. + * @param {(string|number|boolean)} value The preference value. + * @throws {Error} If attempting to set a frozen preference. + */ + setPreference(key: string, value: string): void; + setPreference(key: string, value: number): void; + setPreference(key: string, value: boolean): void; + + + /** + * Returns the currently configured value of a profile preference. This does + * not include any defaults defined in the profile's template directory user.js + * file (if a template were specified on construction). + * @param {string} key The desired preference. + * @return {(string|number|boolean|undefined)} The current value of the + * requested preference. + */ + getPreference(key: string): any; + + + /** + * @return {number} The port this profile is currently configured to use, or + * 0 if the port will be selected at random when the profile is written + * to disk. + */ + getPort(): number; + + + /** + * Sets the port to use for the WebDriver extension loaded by this profile. + * @param {number} port The desired port, or 0 to use any free port. + */ + setPort(port: number): void; + + + /** + * @return {boolean} Whether the FirefoxDriver is configured to automatically + * accept untrusted SSL certificates. + */ + acceptUntrustedCerts(): boolean; + + + /** + * Sets whether the FirefoxDriver should automatically accept untrusted SSL + * certificates. + * @param {boolean} value . + */ + setAcceptUntrustedCerts(value: boolean): void; + + + /** + * Sets whether to assume untrusted certificates come from untrusted issuers. + * @param {boolean} value . + */ + setAssumeUntrustedCertIssuer(value: boolean): void; + + + /** + * @return {boolean} Whether to assume untrusted certs come from untrusted + * issuers. + */ + assumeUntrustedCertIssuer(): boolean; + + + /** + * Sets whether to use native events with this profile. + * @param {boolean} enabled . + */ + setNativeEventsEnabled(enabled: boolean): void; + + + /** + * Returns whether native events are enabled in this profile. + * @return {boolean} . + */ + nativeEventsEnabled(): boolean; + + + /** + * Writes this profile to disk. + * @param {boolean=} opt_excludeWebDriverExt Whether to exclude the WebDriver + * extension from the generated profile. Used to reduce the size of an + * {@link #encode() encoded profile} since the server will always install + * the extension itself. + * @return {!promise.Promise.} A promise for the path to the new + * profile directory. + */ + writeToDisk(opt_excludeWebDriverExt?: boolean): webdriver.promise.Promise; + + + /** + * Encodes this profile as a zipped, base64 encoded directory. + * @return {!promise.Promise.} A promise for the encoded profile. + */ + encode(): webdriver.promise.Promise; + } +} + +declare module executors { + /** + * Creates a command executor that uses WebDriver's JSON wire protocol. + * @param url The server's URL, or a promise that will resolve to that URL. + * @returns {!webdriver.CommandExecutor} The new command executor. + */ + function createExecutor(url: string): webdriver.CommandExecutor; + function createExecutor(url: webdriver.promise.Promise): webdriver.CommandExecutor; +} declare module webdriver { @@ -4219,6 +4727,18 @@ declare module webdriver { } } +declare module 'selenium-webdriver/chrome' { + export = chrome; +} + +declare module 'selenium-webdriver/firefox' { + export = firefox; +} + +declare module 'selenium-webdriver/executors' { + export = executors; +} + declare module 'selenium-webdriver' { export = webdriver; }