Options Class for managing ChromeDriver specific options. ServiceBuilder Creates remote.DriverService
instances that manage a ChromeDriver
+selenium-webdriver/chrome Module selenium-webdriver/chrome code » Show: Public Protected Private
Functions Creates a new ChromeDriver session.
Parameters opt_options: (webdriver.Capabilities |Options)=
The session options. opt_service: remote.DriverService=
The session to use; will use
the default service
by default. Returns A new WebDriver instance.
Returns the default ChromeDriver service. If such a service has not been
configured, one will be constructed using the default configuration for
diff --git a/docs/api/javascript/module_selenium-webdriver_error.html b/docs/api/javascript/module_selenium-webdriver_error.html
index 0bf8d62215cb4..dc4ba906ccac8 100644
--- a/docs/api/javascript/module_selenium-webdriver_error.html
+++ b/docs/api/javascript/module_selenium-webdriver_error.html
@@ -1,4 +1,4 @@
-
selenium-webdriver/error Module selenium-webdriver/error code » Classes Error Error extension that includes error status codes from the WebDriver wire
+selenium-webdriver/error
\ No newline at end of file
diff --git a/docs/api/javascript/module_selenium-webdriver_executors.html b/docs/api/javascript/module_selenium-webdriver_executors.html
index 175631557d1e4..4cd5307a8a31f 100644
--- a/docs/api/javascript/module_selenium-webdriver_executors.html
+++ b/docs/api/javascript/module_selenium-webdriver_executors.html
@@ -1,3 +1,3 @@
-selenium-webdriver/executors Module selenium-webdriver/executors code » Various utilities for working with
+
selenium-webdriver/executors
\ No newline at end of file
diff --git a/docs/api/javascript/module_selenium-webdriver_http.html b/docs/api/javascript/module_selenium-webdriver_http.html
index 31f88b3953181..a5b2f988b5146 100644
--- a/docs/api/javascript/module_selenium-webdriver_http.html
+++ b/docs/api/javascript/module_selenium-webdriver_http.html
@@ -1,4 +1,4 @@
-selenium-webdriver/http Module selenium-webdriver/http code » Defines a the webdriver.http.Client
for use with
+
selenium-webdriver/http
\ No newline at end of file
diff --git a/docs/api/javascript/module_selenium-webdriver_http_util.html b/docs/api/javascript/module_selenium-webdriver_http_util.html
index 9221a35c2f3e8..e85d1000b81be 100644
--- a/docs/api/javascript/module_selenium-webdriver_http_util.html
+++ b/docs/api/javascript/module_selenium-webdriver_http_util.html
@@ -1,4 +1,4 @@
-selenium-webdriver/http/util Module selenium-webdriver/http/util code » Show: Public Protected Private
Functions Queries a WebDriver server for its current status.
Parameters url: string
Base URL of the server to query. Returns A promise that resolves with
+selenium-webdriver/http/util Module selenium-webdriver/http/util code » Show: Public Protected Private
Functions Queries a WebDriver server for its current status.
Parameters url: string
Base URL of the server to query. Returns A promise that resolves with
a hash of the server status.
Waits for a WebDriver server to be healthy and accepting requests.
Parameters url: string
Base URL of the server to query. timeout: number
How long to wait for the server. Returns A promise that will resolve when the
server is ready.
Polls a URL with GET requests until it returns a 2xx response or the
timeout expires.
Parameters url: string
The URL to poll. timeout: number
How long to wait, in milliseconds. Returns A promise that will resolve when the
diff --git a/docs/api/javascript/module_selenium-webdriver_io.html b/docs/api/javascript/module_selenium-webdriver_io.html
index 93fb2538b854e..aabdf7fd0e1a5 100644
--- a/docs/api/javascript/module_selenium-webdriver_io.html
+++ b/docs/api/javascript/module_selenium-webdriver_io.html
@@ -1,4 +1,4 @@
-selenium-webdriver/io Module selenium-webdriver/io code » Show: Public Protected Private
Functions Searches the PATH
environment variable for the given file.
Parameters file: string
The file to locate on the PATH. opt_checkCwd: boolean =
Whether to always start with the search with
+selenium-webdriver/io
\ No newline at end of file
diff --git a/docs/api/javascript/module_selenium-webdriver_net.html b/docs/api/javascript/module_selenium-webdriver_net.html
index a8589eb7bf9f9..128d586e96d4e 100644
--- a/docs/api/javascript/module_selenium-webdriver_net.html
+++ b/docs/api/javascript/module_selenium-webdriver_net.html
@@ -1 +1 @@
-selenium-webdriver/net
\ No newline at end of file
+selenium-webdriver/net
\ No newline at end of file
diff --git a/docs/api/javascript/module_selenium-webdriver_net_portprober.html b/docs/api/javascript/module_selenium-webdriver_net_portprober.html
index 61e419130bc56..0ae96a6780acb 100644
--- a/docs/api/javascript/module_selenium-webdriver_net_portprober.html
+++ b/docs/api/javascript/module_selenium-webdriver_net_portprober.html
@@ -1,4 +1,4 @@
-selenium-webdriver/net/portprober Module selenium-webdriver/net/portprober code » Show: Public Protected Private
Functions Parameters opt_host: string =
The bound host to test the port
against.
+selenium-webdriver/net/portprober Module selenium-webdriver/net/portprober code » Show: Public Protected Private
Functions Parameters opt_host: string =
The bound host to test the port
against.
Defaults to INADDR_ANY
. Returns A promise that will resolve
to a free port. If a port cannot be found, the promise will be
rejected.
Tests if a port is free.
Parameters port: number
The port to test. opt_host: string =
The bound host to test the port
against.
diff --git a/docs/api/javascript/module_selenium-webdriver_phantomjs.html b/docs/api/javascript/module_selenium-webdriver_phantomjs.html
index 46e823b89efd4..a4fd791508b45 100644
--- a/docs/api/javascript/module_selenium-webdriver_phantomjs.html
+++ b/docs/api/javascript/module_selenium-webdriver_phantomjs.html
@@ -1 +1 @@
-selenium-webdriver/phantomjs
\ No newline at end of file
+selenium-webdriver/phantomjs
\ No newline at end of file
diff --git a/docs/api/javascript/module_selenium-webdriver_proxy.html b/docs/api/javascript/module_selenium-webdriver_proxy.html
index 06b37f2357f27..67b9e60b66fa2 100644
--- a/docs/api/javascript/module_selenium-webdriver_proxy.html
+++ b/docs/api/javascript/module_selenium-webdriver_proxy.html
@@ -1,4 +1,4 @@
-selenium-webdriver/proxy Module selenium-webdriver/proxy code » Defines functions for configuring a webdriver proxy:
+
selenium-webdriver/proxy Module selenium-webdriver/proxy code » Defines functions for configuring a webdriver proxy:
var webdriver = require('selenium-webdriver'),
proxy = require('selenium-webdriver/proxy');
diff --git a/docs/api/javascript/module_selenium-webdriver_remote.html b/docs/api/javascript/module_selenium-webdriver_remote.html
index 09b57019ba487..5b260c2f27463 100644
--- a/docs/api/javascript/module_selenium-webdriver_remote.html
+++ b/docs/api/javascript/module_selenium-webdriver_remote.html
@@ -1,4 +1,4 @@
-selenium-webdriver/remote Module selenium-webdriver/remote code » Classes DriverService Manages the life and death of a native executable WebDriver server. SeleniumServer Manages the life and death of the Selenium standalone server.
Show: Public Protected Private
Type Definitions Configuration options for a DriverService instance.
+
selenium-webdriver/remote Module selenium-webdriver/remote code » Classes DriverService Manages the life and death of a native executable WebDriver server. SeleniumServer Manages the life and death of the Selenium standalone server.
Show: Public Protected Private
Type Definitions Configuration options for a DriverService instance.
port
- The port to start the server on (must be > 0). If the
port is provided as a promise, the service will wait for the promise to
diff --git a/docs/api/javascript/module_selenium-webdriver_remote_class_SeleniumServer.html b/docs/api/javascript/module_selenium-webdriver_remote_class_SeleniumServer.html
index 89992eff1f255..3d496b83040f9 100644
--- a/docs/api/javascript/module_selenium-webdriver_remote_class_SeleniumServer.html
+++ b/docs/api/javascript/module_selenium-webdriver_remote_class_SeleniumServer.html
@@ -1,6 +1,6 @@
SeleniumServer Manages the life and death of the Selenium standalone server. The server
- may be obtained from https://code.google.com/p/selenium/downloads/list.
Constructor SeleniumServer ( jar, options )
An alias for #it()
that flags the test as the only one that should
be run within the current suite.
Parameters name: string
The test name. fn: function()=
The test function, or undefined
to define
- a pending test case.
Add a test to the current suite.
Parameters name: string
The test name. fn: function()=
The test function, or undefined
to define
- a pending test case.
Defines a suppressed test suite.
Parameters name: string
The suite name. fn: function()=
The suite function, or undefined
to define
- a pending test suite.
Adds a test to the current suite while suppressing it so it is not run.
Parameters name: string
The test name. fn: function()=
The test function, or undefined
to define
+ a pending test case.
Add a test to the current suite.
Parameters name: string
The test name. fn: function()=
The test function, or undefined
to define
+ a pending test case.
Defines a suppressed test suite.
Parameters name: string
The suite name. fn: function()=
The suite function, or undefined
to define
+ a pending test suite.
Adds a test to the current suite while suppressing it so it is not run.
Parameters name: string
The test name. fn: function()=
The test function, or undefined
to define
a pending test case.
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
diff --git a/docs/api/javascript/module_selenium-webdriver_testing_assert.html b/docs/api/javascript/module_selenium-webdriver_testing_assert.html
index 2e91f7d7e2416..d214b1fcb0ff6 100644
--- a/docs/api/javascript/module_selenium-webdriver_testing_assert.html
+++ b/docs/api/javascript/module_selenium-webdriver_testing_assert.html
@@ -1,4 +1,4 @@
-selenium-webdriver/testing/assert Module selenium-webdriver/testing/assert code » Defines a library that simplifies writing assertions against
+
selenium-webdriver/testing/assert Module selenium-webdriver/testing/assert code » Defines a library that simplifies writing assertions against
promised values.
diff --git a/docs/api/javascript/source/index.js.src.html b/docs/api/javascript/source/index.js.src.html
index 712d8830ca16c..b4cc5c65788c2 100644
--- a/docs/api/javascript/source/index.js.src.html
+++ b/docs/api/javascript/source/index.js.src.html
@@ -1 +1 @@
-index.js 1 // Copyright 2012 Selenium committers 2 // Copyright 2012 Software Freedom Conservancy 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 /** 17 * @fileoverview The main user facing module. Exports WebDriver's primary 18 * public API and provides convenience assessors to certain sub-modules. 19 */ 20 21 var base = require('./_base'); 22 var builder = require('./builder'); 23 var error = require('./error'); 24 25 26 // NOTE: the remainder of this file is nasty and verbose, but the annotations 27 // are necessary to guide the Closure Compiler's type analysis. Without them, 28 // we would not be able to extract any meaningful API documentation. 29 30 31 /** @type {function(new: webdriver.ActionSequence)} */ 32 exports.ActionSequence = base.require('webdriver.ActionSequence'); 33 34 35 /** @type {function(new: builder.Builder)} */ 36 exports.Builder = builder.Builder; 37 38 39 /** @type {webdriver.By.} */ 40 exports.By = base.require('webdriver.By'); 41 42 43 /** @type {function(new: webdriver.Capabilities)} */ 44 exports.Capabilities = base.require('webdriver.Capabilities'); 45 46 47 /** @type {function(new: webdriver.Command)} */ 48 exports.Command = base.require('webdriver.Command'); 49 50 51 /** @type {function(new: webdriver.EventEmitter)} */ 52 exports.EventEmitter = base.require('webdriver.EventEmitter'); 53 54 55 /** @type {function(new: webdriver.Session)} */ 56 exports.Session = base.require('webdriver.Session'); 57 58 59 /** @type {function(new: webdriver.WebDriver)} */ 60 exports.WebDriver = base.require('webdriver.WebDriver'); 61 62 63 /** @type {function(new: webdriver.WebElement)} */ 64 exports.WebElement = base.require('webdriver.WebElement'); 65 66 67 // Export the remainder of our API through getters to keep things cleaner 68 // when this module is used in a REPL environment. 69 70 71 /** @type {webdriver.Browser.} */ 72 (exports.__defineGetter__('Browser', function() { 73 return base.require('webdriver.Browser'); 74 })); 75 76 77 /** @type {webdriver.Button.} */ 78 (exports.__defineGetter__('Button', function() { 79 return base.require('webdriver.Button'); 80 })); 81 82 83 /** @type {webdriver.Capability.} */ 84 (exports.__defineGetter__('Capability', function() { 85 return base.require('webdriver.Capability'); 86 })); 87 88 89 /** @type {webdriver.CommandName.} */ 90 (exports.__defineGetter__('CommandName', function() { 91 return base.require('webdriver.CommandName'); 92 })); 93 94 95 /** @type {webdriver.Key.} */ 96 (exports.__defineGetter__('Key', function() { 97 return base.require('webdriver.Key'); 98 })); 99 100 101 /** @type {error.} */ 102 (exports.__defineGetter__('error', function() { 103 return error; 104 })); 105 106 107 /** @type {error.} */ 108 (exports.__defineGetter__('error', function() { 109 return error; 110 })); 111 112 113 /** @type {webdriver.promise.} */ 114 (exports.__defineGetter__('promise', function() { 115 return base.exportPublicApi('webdriver.promise'); 116 })); 117 118 119 /** @type {webdriver.stacktrace.} */ 120 (exports.__defineGetter__('stacktrace', function() { 121 return base.exportPublicApi('webdriver.stacktrace'); 122 }));
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
+index.js 1 // Copyright 2012 Selenium committers 2 // Copyright 2012 Software Freedom Conservancy 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 /** 17 * @fileoverview The main user facing module. Exports WebDriver's primary 18 * public API and provides convenience assessors to certain sub-modules. 19 */ 20 21 var base = require('./_base'); 22 var builder = require('./builder'); 23 var error = require('./error'); 24 25 26 // NOTE: the remainder of this file is nasty and verbose, but the annotations 27 // are necessary to guide the Closure Compiler's type analysis. Without them, 28 // we would not be able to extract any meaningful API documentation. 29 30 31 /** @type {function(new: webdriver.ActionSequence)} */ 32 exports.ActionSequence = base.require('webdriver.ActionSequence'); 33 34 35 /** @type {function(new: builder.Builder)} */ 36 exports.Builder = builder.Builder; 37 38 39 /** @type {webdriver.By.} */ 40 exports.By = base.require('webdriver.By'); 41 42 43 /** @type {function(new: webdriver.Capabilities)} */ 44 exports.Capabilities = base.require('webdriver.Capabilities'); 45 46 47 /** @type {function(new: webdriver.Command)} */ 48 exports.Command = base.require('webdriver.Command'); 49 50 51 /** @type {function(new: webdriver.EventEmitter)} */ 52 exports.EventEmitter = base.require('webdriver.EventEmitter'); 53 54 55 /** @type {function(new: webdriver.Session)} */ 56 exports.Session = base.require('webdriver.Session'); 57 58 59 /** @type {function(new: webdriver.WebDriver)} */ 60 exports.WebDriver = base.require('webdriver.WebDriver'); 61 62 63 /** @type {function(new: webdriver.WebElement)} */ 64 exports.WebElement = base.require('webdriver.WebElement'); 65 66 67 // Export the remainder of our API through getters to keep things cleaner 68 // when this module is used in a REPL environment. 69 70 71 /** @type {webdriver.Browser.} */ 72 (exports.__defineGetter__('Browser', function() { 73 return base.require('webdriver.Browser'); 74 })); 75 76 77 /** @type {webdriver.Button.} */ 78 (exports.__defineGetter__('Button', function() { 79 return base.require('webdriver.Button'); 80 })); 81 82 83 /** @type {webdriver.Capability.} */ 84 (exports.__defineGetter__('Capability', function() { 85 return base.require('webdriver.Capability'); 86 })); 87 88 89 /** @type {webdriver.CommandName.} */ 90 (exports.__defineGetter__('CommandName', function() { 91 return base.require('webdriver.CommandName'); 92 })); 93 94 95 /** @type {webdriver.Key.} */ 96 (exports.__defineGetter__('Key', function() { 97 return base.require('webdriver.Key'); 98 })); 99 100 101 /** @type {error.} */ 102 (exports.__defineGetter__('error', function() { 103 return error; 104 })); 105 106 107 /** @type {error.} */ 108 (exports.__defineGetter__('error', function() { 109 return error; 110 })); 111 112 113 /** @type {webdriver.logging.} */ 114 (exports.__defineGetter__('logging', function() { 115 return base.exportPublicApi('webdriver.logging'); 116 })); 117 118 119 /** @type {webdriver.promise.} */ 120 (exports.__defineGetter__('promise', function() { 121 return base.exportPublicApi('webdriver.promise'); 122 })); 123 124 125 /** @type {webdriver.stacktrace.} */ 126 (exports.__defineGetter__('stacktrace', function() { 127 return base.exportPublicApi('webdriver.stacktrace'); 128 }));
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
diff --git a/docs/api/javascript/source/lib/goog/deps.js.src.html b/docs/api/javascript/source/lib/goog/deps.js.src.html
index fffd0457bfca0..c3c1eacf0a0a4 100644
--- a/docs/api/javascript/source/lib/goog/deps.js.src.html
+++ b/docs/api/javascript/source/lib/goog/deps.js.src.html
@@ -1 +1 @@
-deps.js 1 // This file has been auto-generated; do not edit by hand 2 goog.addDependency("../atoms/error.js", ["bot.Error","bot.ErrorCode"], []); 3 goog.addDependency("../atoms/response.js", ["bot.response","bot.response.ResponseObject"], ["bot.Error","bot.ErrorCode"]); 4 goog.addDependency("../atoms/json.js", ["bot.json"], ["bot.userAgent","goog.json","goog.userAgent"]); 5 goog.addDependency("../atoms/userAgent.js", ["bot.userAgent"], ["goog.string","goog.userAgent","goog.userAgent.product","goog.userAgent.product.isVersion"]); 6 goog.addDependency("string/string.js", ["goog.string","goog.string.Unicode"], []); 7 goog.addDependency("useragent/useragent.js", ["goog.userAgent"], ["goog.string"]); 8 goog.addDependency("useragent/product.js", ["goog.userAgent.product"], ["goog.userAgent"]); 9 goog.addDependency("useragent/product_isversion.js", ["goog.userAgent.product.isVersion"], ["goog.userAgent.product"]); 10 goog.addDependency("json/json.js", ["goog.json","goog.json.Serializer"], []); 11 goog.addDependency("../webdriver/abstractbuilder.js", ["webdriver.AbstractBuilder"], ["webdriver.Capabilities","webdriver.process"]); 12 goog.addDependency("../webdriver/capabilities.js", ["webdriver.Browser","webdriver.Capabilities","webdriver.Capability"], []); 13 goog.addDependency("../webdriver/process.js", ["webdriver.process"], ["goog.Uri","goog.array","goog.json"]); 14 goog.addDependency("uri/uri.js", ["goog.Uri","goog.Uri.QueryData"], ["goog.array","goog.string","goog.structs","goog.structs.Map","goog.uri.utils","goog.uri.utils.ComponentIndex","goog.uri.utils.StandardQueryParam"]); 15 goog.addDependency("array/array.js", ["goog.array","goog.array.ArrayLike"], ["goog.asserts"]); 16 goog.addDependency("asserts/asserts.js", ["goog.asserts","goog.asserts.AssertionError"], ["goog.debug.Error","goog.string"]); 17 goog.addDependency("debug/error.js", ["goog.debug.Error"], []); 18 goog.addDependency("structs/structs.js", ["goog.structs"], ["goog.array","goog.object"]); 19 goog.addDependency("object/object.js", ["goog.object"], []); 20 goog.addDependency("structs/map.js", ["goog.structs.Map"], ["goog.iter.Iterator","goog.iter.StopIteration","goog.object"]); 21 goog.addDependency("iter/iter.js", ["goog.iter","goog.iter.Iterator","goog.iter.StopIteration"], ["goog.array","goog.asserts"]); 22 goog.addDependency("uri/utils.js", ["goog.uri.utils","goog.uri.utils.ComponentIndex","goog.uri.utils.QueryArray","goog.uri.utils.QueryValue","goog.uri.utils.StandardQueryParam"], ["goog.asserts","goog.string","goog.userAgent"]); 23 goog.addDependency("../webdriver/actionsequence.js", ["webdriver.ActionSequence"], ["goog.array","webdriver.Button","webdriver.Command","webdriver.CommandName","webdriver.Key"]); 24 goog.addDependency("../webdriver/button.js", ["webdriver.Button"], []); 25 goog.addDependency("../webdriver/command.js", ["webdriver.Command","webdriver.CommandExecutor","webdriver.CommandName"], []); 26 goog.addDependency("../webdriver/key.js", ["webdriver.Key"], []); 27 goog.addDependency("../webdriver/builder.js", ["webdriver.Builder"], ["goog.userAgent","webdriver.AbstractBuilder","webdriver.FirefoxDomExecutor","webdriver.WebDriver","webdriver.http.CorsClient","webdriver.http.Executor","webdriver.http.XhrClient","webdriver.process"]); 28 goog.addDependency("../webdriver/firefoxdomexecutor.js", ["webdriver.FirefoxDomExecutor"], ["bot.response","goog.json","goog.userAgent.product","webdriver.Command","webdriver.CommandName"]); 29 goog.addDependency("../webdriver/webdriver.js", ["webdriver.Alert","webdriver.UnhandledAlertError","webdriver.WebDriver","webdriver.WebElement"], ["bot.Error","bot.ErrorCode","bot.response","goog.array","goog.object","webdriver.ActionSequence","webdriver.Command","webdriver.CommandName","webdriver.Key","webdriver.Locator","webdriver.Session","webdriver.logging","webdriver.promise"]); 30 goog.addDependency("../webdriver/locators.js", ["webdriver.By","webdriver.Locator","webdriver.Locator.Strategy"], ["goog.array","goog.object","goog.string"]); 31 goog.addDependency("../webdriver/session.js", ["webdriver.Session"], ["webdriver.Capabilities"]); 32 goog.addDependency("../webdriver/logging.js", ["webdriver.logging","webdriver.logging.Preferences"], ["goog.object"]); 33 goog.addDependency("../webdriver/promise.js", ["webdriver.promise","webdriver.promise.ControlFlow","webdriver.promise.ControlFlow.Timer","webdriver.promise.Deferred","webdriver.promise.Promise"], ["goog.array","goog.debug.Error","goog.object","webdriver.EventEmitter","webdriver.stacktrace.Snapshot"]); 34 goog.addDependency("../webdriver/events.js", ["webdriver.EventEmitter"], []); 35 goog.addDependency("../webdriver/stacktrace.js", ["webdriver.stacktrace","webdriver.stacktrace.Snapshot"], ["goog.array","goog.string","goog.userAgent"]); 36 goog.addDependency("../webdriver/http/corsclient.js", ["webdriver.http.CorsClient"], ["goog.json","webdriver.http.Response"]); 37 goog.addDependency("../webdriver/http/http.js", ["webdriver.http.Client","webdriver.http.Executor","webdriver.http.Request","webdriver.http.Response"], ["bot.ErrorCode","goog.array","goog.json","webdriver.CommandName","webdriver.promise.Deferred"]); 38 goog.addDependency("../webdriver/http/xhrclient.js", ["webdriver.http.XhrClient"], ["goog.json","goog.net.XmlHttp","webdriver.http.Response"]); 39 goog.addDependency("net/xmlhttp.js", ["goog.net.DefaultXmlHttpFactory","goog.net.XmlHttp","goog.net.XmlHttp.OptionType","goog.net.XmlHttp.ReadyState"], ["goog.net.WrapperXmlHttpFactory","goog.net.XmlHttpFactory"]); 40 goog.addDependency("net/wrapperxmlhttpfactory.js", ["goog.net.WrapperXmlHttpFactory"], ["goog.net.XmlHttpFactory"]); 41 goog.addDependency("net/xmlhttpfactory.js", ["goog.net.XmlHttpFactory"], []); 42 goog.addDependency("../webdriver/testing/asserts.js", ["webdriver.testing.Assertion","webdriver.testing.ContainsMatcher","webdriver.testing.NegatedAssertion","webdriver.testing.assert","webdriver.testing.asserts"], ["goog.array","goog.labs.testing.CloseToMatcher","goog.labs.testing.EndsWithMatcher","goog.labs.testing.EqualToMatcher","goog.labs.testing.EqualsMatcher","goog.labs.testing.GreaterThanEqualToMatcher","goog.labs.testing.GreaterThanMatcher","goog.labs.testing.LessThanEqualToMatcher","goog.labs.testing.LessThanMatcher","goog.labs.testing.InstanceOfMatcher","goog.labs.testing.IsNotMatcher","goog.labs.testing.IsNullMatcher","goog.labs.testing.IsNullOrUndefinedMatcher","goog.labs.testing.IsUndefinedMatcher","goog.labs.testing.Matcher","goog.labs.testing.ObjectEqualsMatcher","goog.labs.testing.RegexMatcher","goog.labs.testing.StartsWithMatcher","goog.labs.testing.assertThat","goog.string","webdriver.promise"]); 43 goog.addDependency("labs/testing/numbermatcher.js", ["goog.labs.testing.CloseToMatcher","goog.labs.testing.EqualToMatcher","goog.labs.testing.GreaterThanEqualToMatcher","goog.labs.testing.GreaterThanMatcher","goog.labs.testing.LessThanEqualToMatcher","goog.labs.testing.LessThanMatcher"], ["goog.asserts","goog.labs.testing.Matcher"]); 44 goog.addDependency("labs/testing/matcher.js", ["goog.labs.testing.Matcher"], []); 45 goog.addDependency("labs/testing/stringmatcher.js", ["goog.labs.testing.ContainsStringMatcher","goog.labs.testing.EndsWithMatcher","goog.labs.testing.EqualToIgnoringCaseMatcher","goog.labs.testing.EqualToIgnoringWhitespaceMatcher","goog.labs.testing.EqualsMatcher","goog.labs.testing.RegexMatcher","goog.labs.testing.StartsWithMatcher","goog.labs.testing.StringContainsInOrderMatcher"], ["goog.asserts","goog.labs.testing.Matcher","goog.string"]); 46 goog.addDependency("labs/testing/objectmatcher.js", ["goog.labs.testing.HasPropertyMatcher","goog.labs.testing.InstanceOfMatcher","goog.labs.testing.IsNullMatcher","goog.labs.testing.IsNullOrUndefinedMatcher","goog.labs.testing.IsUndefinedMatcher","goog.labs.testing.ObjectEqualsMatcher"], ["goog.labs.testing.Matcher","goog.string"]); 47 goog.addDependency("labs/testing/logicmatcher.js", ["goog.labs.testing.AllOfMatcher","goog.labs.testing.AnyOfMatcher","goog.labs.testing.IsNotMatcher"], ["goog.array","goog.labs.testing.Matcher"]); 48 goog.addDependency("labs/testing/assertthat.js", ["goog.labs.testing.MatcherError","goog.labs.testing.assertThat"], ["goog.asserts","goog.debug.Error","goog.labs.testing.Matcher"]);
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
+deps.js 1 // This file has been auto-generated; do not edit by hand 2 goog.addDependency("../atoms/error.js", ["bot.Error","bot.ErrorCode"], []); 3 goog.addDependency("../atoms/response.js", ["bot.response","bot.response.ResponseObject"], ["bot.Error","bot.ErrorCode"]); 4 goog.addDependency("../atoms/json.js", ["bot.json"], ["bot.userAgent","goog.json","goog.userAgent"]); 5 goog.addDependency("../atoms/userAgent.js", ["bot.userAgent"], ["goog.string","goog.userAgent","goog.userAgent.product","goog.userAgent.product.isVersion"]); 6 goog.addDependency("string/string.js", ["goog.string","goog.string.Unicode"], []); 7 goog.addDependency("useragent/useragent.js", ["goog.userAgent"], ["goog.string"]); 8 goog.addDependency("useragent/product.js", ["goog.userAgent.product"], ["goog.userAgent"]); 9 goog.addDependency("useragent/product_isversion.js", ["goog.userAgent.product.isVersion"], ["goog.userAgent.product"]); 10 goog.addDependency("json/json.js", ["goog.json","goog.json.Serializer"], []); 11 goog.addDependency("../webdriver/capabilities.js", ["webdriver.Browser","webdriver.Capabilities","webdriver.Capability"], []); 12 goog.addDependency("../webdriver/logging.js", ["webdriver.logging","webdriver.logging.Preferences"], ["goog.object"]); 13 goog.addDependency("object/object.js", ["goog.object"], []); 14 goog.addDependency("../webdriver/actionsequence.js", ["webdriver.ActionSequence"], ["goog.array","webdriver.Button","webdriver.Command","webdriver.CommandName","webdriver.Key"]); 15 goog.addDependency("array/array.js", ["goog.array","goog.array.ArrayLike"], ["goog.asserts"]); 16 goog.addDependency("asserts/asserts.js", ["goog.asserts","goog.asserts.AssertionError"], ["goog.debug.Error","goog.string"]); 17 goog.addDependency("debug/error.js", ["goog.debug.Error"], []); 18 goog.addDependency("../webdriver/button.js", ["webdriver.Button"], []); 19 goog.addDependency("../webdriver/command.js", ["webdriver.Command","webdriver.CommandExecutor","webdriver.CommandName"], []); 20 goog.addDependency("../webdriver/key.js", ["webdriver.Key"], []); 21 goog.addDependency("../webdriver/stacktrace.js", ["webdriver.stacktrace","webdriver.stacktrace.Snapshot"], ["goog.array","goog.string","goog.userAgent"]); 22 goog.addDependency("../webdriver/locators.js", ["webdriver.By","webdriver.Locator","webdriver.Locator.Strategy"], ["goog.array","goog.object","goog.string"]); 23 goog.addDependency("../webdriver/promise.js", ["webdriver.promise","webdriver.promise.ControlFlow","webdriver.promise.ControlFlow.Timer","webdriver.promise.Deferred","webdriver.promise.Promise"], ["goog.array","goog.debug.Error","goog.object","webdriver.EventEmitter","webdriver.stacktrace.Snapshot"]); 24 goog.addDependency("../webdriver/events.js", ["webdriver.EventEmitter"], []); 25 goog.addDependency("../webdriver/process.js", ["webdriver.process"], ["goog.Uri","goog.array","goog.json"]); 26 goog.addDependency("uri/uri.js", ["goog.Uri","goog.Uri.QueryData"], ["goog.array","goog.string","goog.structs","goog.structs.Map","goog.uri.utils","goog.uri.utils.ComponentIndex","goog.uri.utils.StandardQueryParam"]); 27 goog.addDependency("structs/structs.js", ["goog.structs"], ["goog.array","goog.object"]); 28 goog.addDependency("structs/map.js", ["goog.structs.Map"], ["goog.iter.Iterator","goog.iter.StopIteration","goog.object"]); 29 goog.addDependency("iter/iter.js", ["goog.iter","goog.iter.Iterator","goog.iter.StopIteration"], ["goog.array","goog.asserts"]); 30 goog.addDependency("uri/utils.js", ["goog.uri.utils","goog.uri.utils.ComponentIndex","goog.uri.utils.QueryArray","goog.uri.utils.QueryValue","goog.uri.utils.StandardQueryParam"], ["goog.asserts","goog.string","goog.userAgent"]); 31 goog.addDependency("../webdriver/webdriver.js", ["webdriver.Alert","webdriver.UnhandledAlertError","webdriver.WebDriver","webdriver.WebElement"], ["bot.Error","bot.ErrorCode","bot.response","goog.array","goog.object","webdriver.ActionSequence","webdriver.Command","webdriver.CommandName","webdriver.Key","webdriver.Locator","webdriver.Session","webdriver.logging","webdriver.promise"]); 32 goog.addDependency("../webdriver/session.js", ["webdriver.Session"], ["webdriver.Capabilities"]); 33 goog.addDependency("../webdriver/builder.js", ["webdriver.Builder"], ["goog.userAgent","webdriver.AbstractBuilder","webdriver.FirefoxDomExecutor","webdriver.WebDriver","webdriver.http.CorsClient","webdriver.http.Executor","webdriver.http.XhrClient","webdriver.process"]); 34 goog.addDependency("../webdriver/abstractbuilder.js", ["webdriver.AbstractBuilder"], ["webdriver.Capabilities","webdriver.process"]); 35 goog.addDependency("../webdriver/firefoxdomexecutor.js", ["webdriver.FirefoxDomExecutor"], ["bot.response","goog.json","goog.userAgent.product","webdriver.Command","webdriver.CommandName"]); 36 goog.addDependency("../webdriver/http/corsclient.js", ["webdriver.http.CorsClient"], ["goog.json","webdriver.http.Response"]); 37 goog.addDependency("../webdriver/http/http.js", ["webdriver.http.Client","webdriver.http.Executor","webdriver.http.Request","webdriver.http.Response"], ["bot.ErrorCode","goog.array","goog.json","webdriver.CommandName","webdriver.promise.Deferred"]); 38 goog.addDependency("../webdriver/http/xhrclient.js", ["webdriver.http.XhrClient"], ["goog.json","goog.net.XmlHttp","webdriver.http.Response"]); 39 goog.addDependency("net/xmlhttp.js", ["goog.net.DefaultXmlHttpFactory","goog.net.XmlHttp","goog.net.XmlHttp.OptionType","goog.net.XmlHttp.ReadyState"], ["goog.net.WrapperXmlHttpFactory","goog.net.XmlHttpFactory"]); 40 goog.addDependency("net/wrapperxmlhttpfactory.js", ["goog.net.WrapperXmlHttpFactory"], ["goog.net.XmlHttpFactory"]); 41 goog.addDependency("net/xmlhttpfactory.js", ["goog.net.XmlHttpFactory"], []); 42 goog.addDependency("../webdriver/testing/asserts.js", ["webdriver.testing.Assertion","webdriver.testing.ContainsMatcher","webdriver.testing.NegatedAssertion","webdriver.testing.assert","webdriver.testing.asserts"], ["goog.array","goog.labs.testing.CloseToMatcher","goog.labs.testing.EndsWithMatcher","goog.labs.testing.EqualToMatcher","goog.labs.testing.EqualsMatcher","goog.labs.testing.GreaterThanEqualToMatcher","goog.labs.testing.GreaterThanMatcher","goog.labs.testing.LessThanEqualToMatcher","goog.labs.testing.LessThanMatcher","goog.labs.testing.InstanceOfMatcher","goog.labs.testing.IsNotMatcher","goog.labs.testing.IsNullMatcher","goog.labs.testing.IsNullOrUndefinedMatcher","goog.labs.testing.IsUndefinedMatcher","goog.labs.testing.Matcher","goog.labs.testing.ObjectEqualsMatcher","goog.labs.testing.RegexMatcher","goog.labs.testing.StartsWithMatcher","goog.labs.testing.assertThat","goog.string","webdriver.promise"]); 43 goog.addDependency("labs/testing/numbermatcher.js", ["goog.labs.testing.CloseToMatcher","goog.labs.testing.EqualToMatcher","goog.labs.testing.GreaterThanEqualToMatcher","goog.labs.testing.GreaterThanMatcher","goog.labs.testing.LessThanEqualToMatcher","goog.labs.testing.LessThanMatcher"], ["goog.asserts","goog.labs.testing.Matcher"]); 44 goog.addDependency("labs/testing/matcher.js", ["goog.labs.testing.Matcher"], []); 45 goog.addDependency("labs/testing/stringmatcher.js", ["goog.labs.testing.ContainsStringMatcher","goog.labs.testing.EndsWithMatcher","goog.labs.testing.EqualToIgnoringCaseMatcher","goog.labs.testing.EqualToIgnoringWhitespaceMatcher","goog.labs.testing.EqualsMatcher","goog.labs.testing.RegexMatcher","goog.labs.testing.StartsWithMatcher","goog.labs.testing.StringContainsInOrderMatcher"], ["goog.asserts","goog.labs.testing.Matcher","goog.string"]); 46 goog.addDependency("labs/testing/objectmatcher.js", ["goog.labs.testing.HasPropertyMatcher","goog.labs.testing.InstanceOfMatcher","goog.labs.testing.IsNullMatcher","goog.labs.testing.IsNullOrUndefinedMatcher","goog.labs.testing.IsUndefinedMatcher","goog.labs.testing.ObjectEqualsMatcher"], ["goog.labs.testing.Matcher","goog.string"]); 47 goog.addDependency("labs/testing/logicmatcher.js", ["goog.labs.testing.AllOfMatcher","goog.labs.testing.AnyOfMatcher","goog.labs.testing.IsNotMatcher"], ["goog.array","goog.labs.testing.Matcher"]); 48 goog.addDependency("labs/testing/assertthat.js", ["goog.labs.testing.MatcherError","goog.labs.testing.assertThat"], ["goog.asserts","goog.debug.Error","goog.labs.testing.Matcher"]);
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
diff --git a/docs/api/javascript/source/remote/index.js.src.html b/docs/api/javascript/source/remote/index.js.src.html
index 52e5d748462ed..a6a3b48e78b03 100644
--- a/docs/api/javascript/source/remote/index.js.src.html
+++ b/docs/api/javascript/source/remote/index.js.src.html
@@ -1 +1 @@
-index.js 1 // Copyright 2013 Software Freedom Conservancy 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 'use strict'; 16 17 var spawn = require('child_process').spawn, 18 os = require('os'), 19 path = require('path'), 20 url = require('url'), 21 util = require('util'); 22 23 var promise = require('../').promise, 24 httpUtil = require('../http/util'), 25 net = require('../net'), 26 portprober = require('../net/portprober'); 27 28 29 30 /** 31 * Configuration options for a DriverService instance. 32 * <ul> 33 * <li>{@code port} - The port to start the server on (must be > 0). If the 34 * port is provided as a promise, the service will wait for the promise to 35 * resolve before starting. 36 * <li>{@code args} - The arguments to pass to the service. If a promise is 37 * provided, the service will wait for it to resolve before starting. 38 * <li>{@code path} - The base path on the server for the WebDriver wire 39 * protocol (e.g. '/wd/hub'). Defaults to '/'. 40 * <li>{@code env} - The environment variables that should be visible to the 41 * server process. Defaults to inheriting the current process's 42 * environment. 43 * <li>{@code stdio} - IO configuration for the spawned server process. For 44 * more information, refer to the documentation of 45 * {@code child_process.spawn}. 46 * </ul> 47 * 48 * @typedef {{ 49 * port: (number|!webdriver.promise.Promise.<number>), 50 * args: !(Array.<string>|webdriver.promise.Promise.<!Array.<string>>), 51 * path: (string|undefined), 52 * env: (!Object.<string, string>|undefined), 53 * stdio: (string|!Array.<string|number|!Stream|null|undefined>|undefined) 54 * }} 55 */ 56 var ServiceOptions; 57 58 59 /** 60 * Manages the life and death of a native executable WebDriver server. 61 * 62 * <p>It is expected that the driver server implements the 63 * <a href="http://code.google.com/p/selenium/wiki/JsonWireProtocol">WebDriver 64 * Wire Protocol</a>. Furthermore, the managed server should support multiple 65 * concurrent sessions, so that this class may be reused for multiple clients. 66 * 67 * @param {string} executable Path to the executable to run. 68 * @param {!ServiceOptions} options Configuration options for the service. 69 * @constructor 70 */ 71 function DriverService(executable, options) { 72 73 /** @private {string} */ 74 this.executable_ = executable; 75 76 /** @private {(number|!webdriver.promise.Promise.<number>)} */ 77 this.port_ = options.port; 78 79 /** 80 * @private {!(Array.<string>|webdriver.promise.Promise.<!Array.<string>>)} 81 */ 82 this.args_ = options.args; 83 84 /** @private {string} */ 85 this.path_ = options.path || '/'; 86 87 /** @private {!Object.<string, string>} */ 88 this.env_ = options.env || process.env; 89 90 /** @private {(string|!Array.<string|number|!Stream|null|undefined>)} */ 91 this.stdio_ = options.stdio || 'ignore'; 92 } 93 94 95 /** 96 * The default amount of time, in milliseconds, to wait for the server to 97 * start. 98 * @type {number} 99 */ 100 DriverService.DEFAULT_START_TIMEOUT_MS = 30 * 1000; 101 102 103 /** @private {child_process.ChildProcess} */ 104 DriverService.prototype.process_ = null; 105 106 107 /** 108 * Promise that resolves to the server's address or null if the server has not 109 * been started. 110 * @private {webdriver.promise.Promise.<string>} 111 */ 112 DriverService.prototype.address_ = null; 113 114 115 /** 116 * Promise that tracks the status of shutting down the server, or null if the 117 * server is not currently shutting down. 118 * @private {webdriver.promise.Promise} 119 */ 120 DriverService.prototype.shutdownHook_ = null; 121 122 123 /** 124 * @return {!webdriver.promise.Promise.<string>} A promise that resolves to 125 * the server's address. 126 * @throws {Error} If the server has not been started. 127 */ 128 DriverService.prototype.address = function() { 129 if (this.address_) { 130 return this.address_; 131 } 132 throw Error('Server has not been started.'); 133 }; 134 135 136 /** 137 * @return {boolean} Whether the underlying service process is running. 138 */ 139 DriverService.prototype.isRunning = function() { 140 return !!this.address_; 141 }; 142 143 144 /** 145 * Starts the server if it is not already running. 146 * @param {number=} opt_timeoutMs How long to wait, in milliseconds, for the 147 * server to start accepting requests. Defaults to 30 seconds. 148 * @return {!webdriver.promise.Promise.<string>} A promise that will resolve 149 * to the server's base URL when it has started accepting requests. If the 150 * timeout expires before the server has started, the promise will be 151 * rejected. 152 */ 153 DriverService.prototype.start = function(opt_timeoutMs) { 154 if (this.address_) { 155 return this.address_; 156 } 157 158 var timeout = opt_timeoutMs || DriverService.DEFAULT_START_TIMEOUT_MS; 159 160 var self = this; 161 this.address_ = promise.defer(); 162 this.address_.fulfill(promise.when(this.port_, function(port) { 163 if (port <= 0) { 164 throw Error('Port must be > 0: ' + port); 165 } 166 return promise.when(self.args_, function(args) { 167 self.process_ = spawn(self.executable_, args, { 168 env: self.env_, 169 stdio: self.stdio_ 170 }).once('exit', onServerExit); 171 172 // This process should not wait on the spawned child, however, we do 173 // want to ensure the child is killed when this process exits. 174 self.process_.unref(); 175 process.once('exit', killServer); 176 177 var serverUrl = url.format({ 178 protocol: 'http', 179 hostname: net.getAddress() || net.getLoopbackAddress(), 180 port: port, 181 pathname: self.path_ 182 }); 183 184 return httpUtil.waitForServer(serverUrl, timeout).then(function() { 185 return serverUrl; 186 }); 187 }); 188 })); 189 190 return this.address_; 191 192 function onServerExit(code, signal) { 193 self.address_.reject(code == null ? 194 Error('Server was killed with ' + signal) : 195 Error('Server exited with ' + code)); 196 197 if (self.shutdownHook_) { 198 self.shutdownHook_.fulfill(); 199 } 200 201 self.shutdownHook_ = null; 202 self.address_ = null; 203 self.process_ = null; 204 process.removeListener('exit', killServer); 205 } 206 207 function killServer() { 208 process.removeListener('exit', killServer); 209 self.process_ && self.process_.kill('SIGTERM'); 210 } 211 }; 212 213 214 /** 215 * Stops the service if it is not currently running. This function will kill 216 * the server immediately. To synchronize with the active control flow, use 217 * {@link #stop()}. 218 * @return {!webdriver.promise.Promise} A promise that will be resolved when 219 * the server has been stopped. 220 */ 221 DriverService.prototype.kill = function() { 222 if (!this.address_) { 223 return promise.fulfilled(); // Not currently running. 224 } 225 226 if (!this.shutdownHook_) { 227 // No process: still starting; wait on address. 228 // Otherwise, kill the process now. Exit handler will resolve the 229 // shutdown hook. 230 if (this.process_) { 231 this.shutdownHook_ = promise.defer(); 232 this.process_.kill('SIGTERM'); 233 } else { 234 var self = this; 235 this.shutdownHook_ = this.address_.thenFinally(function() { 236 self.process_ && self.process_.kill('SIGTERM'); 237 }); 238 } 239 } 240 241 return this.shutdownHook_; 242 }; 243 244 245 /** 246 * Schedules a task in the current control flow to stop the server if it is 247 * currently running. 248 * @return {!webdriver.promise.Promise} A promise that will be resolved when 249 * the server has been stopped. 250 */ 251 DriverService.prototype.stop = function() { 252 return promise.controlFlow().execute(this.kill.bind(this)); 253 }; 254 255 256 257 /** 258 * Manages the life and death of the Selenium standalone server. The server 259 * may be obtained from https://code.google.com/p/selenium/downloads/list. 260 * @param {string} jar Path to the Selenium server jar. 261 * @param {!SeleniumServer.Options} options Configuration options for the 262 * server. 263 * @throws {Error} If an invalid port is specified. 264 * @constructor 265 * @extends {DriverService} 266 */ 267 function SeleniumServer(jar, options) { 268 if (options.port < 0) 269 throw Error('Port must be >= 0: ' + options.port); 270 271 var port = options.port || portprober.findFreePort(); 272 var args = promise.when(options.jvmArgs || [], function(jvmArgs) { 273 return promise.when(options.args || [], function(args) { 274 return promise.when(port, function(port) { 275 return jvmArgs.concat(['-jar', jar, '-port', port]).concat(args); 276 }); 277 }); 278 }); 279 280 DriverService.call(this, 'java', { 281 port: port, 282 args: args, 283 path: '/wd/hub', 284 env: options.env, 285 stdio: options.stdio 286 }); 287 } 288 util.inherits(SeleniumServer, DriverService); 289 290 291 /** 292 * Options for the Selenium server: 293 * <ul> 294 * <li>{@code port} - The port to start the server on (must be > 0). If the 295 * port is provided as a promise, the service will wait for the promise to 296 * resolve before starting. 297 * <li>{@code args} - The arguments to pass to the service. If a promise is 298 * provided, the service will wait for it to resolve before starting. 299 * <li>{@code jvmArgs} - The arguments to pass to the JVM. If a promise is 300 * provided, the service will wait for it to resolve before starting. 301 * <li>{@code env} - The environment variables that should be visible to the 302 * server process. Defaults to inheriting the current process's 303 * environment. 304 * <li>{@code stdio} - IO configuration for the spawned server process. For 305 * more information, refer to the documentation of 306 * {@code child_process.spawn}. 307 * </ul> 308 * 309 * @typedef {{ 310 * port: (number|!webdriver.promise.Promise.<number>), 311 * args: !(Array.<string>|webdriver.promise.Promise.<!Array.<string>>), 312 * jvmArgs: (!Array.<string>| 313 * !webdriver.promise.Promise.<!Array.<string>>| 314 * undefined), 315 * env: (!Object.<string, string>|undefined), 316 * stdio: (string|!Array.<string|number|!Stream|null|undefined>|undefined) 317 * }} 318 */ 319 SeleniumServer.Options; 320 321 322 // PUBLIC API 323 324 exports.DriverService = DriverService; 325 exports.SeleniumServer = SeleniumServer;
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
+index.js 1 // Copyright 2013 Software Freedom Conservancy 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 'use strict'; 16 17 var spawn = require('child_process').spawn, 18 os = require('os'), 19 path = require('path'), 20 url = require('url'), 21 util = require('util'); 22 23 var promise = require('../').promise, 24 httpUtil = require('../http/util'), 25 net = require('../net'), 26 portprober = require('../net/portprober'); 27 28 29 30 /** 31 * Configuration options for a DriverService instance. 32 * <ul> 33 * <li>{@code port} - The port to start the server on (must be > 0). If the 34 * port is provided as a promise, the service will wait for the promise to 35 * resolve before starting. 36 * <li>{@code args} - The arguments to pass to the service. If a promise is 37 * provided, the service will wait for it to resolve before starting. 38 * <li>{@code path} - The base path on the server for the WebDriver wire 39 * protocol (e.g. '/wd/hub'). Defaults to '/'. 40 * <li>{@code env} - The environment variables that should be visible to the 41 * server process. Defaults to inheriting the current process's 42 * environment. 43 * <li>{@code stdio} - IO configuration for the spawned server process. For 44 * more information, refer to the documentation of 45 * {@code child_process.spawn}. 46 * </ul> 47 * 48 * @typedef {{ 49 * port: (number|!webdriver.promise.Promise.<number>), 50 * args: !(Array.<string>|webdriver.promise.Promise.<!Array.<string>>), 51 * path: (string|undefined), 52 * env: (!Object.<string, string>|undefined), 53 * stdio: (string|!Array.<string|number|!Stream|null|undefined>|undefined) 54 * }} 55 */ 56 var ServiceOptions; 57 58 59 /** 60 * Manages the life and death of a native executable WebDriver server. 61 * 62 * <p>It is expected that the driver server implements the 63 * <a href="http://code.google.com/p/selenium/wiki/JsonWireProtocol">WebDriver 64 * Wire Protocol</a>. Furthermore, the managed server should support multiple 65 * concurrent sessions, so that this class may be reused for multiple clients. 66 * 67 * @param {string} executable Path to the executable to run. 68 * @param {!ServiceOptions} options Configuration options for the service. 69 * @constructor 70 */ 71 function DriverService(executable, options) { 72 73 /** @private {string} */ 74 this.executable_ = executable; 75 76 /** @private {(number|!webdriver.promise.Promise.<number>)} */ 77 this.port_ = options.port; 78 79 /** 80 * @private {!(Array.<string>|webdriver.promise.Promise.<!Array.<string>>)} 81 */ 82 this.args_ = options.args; 83 84 /** @private {string} */ 85 this.path_ = options.path || '/'; 86 87 /** @private {!Object.<string, string>} */ 88 this.env_ = options.env || process.env; 89 90 /** @private {(string|!Array.<string|number|!Stream|null|undefined>)} */ 91 this.stdio_ = options.stdio || 'ignore'; 92 } 93 94 95 /** 96 * The default amount of time, in milliseconds, to wait for the server to 97 * start. 98 * @type {number} 99 */ 100 DriverService.DEFAULT_START_TIMEOUT_MS = 30 * 1000; 101 102 103 /** @private {child_process.ChildProcess} */ 104 DriverService.prototype.process_ = null; 105 106 107 /** 108 * Promise that resolves to the server's address or null if the server has not 109 * been started. 110 * @private {webdriver.promise.Promise.<string>} 111 */ 112 DriverService.prototype.address_ = null; 113 114 115 /** 116 * Promise that tracks the status of shutting down the server, or null if the 117 * server is not currently shutting down. 118 * @private {webdriver.promise.Promise} 119 */ 120 DriverService.prototype.shutdownHook_ = null; 121 122 123 /** 124 * @return {!webdriver.promise.Promise.<string>} A promise that resolves to 125 * the server's address. 126 * @throws {Error} If the server has not been started. 127 */ 128 DriverService.prototype.address = function() { 129 if (this.address_) { 130 return this.address_; 131 } 132 throw Error('Server has not been started.'); 133 }; 134 135 136 /** 137 * @return {boolean} Whether the underlying service process is running. 138 */ 139 DriverService.prototype.isRunning = function() { 140 return !!this.address_; 141 }; 142 143 144 /** 145 * Starts the server if it is not already running. 146 * @param {number=} opt_timeoutMs How long to wait, in milliseconds, for the 147 * server to start accepting requests. Defaults to 30 seconds. 148 * @return {!webdriver.promise.Promise.<string>} A promise that will resolve 149 * to the server's base URL when it has started accepting requests. If the 150 * timeout expires before the server has started, the promise will be 151 * rejected. 152 */ 153 DriverService.prototype.start = function(opt_timeoutMs) { 154 if (this.address_) { 155 return this.address_; 156 } 157 158 var timeout = opt_timeoutMs || DriverService.DEFAULT_START_TIMEOUT_MS; 159 160 var self = this; 161 this.address_ = promise.defer(); 162 this.address_.fulfill(promise.when(this.port_, function(port) { 163 if (port <= 0) { 164 throw Error('Port must be > 0: ' + port); 165 } 166 return promise.when(self.args_, function(args) { 167 self.process_ = spawn(self.executable_, args, { 168 env: self.env_, 169 stdio: self.stdio_ 170 }).once('exit', onServerExit); 171 172 // This process should not wait on the spawned child, however, we do 173 // want to ensure the child is killed when this process exits. 174 self.process_.unref(); 175 process.once('exit', killServer); 176 177 var serverUrl = url.format({ 178 protocol: 'http', 179 hostname: net.getAddress() || net.getLoopbackAddress(), 180 port: port, 181 pathname: self.path_ 182 }); 183 184 return httpUtil.waitForServer(serverUrl, timeout).then(function() { 185 return serverUrl; 186 }); 187 }); 188 })); 189 190 return this.address_; 191 192 function onServerExit(code, signal) { 193 self.address_.reject(code == null ? 194 Error('Server was killed with ' + signal) : 195 Error('Server exited with ' + code)); 196 197 if (self.shutdownHook_) { 198 self.shutdownHook_.fulfill(); 199 } 200 201 self.shutdownHook_ = null; 202 self.address_ = null; 203 self.process_ = null; 204 process.removeListener('exit', killServer); 205 } 206 207 function killServer() { 208 process.removeListener('exit', killServer); 209 self.process_ && self.process_.kill('SIGTERM'); 210 } 211 }; 212 213 214 /** 215 * Stops the service if it is not currently running. This function will kill 216 * the server immediately. To synchronize with the active control flow, use 217 * {@link #stop()}. 218 * @return {!webdriver.promise.Promise} A promise that will be resolved when 219 * the server has been stopped. 220 */ 221 DriverService.prototype.kill = function() { 222 if (!this.address_) { 223 return promise.fulfilled(); // Not currently running. 224 } 225 226 if (!this.shutdownHook_) { 227 // No process: still starting; wait on address. 228 // Otherwise, kill the process now. Exit handler will resolve the 229 // shutdown hook. 230 if (this.process_) { 231 this.shutdownHook_ = promise.defer(); 232 this.process_.kill('SIGTERM'); 233 } else { 234 var self = this; 235 this.shutdownHook_ = this.address_.thenFinally(function() { 236 self.process_ && self.process_.kill('SIGTERM'); 237 }); 238 } 239 } 240 241 return this.shutdownHook_; 242 }; 243 244 245 /** 246 * Schedules a task in the current control flow to stop the server if it is 247 * currently running. 248 * @return {!webdriver.promise.Promise} A promise that will be resolved when 249 * the server has been stopped. 250 */ 251 DriverService.prototype.stop = function() { 252 return promise.controlFlow().execute(this.kill.bind(this)); 253 }; 254 255 256 257 /** 258 * Manages the life and death of the Selenium standalone server. The server 259 * may be obtained from http://selenium-release.storage.googleapis.com/index.html. 260 * @param {string} jar Path to the Selenium server jar. 261 * @param {!SeleniumServer.Options} options Configuration options for the 262 * server. 263 * @throws {Error} If an invalid port is specified. 264 * @constructor 265 * @extends {DriverService} 266 */ 267 function SeleniumServer(jar, options) { 268 if (options.port < 0) 269 throw Error('Port must be >= 0: ' + options.port); 270 271 var port = options.port || portprober.findFreePort(); 272 var args = promise.when(options.jvmArgs || [], function(jvmArgs) { 273 return promise.when(options.args || [], function(args) { 274 return promise.when(port, function(port) { 275 return jvmArgs.concat(['-jar', jar, '-port', port]).concat(args); 276 }); 277 }); 278 }); 279 280 DriverService.call(this, 'java', { 281 port: port, 282 args: args, 283 path: '/wd/hub', 284 env: options.env, 285 stdio: options.stdio 286 }); 287 } 288 util.inherits(SeleniumServer, DriverService); 289 290 291 /** 292 * Options for the Selenium server: 293 * <ul> 294 * <li>{@code port} - The port to start the server on (must be > 0). If the 295 * port is provided as a promise, the service will wait for the promise to 296 * resolve before starting. 297 * <li>{@code args} - The arguments to pass to the service. If a promise is 298 * provided, the service will wait for it to resolve before starting. 299 * <li>{@code jvmArgs} - The arguments to pass to the JVM. If a promise is 300 * provided, the service will wait for it to resolve before starting. 301 * <li>{@code env} - The environment variables that should be visible to the 302 * server process. Defaults to inheriting the current process's 303 * environment. 304 * <li>{@code stdio} - IO configuration for the spawned server process. For 305 * more information, refer to the documentation of 306 * {@code child_process.spawn}. 307 * </ul> 308 * 309 * @typedef {{ 310 * port: (number|!webdriver.promise.Promise.<number>), 311 * args: !(Array.<string>|webdriver.promise.Promise.<!Array.<string>>), 312 * jvmArgs: (!Array.<string>| 313 * !webdriver.promise.Promise.<!Array.<string>>| 314 * undefined), 315 * env: (!Object.<string, string>|undefined), 316 * stdio: (string|!Array.<string|number|!Stream|null|undefined>|undefined) 317 * }} 318 */ 319 SeleniumServer.Options; 320 321 322 // PUBLIC API 323 324 exports.DriverService = DriverService; 325 exports.SeleniumServer = SeleniumServer;
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
diff --git a/docs/api/javascript/source/testing/index.js.src.html b/docs/api/javascript/source/testing/index.js.src.html
index 6457f7a8d2a40..50496090275b4 100644
--- a/docs/api/javascript/source/testing/index.js.src.html
+++ b/docs/api/javascript/source/testing/index.js.src.html
@@ -1 +1 @@
-index.js 1 // Copyright 2013 Selenium committers 2 // Copyright 2013 Software Freedom Conservancy 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 /** 17 * @fileoverview Provides wrappers around the following global functions from 18 * <a href="http://visionmedia.github.io/mocha/">Mocha's BDD interface</a>: 19 * <ul> 20 * <li>after 21 * <li>afterEach 22 * <li>before 23 * <li>beforeEach 24 * <li>it 25 * <li>it.only 26 * <li>it.skip 27 * <li>xit 28 * </ul> 29 * 30 * <p>The provided wrappers leverage the webdriver.promise.ControlFlow to 31 * simplify writing asynchronous tests: 32 * <pre><code> 33 * var webdriver = require('selenium-webdriver'), 34 * remote = require('selenium-webdriver/remote'), 35 * test = require('selenium-webdriver/testing'); 36 * 37 * test.describe('Google Search', function() { 38 * var driver, server; 39 * 40 * test.before(function() { 41 * server = new remote.SeleniumServer({ 42 * jar: 'path/to/selenium-server-standalone.jar' 43 * }); 44 * server.start(); 45 * 46 * driver = new webdriver.Builder(). 47 * withCapabilities({'browserName': 'firefox'}). 48 * usingServer(server.address()). 49 * build(); 50 * }); 51 * 52 * test.after(function() { 53 * driver.quit(); 54 * server.stop(); 55 * }); 56 * 57 * test.it('should append query to title', function() { 58 * driver.get('http://www.google.com'); 59 * driver.findElement(webdriver.By.name('q')).sendKeys('webdriver'); 60 * driver.findElement(webdriver.By.name('btnG')).click(); 61 * driver.wait(function() { 62 * return driver.getTitle().then(function(title) { 63 * return 'webdriver - Google Search' === title; 64 * }); 65 * }, 1000, 'Waiting for title to update'); 66 * }); 67 * }); 68 * </code></pre> 69 * 70 * <p>You may conditionally suppress a test function using the exported 71 * "ignore" function. If the provided predicate returns true, the attached 72 * test case will be skipped: 73 * <pre><code> 74 * test.ignore(maybe()).it('is flaky', function() { 75 * if (Math.random() < 0.5) throw Error(); 76 * }); 77 * 78 * function maybe() { return Math.random() < 0.5; } 79 * </code></pre> 80 */ 81 82 var flow = require('..').promise.controlFlow(); 83 84 85 /** 86 * Wraps a function so that all passed arguments are ignored. 87 * @param {!Function} fn The function to wrap. 88 * @return {!Function} The wrapped function. 89 */ 90 function seal(fn) { 91 return function() { 92 fn(); 93 }; 94 } 95 96 97 /** 98 * Wraps a function on Mocha's BDD interface so it runs inside a 99 * webdriver.promise.ControlFlow and waits for the flow to complete before 100 * continuing. 101 * @param {!Function} globalFn The function to wrap. 102 * @return {!Function} The new function. 103 */ 104 function wrapped(globalFn) { 105 return function() { 106 switch (arguments.length) { 107 case 1: 108 globalFn(asyncTestFn(arguments[0])); 109 break; 110 111 case 2: 112 globalFn(arguments[0], asyncTestFn(arguments[1])); 113 break; 114 115 default: 116 throw Error('Invalid # arguments: ' + arguments.length); 117 } 118 }; 119 120 function asyncTestFn(fn) { 121 return function(done) { 122 this.timeout(0); 123 flow.execute(fn).then(seal(done), done); 124 }; 125 } 126 } 127 128 129 /** 130 * Ignores the test chained to this function if the provided predicate returns 131 * true. 132 * @param {function(): boolean} predicateFn A predicate to call to determine 133 * if the test should be suppressed. This function MUST be synchronous. 134 * @return {!Object} An object with wrapped versions of {@link #it()} and 135 * {@link #describe()} that ignore tests as indicated by the predicate. 136 */ 137 function ignore(predicateFn) { 138 var describe = wrap(exports.xdescribe, exports.describe); 139 describe.only = wrap(exports.xdescribe, exports.describe.only); 140 141 var it = wrap(exports.xit, exports.it); 142 it.only = wrap(exports.xit, exports.it.only); 143 144 return { 145 describe: describe, 146 it: it 147 }; 148 149 function wrap(onSkip, onRun) { 150 return function(title, fn) { 151 if (predicateFn()) { 152 onSkip(title, fn); 153 } else { 154 onRun(title, fn); 155 } 156 }; 157 } 158 } 159 160 161 // PUBLIC API 162 163 /** 164 * Registers a new test suite. 165 * @param {string} name The suite name. 166 * @param {function()=} fn The suite function, or {@code undefined} to define 167 * a pending test suite. 168 */ 169 exports.describe = global.describe; 170 171 /** 172 * Defines a suppressed test suite. 173 * @param {string} name The suite name. 174 * @param {function()=} fn The suite function, or {@code undefined} to define 175 * a pending test suite. 176 */ 177 exports.xdescribe = global.xdescribe; 178 exports.describe.skip = global.describe.skip; 179 180 /** 181 * Register a function to call after the current suite finishes. 182 * @param {function()} fn . 183 */ 184 exports.after = wrapped(global.after); 185 186 /** 187 * Register a function to call after each test in a suite. 188 * @param {function()} fn . 189 */ 190 exports.afterEach = wrapped(global.afterEach); 191 192 /** 193 * Register a function to call before the current suite starts. 194 * @param {function()} fn . 195 */ 196 exports.before = wrapped(global.before); 197 198 /** 199 * Register a function to call before each test in a suite. 200 * @param {function()} fn . 201 */ 202 exports.beforeEach = wrapped(global.beforeEach); 203 204 /** 205 * Add a test to the current suite. 206 * @param {string} name The test name. 207 * @param {function()=} fn The test function, or {@code undefined} to define 208 * a pending test case. 209 */ 210 exports.it = wrapped(global.it); 211 212 /** 213 * An alias for {@link #it()} that flags the test as the only one that should 214 * be run within the current suite. 215 * @param {string} name The test name. 216 * @param {function()=} fn The test function, or {@code undefined} to define 217 * a pending test case. 218 */ 219 exports.iit = exports.it.only = wrapped(global.it.only); 220 221 /** 222 * Adds a test to the current suite while suppressing it so it is not run. 223 * @param {string} name The test name. 224 * @param {function()=} fn The test function, or {@code undefined} to define 225 * a pending test case. 226 */ 227 exports.xit = exports.it.skip = wrapped(global.xit); 228 229 exports.ignore = ignore;
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
+index.js 1 // Copyright 2013 Selenium committers 2 // Copyright 2013 Software Freedom Conservancy 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 /** 17 * @fileoverview Provides wrappers around the following global functions from 18 * <a href="http://visionmedia.github.io/mocha/">Mocha's BDD interface</a>: 19 * <ul> 20 * <li>after 21 * <li>afterEach 22 * <li>before 23 * <li>beforeEach 24 * <li>it 25 * <li>it.only 26 * <li>it.skip 27 * <li>xit 28 * </ul> 29 * 30 * <p>The provided wrappers leverage the webdriver.promise.ControlFlow to 31 * simplify writing asynchronous tests: 32 * <pre><code> 33 * var webdriver = require('selenium-webdriver'), 34 * remote = require('selenium-webdriver/remote'), 35 * test = require('selenium-webdriver/testing'); 36 * 37 * test.describe('Google Search', function() { 38 * var driver, server; 39 * 40 * test.before(function() { 41 * server = new remote.SeleniumServer({ 42 * jar: 'path/to/selenium-server-standalone.jar' 43 * }); 44 * server.start(); 45 * 46 * driver = new webdriver.Builder(). 47 * withCapabilities({'browserName': 'firefox'}). 48 * usingServer(server.address()). 49 * build(); 50 * }); 51 * 52 * test.after(function() { 53 * driver.quit(); 54 * server.stop(); 55 * }); 56 * 57 * test.it('should append query to title', function() { 58 * driver.get('http://www.google.com'); 59 * driver.findElement(webdriver.By.name('q')).sendKeys('webdriver'); 60 * driver.findElement(webdriver.By.name('btnG')).click(); 61 * driver.wait(function() { 62 * return driver.getTitle().then(function(title) { 63 * return 'webdriver - Google Search' === title; 64 * }); 65 * }, 1000, 'Waiting for title to update'); 66 * }); 67 * }); 68 * </code></pre> 69 * 70 * <p>You may conditionally suppress a test function using the exported 71 * "ignore" function. If the provided predicate returns true, the attached 72 * test case will be skipped: 73 * <pre><code> 74 * test.ignore(maybe()).it('is flaky', function() { 75 * if (Math.random() < 0.5) throw Error(); 76 * }); 77 * 78 * function maybe() { return Math.random() < 0.5; } 79 * </code></pre> 80 */ 81 82 var flow = require('..').promise.controlFlow(); 83 84 85 /** 86 * Wraps a function so that all passed arguments are ignored. 87 * @param {!Function} fn The function to wrap. 88 * @return {!Function} The wrapped function. 89 */ 90 function seal(fn) { 91 return function() { 92 fn(); 93 }; 94 } 95 96 97 /** 98 * Wraps a function on Mocha's BDD interface so it runs inside a 99 * webdriver.promise.ControlFlow and waits for the flow to complete before 100 * continuing. 101 * @param {!Function} globalFn The function to wrap. 102 * @return {!Function} The new function. 103 */ 104 function wrapped(globalFn) { 105 return function() { 106 switch (arguments.length) { 107 case 1: 108 globalFn(asyncTestFn(arguments[0])); 109 break; 110 111 case 2: 112 globalFn(arguments[0], asyncTestFn(arguments[1])); 113 break; 114 115 default: 116 throw Error('Invalid # arguments: ' + arguments.length); 117 } 118 }; 119 120 function asyncTestFn(fn) { 121 return function(done) { 122 this.timeout(0); 123 var timeout = this.timeout; 124 this.timeout = undefined; // Do not let tests change the timeout. 125 try { 126 flow.execute(fn.bind(this)).then(seal(done), done); 127 } finally { 128 this.timeout = timeout; 129 } 130 }; 131 } 132 } 133 134 135 /** 136 * Ignores the test chained to this function if the provided predicate returns 137 * true. 138 * @param {function(): boolean} predicateFn A predicate to call to determine 139 * if the test should be suppressed. This function MUST be synchronous. 140 * @return {!Object} An object with wrapped versions of {@link #it()} and 141 * {@link #describe()} that ignore tests as indicated by the predicate. 142 */ 143 function ignore(predicateFn) { 144 var describe = wrap(exports.xdescribe, exports.describe); 145 describe.only = wrap(exports.xdescribe, exports.describe.only); 146 147 var it = wrap(exports.xit, exports.it); 148 it.only = wrap(exports.xit, exports.it.only); 149 150 return { 151 describe: describe, 152 it: it 153 }; 154 155 function wrap(onSkip, onRun) { 156 return function(title, fn) { 157 if (predicateFn()) { 158 onSkip(title, fn); 159 } else { 160 onRun(title, fn); 161 } 162 }; 163 } 164 } 165 166 167 // PUBLIC API 168 169 /** 170 * Registers a new test suite. 171 * @param {string} name The suite name. 172 * @param {function()=} fn The suite function, or {@code undefined} to define 173 * a pending test suite. 174 */ 175 exports.describe = global.describe; 176 177 /** 178 * Defines a suppressed test suite. 179 * @param {string} name The suite name. 180 * @param {function()=} fn The suite function, or {@code undefined} to define 181 * a pending test suite. 182 */ 183 exports.xdescribe = global.xdescribe; 184 exports.describe.skip = global.describe.skip; 185 186 /** 187 * Register a function to call after the current suite finishes. 188 * @param {function()} fn . 189 */ 190 exports.after = wrapped(global.after); 191 192 /** 193 * Register a function to call after each test in a suite. 194 * @param {function()} fn . 195 */ 196 exports.afterEach = wrapped(global.afterEach); 197 198 /** 199 * Register a function to call before the current suite starts. 200 * @param {function()} fn . 201 */ 202 exports.before = wrapped(global.before); 203 204 /** 205 * Register a function to call before each test in a suite. 206 * @param {function()} fn . 207 */ 208 exports.beforeEach = wrapped(global.beforeEach); 209 210 /** 211 * Add a test to the current suite. 212 * @param {string} name The test name. 213 * @param {function()=} fn The test function, or {@code undefined} to define 214 * a pending test case. 215 */ 216 exports.it = wrapped(global.it); 217 218 /** 219 * An alias for {@link #it()} that flags the test as the only one that should 220 * be run within the current suite. 221 * @param {string} name The test name. 222 * @param {function()=} fn The test function, or {@code undefined} to define 223 * a pending test case. 224 */ 225 exports.iit = exports.it.only = wrapped(global.it.only); 226 227 /** 228 * Adds a test to the current suite while suppressing it so it is not run. 229 * @param {string} name The test name. 230 * @param {function()=} fn The test function, or {@code undefined} to define 231 * a pending test case. 232 */ 233 exports.xit = exports.it.skip = wrapped(global.xit); 234 235 exports.ignore = ignore;
Overview Types No data
Modules No data
Files No data
License
\ No newline at end of file
diff --git a/docs/api/javascript/types.js b/docs/api/javascript/types.js
index 79c7db468a854..88ff729aabe45 100644
--- a/docs/api/javascript/types.js
+++ b/docs/api/javascript/types.js
@@ -1 +1 @@
-var TYPES = {"files":[{"name":"_base.js","href":"source/_base.js.src.html"},{"name":"builder.js","href":"source/builder.js.src.html"},{"name":"chrome.js","href":"source/chrome.js.src.html"},{"name":"error.js","href":"source/error.js.src.html"},{"name":"executors.js","href":"source/executors.js.src.html"},{"name":"http/index.js","href":"source/http/index.js.src.html"},{"name":"http/util.js","href":"source/http/util.js.src.html"},{"name":"index.js","href":"source/index.js.src.html"},{"name":"io/index.js","href":"source/io/index.js.src.html"},{"name":"lib/atoms/error.js","href":"source/lib/atoms/error.js.src.html"},{"name":"lib/atoms/json.js","href":"source/lib/atoms/json.js.src.html"},{"name":"lib/atoms/response.js","href":"source/lib/atoms/response.js.src.html"},{"name":"lib/atoms/userAgent.js","href":"source/lib/atoms/userAgent.js.src.html"},{"name":"lib/goog/array/array.js","href":"source/lib/goog/array/array.js.src.html"},{"name":"lib/goog/asserts/asserts.js","href":"source/lib/goog/asserts/asserts.js.src.html"},{"name":"lib/goog/base.js","href":"source/lib/goog/base.js.src.html"},{"name":"lib/goog/debug/error.js","href":"source/lib/goog/debug/error.js.src.html"},{"name":"lib/goog/deps.js","href":"source/lib/goog/deps.js.src.html"},{"name":"lib/goog/iter/iter.js","href":"source/lib/goog/iter/iter.js.src.html"},{"name":"lib/goog/json/json.js","href":"source/lib/goog/json/json.js.src.html"},{"name":"lib/goog/labs/testing/assertthat.js","href":"source/lib/goog/labs/testing/assertthat.js.src.html"},{"name":"lib/goog/labs/testing/logicmatcher.js","href":"source/lib/goog/labs/testing/logicmatcher.js.src.html"},{"name":"lib/goog/labs/testing/matcher.js","href":"source/lib/goog/labs/testing/matcher.js.src.html"},{"name":"lib/goog/labs/testing/numbermatcher.js","href":"source/lib/goog/labs/testing/numbermatcher.js.src.html"},{"name":"lib/goog/labs/testing/objectmatcher.js","href":"source/lib/goog/labs/testing/objectmatcher.js.src.html"},{"name":"lib/goog/labs/testing/stringmatcher.js","href":"source/lib/goog/labs/testing/stringmatcher.js.src.html"},{"name":"lib/goog/net/wrapperxmlhttpfactory.js","href":"source/lib/goog/net/wrapperxmlhttpfactory.js.src.html"},{"name":"lib/goog/net/xmlhttp.js","href":"source/lib/goog/net/xmlhttp.js.src.html"},{"name":"lib/goog/net/xmlhttpfactory.js","href":"source/lib/goog/net/xmlhttpfactory.js.src.html"},{"name":"lib/goog/object/object.js","href":"source/lib/goog/object/object.js.src.html"},{"name":"lib/goog/string/string.js","href":"source/lib/goog/string/string.js.src.html"},{"name":"lib/goog/structs/map.js","href":"source/lib/goog/structs/map.js.src.html"},{"name":"lib/goog/structs/structs.js","href":"source/lib/goog/structs/structs.js.src.html"},{"name":"lib/goog/uri/uri.js","href":"source/lib/goog/uri/uri.js.src.html"},{"name":"lib/goog/uri/utils.js","href":"source/lib/goog/uri/utils.js.src.html"},{"name":"lib/goog/useragent/product.js","href":"source/lib/goog/useragent/product.js.src.html"},{"name":"lib/goog/useragent/product_isversion.js","href":"source/lib/goog/useragent/product_isversion.js.src.html"},{"name":"lib/goog/useragent/useragent.js","href":"source/lib/goog/useragent/useragent.js.src.html"},{"name":"lib/webdriver/abstractbuilder.js","href":"source/lib/webdriver/abstractbuilder.js.src.html"},{"name":"lib/webdriver/actionsequence.js","href":"source/lib/webdriver/actionsequence.js.src.html"},{"name":"lib/webdriver/builder.js","href":"source/lib/webdriver/builder.js.src.html"},{"name":"lib/webdriver/button.js","href":"source/lib/webdriver/button.js.src.html"},{"name":"lib/webdriver/capabilities.js","href":"source/lib/webdriver/capabilities.js.src.html"},{"name":"lib/webdriver/command.js","href":"source/lib/webdriver/command.js.src.html"},{"name":"lib/webdriver/events.js","href":"source/lib/webdriver/events.js.src.html"},{"name":"lib/webdriver/firefoxdomexecutor.js","href":"source/lib/webdriver/firefoxdomexecutor.js.src.html"},{"name":"lib/webdriver/http/corsclient.js","href":"source/lib/webdriver/http/corsclient.js.src.html"},{"name":"lib/webdriver/http/http.js","href":"source/lib/webdriver/http/http.js.src.html"},{"name":"lib/webdriver/http/xhrclient.js","href":"source/lib/webdriver/http/xhrclient.js.src.html"},{"name":"lib/webdriver/key.js","href":"source/lib/webdriver/key.js.src.html"},{"name":"lib/webdriver/locators.js","href":"source/lib/webdriver/locators.js.src.html"},{"name":"lib/webdriver/logging.js","href":"source/lib/webdriver/logging.js.src.html"},{"name":"lib/webdriver/process.js","href":"source/lib/webdriver/process.js.src.html"},{"name":"lib/webdriver/promise.js","href":"source/lib/webdriver/promise.js.src.html"},{"name":"lib/webdriver/session.js","href":"source/lib/webdriver/session.js.src.html"},{"name":"lib/webdriver/stacktrace.js","href":"source/lib/webdriver/stacktrace.js.src.html"},{"name":"lib/webdriver/testing/asserts.js","href":"source/lib/webdriver/testing/asserts.js.src.html"},{"name":"lib/webdriver/webdriver.js","href":"source/lib/webdriver/webdriver.js.src.html"},{"name":"net/index.js","href":"source/net/index.js.src.html"},{"name":"net/portprober.js","href":"source/net/portprober.js.src.html"},{"name":"phantomjs.js","href":"source/phantomjs.js.src.html"},{"name":"proxy.js","href":"source/proxy.js.src.html"},{"name":"remote/index.js","href":"source/remote/index.js.src.html"},{"name":"testing/assert.js","href":"source/testing/assert.js.src.html"},{"name":"testing/index.js","href":"source/testing/index.js.src.html"}],"types":[{"isInterface":false,"name":"bot","isTypedef":false,"href":"namespace_bot.html"},{"isInterface":false,"name":"bot.Error","isTypedef":false,"href":"class_bot_Error.html"},{"isInterface":false,"name":"bot.Error.State","isTypedef":false,"href":"enum_bot_Error_State.html"},{"isInterface":false,"name":"bot.ErrorCode","isTypedef":false,"href":"enum_bot_ErrorCode.html"},{"isInterface":false,"name":"bot.json","isTypedef":false,"href":"namespace_bot_json.html"},{"isInterface":false,"name":"bot.response","isTypedef":false,"href":"namespace_bot_response.html"},{"name":"bot.response.ResponseObject","isTypedef":true,"href":"namespace_bot_response.html#bot.response.ResponseObject"},{"isInterface":false,"name":"bot.userAgent","isTypedef":false,"href":"namespace_bot_userAgent.html"},{"isInterface":false,"name":"goog","isTypedef":false,"href":"namespace_goog.html"},{"isInterface":false,"name":"goog.Uri","isTypedef":false,"href":"class_goog_Uri.html"},{"isInterface":false,"name":"goog.Uri.QueryData","isTypedef":false,"href":"class_goog_Uri_QueryData.html"},{"isInterface":false,"name":"goog.array","isTypedef":false,"href":"namespace_goog_array.html"},{"name":"goog.array.ArrayLike","isTypedef":true,"href":"namespace_goog_array.html#goog.array.ArrayLike"},{"isInterface":false,"name":"goog.asserts","isTypedef":false,"href":"namespace_goog_asserts.html"},{"isInterface":false,"name":"goog.asserts.AssertionError","isTypedef":false,"href":"class_goog_asserts_AssertionError.html"},{"isInterface":false,"name":"goog.debug","isTypedef":false,"href":"namespace_goog_debug.html"},{"isInterface":false,"name":"goog.debug.Error","isTypedef":false,"href":"class_goog_debug_Error.html"},{"isInterface":false,"name":"goog.iter","isTypedef":false,"href":"namespace_goog_iter.html"},{"name":"goog.iter.Iterable","isTypedef":true,"href":"namespace_goog_iter.html#goog.iter.Iterable"},{"isInterface":false,"name":"goog.iter.Iterator","isTypedef":false,"href":"class_goog_iter_Iterator.html"},{"isInterface":false,"name":"goog.json","isTypedef":false,"href":"namespace_goog_json.html"},{"name":"goog.json.Replacer","isTypedef":true,"href":"namespace_goog_json.html#goog.json.Replacer"},{"name":"goog.json.Reviver","isTypedef":true,"href":"namespace_goog_json.html#goog.json.Reviver"},{"isInterface":false,"name":"goog.json.Serializer","isTypedef":false,"href":"class_goog_json_Serializer.html"},{"isInterface":false,"name":"goog.labs","isTypedef":false,"href":"namespace_goog_labs.html"},{"isInterface":false,"name":"goog.labs.testing","isTypedef":false,"href":"namespace_goog_labs_testing.html"},{"isInterface":false,"name":"goog.labs.testing.AllOfMatcher","isTypedef":false,"href":"class_goog_labs_testing_AllOfMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.AnyOfMatcher","isTypedef":false,"href":"class_goog_labs_testing_AnyOfMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.CloseToMatcher","isTypedef":false,"href":"class_goog_labs_testing_CloseToMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.ContainsStringMatcher","isTypedef":false,"href":"class_goog_labs_testing_ContainsStringMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.EndsWithMatcher","isTypedef":false,"href":"class_goog_labs_testing_EndsWithMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.EqualToIgnoringWhitespaceMatcher","isTypedef":false,"href":"class_goog_labs_testing_EqualToIgnoringWhitespaceMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.EqualToMatcher","isTypedef":false,"href":"class_goog_labs_testing_EqualToMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.EqualsMatcher","isTypedef":false,"href":"class_goog_labs_testing_EqualsMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.GreaterThanEqualToMatcher","isTypedef":false,"href":"class_goog_labs_testing_GreaterThanEqualToMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.GreaterThanMatcher","isTypedef":false,"href":"class_goog_labs_testing_GreaterThanMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.HasPropertyMatcher","isTypedef":false,"href":"class_goog_labs_testing_HasPropertyMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.InstanceOfMatcher","isTypedef":false,"href":"class_goog_labs_testing_InstanceOfMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.IsNotMatcher","isTypedef":false,"href":"class_goog_labs_testing_IsNotMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.IsNullMatcher","isTypedef":false,"href":"class_goog_labs_testing_IsNullMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.IsNullOrUndefinedMatcher","isTypedef":false,"href":"class_goog_labs_testing_IsNullOrUndefinedMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.IsUndefinedMatcher","isTypedef":false,"href":"class_goog_labs_testing_IsUndefinedMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.LessThanEqualToMatcher","isTypedef":false,"href":"class_goog_labs_testing_LessThanEqualToMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.LessThanMatcher","isTypedef":false,"href":"class_goog_labs_testing_LessThanMatcher.html"},{"isInterface":true,"name":"goog.labs.testing.Matcher","isTypedef":false,"href":"interface_goog_labs_testing_Matcher.html"},{"isInterface":false,"name":"goog.labs.testing.MatcherError","isTypedef":false,"href":"class_goog_labs_testing_MatcherError.html"},{"isInterface":false,"name":"goog.labs.testing.ObjectEqualsMatcher","isTypedef":false,"href":"class_goog_labs_testing_ObjectEqualsMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.RegexMatcher","isTypedef":false,"href":"class_goog_labs_testing_RegexMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.StartsWithMatcher","isTypedef":false,"href":"class_goog_labs_testing_StartsWithMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.StringContainsInOrderMatcher","isTypedef":false,"href":"class_goog_labs_testing_StringContainsInOrderMatcher.html"},{"isInterface":false,"name":"goog.net","isTypedef":false,"href":"namespace_goog_net.html"},{"isInterface":false,"name":"goog.net.DefaultXmlHttpFactory","isTypedef":false,"href":"class_goog_net_DefaultXmlHttpFactory.html"},{"isInterface":false,"name":"goog.net.WrapperXmlHttpFactory","isTypedef":false,"href":"class_goog_net_WrapperXmlHttpFactory.html"},{"isInterface":false,"name":"goog.net.XmlHttp","isTypedef":false,"href":"namespace_goog_net_XmlHttp.html"},{"isInterface":false,"name":"goog.net.XmlHttp.OptionType","isTypedef":false,"href":"enum_goog_net_XmlHttp_OptionType.html"},{"isInterface":false,"name":"goog.net.XmlHttp.ReadyState","isTypedef":false,"href":"enum_goog_net_XmlHttp_ReadyState.html"},{"isInterface":false,"name":"goog.net.XmlHttpFactory","isTypedef":false,"href":"class_goog_net_XmlHttpFactory.html"},{"isInterface":false,"name":"goog.object","isTypedef":false,"href":"namespace_goog_object.html"},{"isInterface":false,"name":"goog.string","isTypedef":false,"href":"namespace_goog_string.html"},{"isInterface":false,"name":"goog.string.Unicode","isTypedef":false,"href":"enum_goog_string_Unicode.html"},{"isInterface":false,"name":"goog.structs","isTypedef":false,"href":"namespace_goog_structs.html"},{"isInterface":false,"name":"goog.structs.Map","isTypedef":false,"href":"class_goog_structs_Map.html"},{"isInterface":false,"name":"goog.uri","isTypedef":false,"href":"namespace_goog_uri.html"},{"isInterface":false,"name":"goog.uri.utils","isTypedef":false,"href":"namespace_goog_uri_utils.html"},{"name":"goog.uri.utils.QueryArray","isTypedef":true,"href":"namespace_goog_uri_utils.html#goog.uri.utils.QueryArray"},{"name":"goog.uri.utils.QueryValue","isTypedef":true,"href":"namespace_goog_uri_utils.html#goog.uri.utils.QueryValue"},{"isInterface":false,"name":"goog.uri.utils.CharCode_","isTypedef":false,"href":"enum_goog_uri_utils_CharCode_.html"},{"isInterface":false,"name":"goog.uri.utils.ComponentIndex","isTypedef":false,"href":"enum_goog_uri_utils_ComponentIndex.html"},{"isInterface":false,"name":"goog.uri.utils.StandardQueryParam","isTypedef":false,"href":"enum_goog_uri_utils_StandardQueryParam.html"},{"isInterface":false,"name":"goog.userAgent","isTypedef":false,"href":"namespace_goog_userAgent.html"},{"isInterface":false,"name":"goog.userAgent.product","isTypedef":false,"href":"namespace_goog_userAgent_product.html"},{"isInterface":false,"name":"webdriver","isTypedef":false,"href":"namespace_webdriver.html"},{"isInterface":false,"name":"webdriver.AbstractBuilder","isTypedef":false,"href":"class_webdriver_AbstractBuilder.html"},{"isInterface":false,"name":"webdriver.ActionSequence","isTypedef":false,"href":"class_webdriver_ActionSequence.html"},{"isInterface":false,"name":"webdriver.Alert","isTypedef":false,"href":"class_webdriver_Alert.html"},{"isInterface":false,"name":"webdriver.Browser","isTypedef":false,"href":"enum_webdriver_Browser.html"},{"isInterface":false,"name":"webdriver.Builder","isTypedef":false,"href":"class_webdriver_Builder.html"},{"isInterface":false,"name":"webdriver.Button","isTypedef":false,"href":"enum_webdriver_Button.html"},{"isInterface":false,"name":"webdriver.By","isTypedef":false,"href":"namespace_webdriver_By.html"},{"name":"webdriver.By.Hash","isTypedef":true,"href":"namespace_webdriver_By.html#webdriver.By.Hash"},{"isInterface":false,"name":"webdriver.Capabilities","isTypedef":false,"href":"class_webdriver_Capabilities.html"},{"isInterface":false,"name":"webdriver.Capability","isTypedef":false,"href":"enum_webdriver_Capability.html"},{"isInterface":false,"name":"webdriver.Command","isTypedef":false,"href":"class_webdriver_Command.html"},{"isInterface":true,"name":"webdriver.CommandExecutor","isTypedef":false,"href":"interface_webdriver_CommandExecutor.html"},{"isInterface":false,"name":"webdriver.CommandName","isTypedef":false,"href":"enum_webdriver_CommandName.html"},{"isInterface":false,"name":"webdriver.EventEmitter","isTypedef":false,"href":"class_webdriver_EventEmitter.html"},{"isInterface":false,"name":"webdriver.FirefoxDomExecutor","isTypedef":false,"href":"class_webdriver_FirefoxDomExecutor.html"},{"isInterface":false,"name":"webdriver.FirefoxDomExecutor.Attribute_","isTypedef":false,"href":"enum_webdriver_FirefoxDomExecutor_Attribute_.html"},{"isInterface":false,"name":"webdriver.FirefoxDomExecutor.EventType_","isTypedef":false,"href":"enum_webdriver_FirefoxDomExecutor_EventType_.html"},{"isInterface":false,"name":"webdriver.Key","isTypedef":false,"href":"enum_webdriver_Key.html"},{"isInterface":false,"name":"webdriver.Locator","isTypedef":false,"href":"class_webdriver_Locator.html"},{"isInterface":false,"name":"webdriver.Session","isTypedef":false,"href":"class_webdriver_Session.html"},{"isInterface":false,"name":"webdriver.UnhandledAlertError","isTypedef":false,"href":"class_webdriver_UnhandledAlertError.html"},{"isInterface":false,"name":"webdriver.WebDriver","isTypedef":false,"href":"class_webdriver_WebDriver.html"},{"isInterface":false,"name":"webdriver.WebDriver.Logs","isTypedef":false,"href":"class_webdriver_WebDriver_Logs.html"},{"isInterface":false,"name":"webdriver.WebDriver.Navigation","isTypedef":false,"href":"class_webdriver_WebDriver_Navigation.html"},{"isInterface":false,"name":"webdriver.WebDriver.Options","isTypedef":false,"href":"class_webdriver_WebDriver_Options.html"},{"isInterface":false,"name":"webdriver.WebDriver.TargetLocator","isTypedef":false,"href":"class_webdriver_WebDriver_TargetLocator.html"},{"isInterface":false,"name":"webdriver.WebDriver.Timeouts","isTypedef":false,"href":"class_webdriver_WebDriver_Timeouts.html"},{"isInterface":false,"name":"webdriver.WebDriver.Window","isTypedef":false,"href":"class_webdriver_WebDriver_Window.html"},{"isInterface":false,"name":"webdriver.WebElement","isTypedef":false,"href":"class_webdriver_WebElement.html"},{"isInterface":false,"name":"webdriver.http","isTypedef":false,"href":"namespace_webdriver_http.html"},{"isInterface":true,"name":"webdriver.http.Client","isTypedef":false,"href":"interface_webdriver_http_Client.html"},{"isInterface":false,"name":"webdriver.http.CorsClient","isTypedef":false,"href":"class_webdriver_http_CorsClient.html"},{"isInterface":false,"name":"webdriver.http.Executor","isTypedef":false,"href":"class_webdriver_http_Executor.html"},{"isInterface":false,"name":"webdriver.http.Request","isTypedef":false,"href":"class_webdriver_http_Request.html"},{"isInterface":false,"name":"webdriver.http.Response","isTypedef":false,"href":"class_webdriver_http_Response.html"},{"isInterface":false,"name":"webdriver.http.XhrClient","isTypedef":false,"href":"class_webdriver_http_XhrClient.html"},{"isInterface":false,"name":"webdriver.logging","isTypedef":false,"href":"namespace_webdriver_logging.html"},{"name":"webdriver.logging.Preferences","isTypedef":true,"href":"namespace_webdriver_logging.html#webdriver.logging.Preferences"},{"isInterface":false,"name":"webdriver.logging.Entry","isTypedef":false,"href":"class_webdriver_logging_Entry.html"},{"isInterface":false,"name":"webdriver.logging.Level","isTypedef":false,"href":"enum_webdriver_logging_Level.html"},{"isInterface":false,"name":"webdriver.logging.LevelName","isTypedef":false,"href":"enum_webdriver_logging_LevelName.html"},{"isInterface":false,"name":"webdriver.logging.Type","isTypedef":false,"href":"enum_webdriver_logging_Type.html"},{"isInterface":false,"name":"webdriver.process","isTypedef":false,"href":"namespace_webdriver_process.html"},{"isInterface":false,"name":"webdriver.promise","isTypedef":false,"href":"namespace_webdriver_promise.html"},{"isInterface":false,"name":"webdriver.promise.CanceledTaskError_","isTypedef":false,"href":"class_webdriver_promise_CanceledTaskError_.html"},{"isInterface":false,"name":"webdriver.promise.ControlFlow","isTypedef":false,"href":"class_webdriver_promise_ControlFlow.html"},{"name":"webdriver.promise.ControlFlow.Timer","isTypedef":true,"href":"class_webdriver_promise_ControlFlow.html#webdriver.promise.ControlFlow.Timer"},{"isInterface":false,"name":"webdriver.promise.ControlFlow.EventType","isTypedef":false,"href":"enum_webdriver_promise_ControlFlow_EventType.html"},{"isInterface":false,"name":"webdriver.promise.Deferred","isTypedef":false,"href":"class_webdriver_promise_Deferred.html"},{"name":"webdriver.promise.Deferred.Listener_","isTypedef":true,"href":"class_webdriver_promise_Deferred.html#webdriver.promise.Deferred.Listener_"},{"isInterface":false,"name":"webdriver.promise.Deferred.State_","isTypedef":false,"href":"enum_webdriver_promise_Deferred_State_.html"},{"isInterface":false,"name":"webdriver.promise.Frame_","isTypedef":false,"href":"class_webdriver_promise_Frame_.html"},{"isInterface":false,"name":"webdriver.promise.Node_","isTypedef":false,"href":"class_webdriver_promise_Node_.html"},{"isInterface":false,"name":"webdriver.promise.Promise","isTypedef":false,"href":"class_webdriver_promise_Promise.html"},{"isInterface":false,"name":"webdriver.promise.Task_","isTypedef":false,"href":"class_webdriver_promise_Task_.html"},{"isInterface":false,"name":"webdriver.stacktrace","isTypedef":false,"href":"namespace_webdriver_stacktrace.html"},{"isInterface":false,"name":"webdriver.stacktrace.Frame","isTypedef":false,"href":"class_webdriver_stacktrace_Frame.html"},{"isInterface":false,"name":"webdriver.stacktrace.Snapshot","isTypedef":false,"href":"class_webdriver_stacktrace_Snapshot.html"},{"isInterface":false,"name":"webdriver.testing","isTypedef":false,"href":"namespace_webdriver_testing.html"},{"isInterface":false,"name":"webdriver.testing.Assertion","isTypedef":false,"href":"class_webdriver_testing_Assertion.html"},{"isInterface":false,"name":"webdriver.testing.Assertion.DelegatingMatcher_","isTypedef":false,"href":"class_webdriver_testing_Assertion_DelegatingMatcher_.html"},{"isInterface":false,"name":"webdriver.testing.ContainsMatcher","isTypedef":false,"href":"class_webdriver_testing_ContainsMatcher.html"},{"isInterface":false,"name":"webdriver.testing.NegatedAssertion","isTypedef":false,"href":"class_webdriver_testing_NegatedAssertion.html"},{"isInterface":false,"name":"webdriver.testing.assert","isTypedef":false,"href":"module_selenium-webdriver_testing_assert_namespace_dossier$$module__$Users$jleyba$Development$selenium2$build$javascript$node$selenium_webdriver$testing$assert_exports.html"},{"isInterface":false,"name":"webdriver.testing.asserts","isTypedef":false,"href":"namespace_webdriver_testing_asserts.html"}],"modules":[{"name":"selenium-webdriver","types":[{"isInterface":false,"name":"Command","isTypedef":false,"href":"class_webdriver_Command.html"},{"isInterface":false,"name":"Key","isTypedef":false,"href":"enum_webdriver_Key.html"},{"isInterface":false,"name":"EventEmitter","isTypedef":false,"href":"class_webdriver_EventEmitter.html"},{"isInterface":false,"name":"Browser","isTypedef":false,"href":"enum_webdriver_Browser.html"},{"isInterface":false,"name":"ActionSequence","isTypedef":false,"href":"class_webdriver_ActionSequence.html"},{"isInterface":false,"name":"Button","isTypedef":false,"href":"enum_webdriver_Button.html"},{"isInterface":false,"name":"WebElement","isTypedef":false,"href":"class_webdriver_WebElement.html"},{"isInterface":false,"name":"CommandName","isTypedef":false,"href":"enum_webdriver_CommandName.html"},{"isInterface":false,"name":"Capability","isTypedef":false,"href":"enum_webdriver_Capability.html"},{"isInterface":false,"name":"Session","isTypedef":false,"href":"class_webdriver_Session.html"},{"isInterface":false,"name":"Builder","isTypedef":false,"href":"module_selenium-webdriver_class_Builder.html"},{"isInterface":false,"name":"Capabilities","isTypedef":false,"href":"class_webdriver_Capabilities.html"},{"isInterface":false,"name":"WebDriver","isTypedef":false,"href":"class_webdriver_WebDriver.html"}],"href":"module_selenium-webdriver.html"},{"name":"selenium-webdriver/_base","types":[],"href":"module_selenium-webdriver__base.html"},{"name":"selenium-webdriver/builder","types":[{"isInterface":false,"name":"Builder","isTypedef":false,"href":"module_selenium-webdriver_builder_class_Builder.html"}],"href":"module_selenium-webdriver_builder.html"},{"name":"selenium-webdriver/chrome","types":[{"isInterface":false,"name":"ServiceBuilder","isTypedef":false,"href":"module_selenium-webdriver_chrome_class_ServiceBuilder.html"},{"isInterface":false,"name":"Options","isTypedef":false,"href":"module_selenium-webdriver_chrome_class_Options.html"}],"href":"module_selenium-webdriver_chrome.html"},{"name":"selenium-webdriver/error","types":[{"isInterface":false,"name":"ErrorCode","isTypedef":false,"href":"enum_bot_ErrorCode.html"},{"isInterface":false,"name":"Error","isTypedef":false,"href":"class_bot_Error.html"}],"href":"module_selenium-webdriver_error.html"},{"name":"selenium-webdriver/executors","types":[],"href":"module_selenium-webdriver_executors.html"},{"name":"selenium-webdriver/http","types":[{"isInterface":false,"name":"HttpClient","isTypedef":false,"href":"module_selenium-webdriver_http_class_HttpClient.html"},{"isInterface":false,"name":"Response","isTypedef":false,"href":"class_webdriver_http_Response.html"},{"isInterface":false,"name":"Request","isTypedef":false,"href":"class_webdriver_http_Request.html"},{"isInterface":false,"name":"Executor","isTypedef":false,"href":"class_webdriver_http_Executor.html"}],"href":"module_selenium-webdriver_http.html"},{"name":"selenium-webdriver/http/util","types":[],"href":"module_selenium-webdriver_http_util.html"},{"name":"selenium-webdriver/io","types":[],"href":"module_selenium-webdriver_io.html"},{"name":"selenium-webdriver/net","types":[],"href":"module_selenium-webdriver_net.html"},{"name":"selenium-webdriver/net/portprober","types":[],"href":"module_selenium-webdriver_net_portprober.html"},{"name":"selenium-webdriver/phantomjs","types":[],"href":"module_selenium-webdriver_phantomjs.html"},{"name":"selenium-webdriver/proxy","types":[{"isInterface":false,"name":"ProxyConfig","isTypedef":true,"href":"module_selenium-webdriver_proxy_namespace_ProxyConfig.html"}],"href":"module_selenium-webdriver_proxy.html"},{"name":"selenium-webdriver/remote","types":[{"isInterface":false,"name":"DriverService","isTypedef":false,"href":"module_selenium-webdriver_remote_class_DriverService.html"},{"isInterface":false,"name":"SeleniumServer","isTypedef":false,"href":"module_selenium-webdriver_remote_class_SeleniumServer.html"},{"name":"SeleniumServer.Options","isTypedef":true,"href":""},{"isInterface":false,"name":"ServiceOptions","isTypedef":true,"href":"module_selenium-webdriver_remote_namespace_ServiceOptions.html"}],"href":"module_selenium-webdriver_remote.html"},{"name":"selenium-webdriver/testing","types":[],"href":"module_selenium-webdriver_testing.html"},{"name":"selenium-webdriver/testing/assert","types":[],"href":"module_selenium-webdriver_testing_assert.html"}]};
\ No newline at end of file
+var TYPES = {"files":[{"name":"_base.js","href":"source/_base.js.src.html"},{"name":"builder.js","href":"source/builder.js.src.html"},{"name":"chrome.js","href":"source/chrome.js.src.html"},{"name":"error.js","href":"source/error.js.src.html"},{"name":"executors.js","href":"source/executors.js.src.html"},{"name":"http/index.js","href":"source/http/index.js.src.html"},{"name":"http/util.js","href":"source/http/util.js.src.html"},{"name":"index.js","href":"source/index.js.src.html"},{"name":"io/index.js","href":"source/io/index.js.src.html"},{"name":"lib/atoms/error.js","href":"source/lib/atoms/error.js.src.html"},{"name":"lib/atoms/json.js","href":"source/lib/atoms/json.js.src.html"},{"name":"lib/atoms/response.js","href":"source/lib/atoms/response.js.src.html"},{"name":"lib/atoms/userAgent.js","href":"source/lib/atoms/userAgent.js.src.html"},{"name":"lib/goog/array/array.js","href":"source/lib/goog/array/array.js.src.html"},{"name":"lib/goog/asserts/asserts.js","href":"source/lib/goog/asserts/asserts.js.src.html"},{"name":"lib/goog/base.js","href":"source/lib/goog/base.js.src.html"},{"name":"lib/goog/debug/error.js","href":"source/lib/goog/debug/error.js.src.html"},{"name":"lib/goog/deps.js","href":"source/lib/goog/deps.js.src.html"},{"name":"lib/goog/iter/iter.js","href":"source/lib/goog/iter/iter.js.src.html"},{"name":"lib/goog/json/json.js","href":"source/lib/goog/json/json.js.src.html"},{"name":"lib/goog/labs/testing/assertthat.js","href":"source/lib/goog/labs/testing/assertthat.js.src.html"},{"name":"lib/goog/labs/testing/logicmatcher.js","href":"source/lib/goog/labs/testing/logicmatcher.js.src.html"},{"name":"lib/goog/labs/testing/matcher.js","href":"source/lib/goog/labs/testing/matcher.js.src.html"},{"name":"lib/goog/labs/testing/numbermatcher.js","href":"source/lib/goog/labs/testing/numbermatcher.js.src.html"},{"name":"lib/goog/labs/testing/objectmatcher.js","href":"source/lib/goog/labs/testing/objectmatcher.js.src.html"},{"name":"lib/goog/labs/testing/stringmatcher.js","href":"source/lib/goog/labs/testing/stringmatcher.js.src.html"},{"name":"lib/goog/net/wrapperxmlhttpfactory.js","href":"source/lib/goog/net/wrapperxmlhttpfactory.js.src.html"},{"name":"lib/goog/net/xmlhttp.js","href":"source/lib/goog/net/xmlhttp.js.src.html"},{"name":"lib/goog/net/xmlhttpfactory.js","href":"source/lib/goog/net/xmlhttpfactory.js.src.html"},{"name":"lib/goog/object/object.js","href":"source/lib/goog/object/object.js.src.html"},{"name":"lib/goog/string/string.js","href":"source/lib/goog/string/string.js.src.html"},{"name":"lib/goog/structs/map.js","href":"source/lib/goog/structs/map.js.src.html"},{"name":"lib/goog/structs/structs.js","href":"source/lib/goog/structs/structs.js.src.html"},{"name":"lib/goog/uri/uri.js","href":"source/lib/goog/uri/uri.js.src.html"},{"name":"lib/goog/uri/utils.js","href":"source/lib/goog/uri/utils.js.src.html"},{"name":"lib/goog/useragent/product.js","href":"source/lib/goog/useragent/product.js.src.html"},{"name":"lib/goog/useragent/product_isversion.js","href":"source/lib/goog/useragent/product_isversion.js.src.html"},{"name":"lib/goog/useragent/useragent.js","href":"source/lib/goog/useragent/useragent.js.src.html"},{"name":"lib/webdriver/abstractbuilder.js","href":"source/lib/webdriver/abstractbuilder.js.src.html"},{"name":"lib/webdriver/actionsequence.js","href":"source/lib/webdriver/actionsequence.js.src.html"},{"name":"lib/webdriver/builder.js","href":"source/lib/webdriver/builder.js.src.html"},{"name":"lib/webdriver/button.js","href":"source/lib/webdriver/button.js.src.html"},{"name":"lib/webdriver/capabilities.js","href":"source/lib/webdriver/capabilities.js.src.html"},{"name":"lib/webdriver/command.js","href":"source/lib/webdriver/command.js.src.html"},{"name":"lib/webdriver/events.js","href":"source/lib/webdriver/events.js.src.html"},{"name":"lib/webdriver/firefoxdomexecutor.js","href":"source/lib/webdriver/firefoxdomexecutor.js.src.html"},{"name":"lib/webdriver/http/corsclient.js","href":"source/lib/webdriver/http/corsclient.js.src.html"},{"name":"lib/webdriver/http/http.js","href":"source/lib/webdriver/http/http.js.src.html"},{"name":"lib/webdriver/http/xhrclient.js","href":"source/lib/webdriver/http/xhrclient.js.src.html"},{"name":"lib/webdriver/key.js","href":"source/lib/webdriver/key.js.src.html"},{"name":"lib/webdriver/locators.js","href":"source/lib/webdriver/locators.js.src.html"},{"name":"lib/webdriver/logging.js","href":"source/lib/webdriver/logging.js.src.html"},{"name":"lib/webdriver/process.js","href":"source/lib/webdriver/process.js.src.html"},{"name":"lib/webdriver/promise.js","href":"source/lib/webdriver/promise.js.src.html"},{"name":"lib/webdriver/session.js","href":"source/lib/webdriver/session.js.src.html"},{"name":"lib/webdriver/stacktrace.js","href":"source/lib/webdriver/stacktrace.js.src.html"},{"name":"lib/webdriver/testing/asserts.js","href":"source/lib/webdriver/testing/asserts.js.src.html"},{"name":"lib/webdriver/webdriver.js","href":"source/lib/webdriver/webdriver.js.src.html"},{"name":"net/index.js","href":"source/net/index.js.src.html"},{"name":"net/portprober.js","href":"source/net/portprober.js.src.html"},{"name":"phantomjs.js","href":"source/phantomjs.js.src.html"},{"name":"proxy.js","href":"source/proxy.js.src.html"},{"name":"remote/index.js","href":"source/remote/index.js.src.html"},{"name":"testing/assert.js","href":"source/testing/assert.js.src.html"},{"name":"testing/index.js","href":"source/testing/index.js.src.html"}],"types":[{"isInterface":false,"name":"bot","isTypedef":false,"href":"namespace_bot.html"},{"isInterface":false,"name":"bot.Error","isTypedef":false,"href":"class_bot_Error.html"},{"isInterface":false,"name":"bot.Error.State","isTypedef":false,"href":"enum_bot_Error_State.html"},{"isInterface":false,"name":"bot.ErrorCode","isTypedef":false,"href":"enum_bot_ErrorCode.html"},{"isInterface":false,"name":"bot.json","isTypedef":false,"href":"namespace_bot_json.html"},{"isInterface":false,"name":"bot.response","isTypedef":false,"href":"namespace_bot_response.html"},{"name":"bot.response.ResponseObject","isTypedef":true,"href":"namespace_bot_response.html#bot.response.ResponseObject"},{"isInterface":false,"name":"bot.userAgent","isTypedef":false,"href":"namespace_bot_userAgent.html"},{"isInterface":false,"name":"goog","isTypedef":false,"href":"namespace_goog.html"},{"isInterface":false,"name":"goog.Uri","isTypedef":false,"href":"class_goog_Uri.html"},{"isInterface":false,"name":"goog.Uri.QueryData","isTypedef":false,"href":"class_goog_Uri_QueryData.html"},{"isInterface":false,"name":"goog.array","isTypedef":false,"href":"namespace_goog_array.html"},{"name":"goog.array.ArrayLike","isTypedef":true,"href":"namespace_goog_array.html#goog.array.ArrayLike"},{"isInterface":false,"name":"goog.asserts","isTypedef":false,"href":"namespace_goog_asserts.html"},{"isInterface":false,"name":"goog.asserts.AssertionError","isTypedef":false,"href":"class_goog_asserts_AssertionError.html"},{"isInterface":false,"name":"goog.debug","isTypedef":false,"href":"namespace_goog_debug.html"},{"isInterface":false,"name":"goog.debug.Error","isTypedef":false,"href":"class_goog_debug_Error.html"},{"isInterface":false,"name":"goog.iter","isTypedef":false,"href":"namespace_goog_iter.html"},{"name":"goog.iter.Iterable","isTypedef":true,"href":"namespace_goog_iter.html#goog.iter.Iterable"},{"isInterface":false,"name":"goog.iter.Iterator","isTypedef":false,"href":"class_goog_iter_Iterator.html"},{"isInterface":false,"name":"goog.json","isTypedef":false,"href":"namespace_goog_json.html"},{"name":"goog.json.Replacer","isTypedef":true,"href":"namespace_goog_json.html#goog.json.Replacer"},{"name":"goog.json.Reviver","isTypedef":true,"href":"namespace_goog_json.html#goog.json.Reviver"},{"isInterface":false,"name":"goog.json.Serializer","isTypedef":false,"href":"class_goog_json_Serializer.html"},{"isInterface":false,"name":"goog.labs","isTypedef":false,"href":"namespace_goog_labs.html"},{"isInterface":false,"name":"goog.labs.testing","isTypedef":false,"href":"namespace_goog_labs_testing.html"},{"isInterface":false,"name":"goog.labs.testing.AllOfMatcher","isTypedef":false,"href":"class_goog_labs_testing_AllOfMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.AnyOfMatcher","isTypedef":false,"href":"class_goog_labs_testing_AnyOfMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.CloseToMatcher","isTypedef":false,"href":"class_goog_labs_testing_CloseToMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.ContainsStringMatcher","isTypedef":false,"href":"class_goog_labs_testing_ContainsStringMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.EndsWithMatcher","isTypedef":false,"href":"class_goog_labs_testing_EndsWithMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.EqualToIgnoringWhitespaceMatcher","isTypedef":false,"href":"class_goog_labs_testing_EqualToIgnoringWhitespaceMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.EqualToMatcher","isTypedef":false,"href":"class_goog_labs_testing_EqualToMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.EqualsMatcher","isTypedef":false,"href":"class_goog_labs_testing_EqualsMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.GreaterThanEqualToMatcher","isTypedef":false,"href":"class_goog_labs_testing_GreaterThanEqualToMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.GreaterThanMatcher","isTypedef":false,"href":"class_goog_labs_testing_GreaterThanMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.HasPropertyMatcher","isTypedef":false,"href":"class_goog_labs_testing_HasPropertyMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.InstanceOfMatcher","isTypedef":false,"href":"class_goog_labs_testing_InstanceOfMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.IsNotMatcher","isTypedef":false,"href":"class_goog_labs_testing_IsNotMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.IsNullMatcher","isTypedef":false,"href":"class_goog_labs_testing_IsNullMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.IsNullOrUndefinedMatcher","isTypedef":false,"href":"class_goog_labs_testing_IsNullOrUndefinedMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.IsUndefinedMatcher","isTypedef":false,"href":"class_goog_labs_testing_IsUndefinedMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.LessThanEqualToMatcher","isTypedef":false,"href":"class_goog_labs_testing_LessThanEqualToMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.LessThanMatcher","isTypedef":false,"href":"class_goog_labs_testing_LessThanMatcher.html"},{"isInterface":true,"name":"goog.labs.testing.Matcher","isTypedef":false,"href":"interface_goog_labs_testing_Matcher.html"},{"isInterface":false,"name":"goog.labs.testing.MatcherError","isTypedef":false,"href":"class_goog_labs_testing_MatcherError.html"},{"isInterface":false,"name":"goog.labs.testing.ObjectEqualsMatcher","isTypedef":false,"href":"class_goog_labs_testing_ObjectEqualsMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.RegexMatcher","isTypedef":false,"href":"class_goog_labs_testing_RegexMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.StartsWithMatcher","isTypedef":false,"href":"class_goog_labs_testing_StartsWithMatcher.html"},{"isInterface":false,"name":"goog.labs.testing.StringContainsInOrderMatcher","isTypedef":false,"href":"class_goog_labs_testing_StringContainsInOrderMatcher.html"},{"isInterface":false,"name":"goog.net","isTypedef":false,"href":"namespace_goog_net.html"},{"isInterface":false,"name":"goog.net.DefaultXmlHttpFactory","isTypedef":false,"href":"class_goog_net_DefaultXmlHttpFactory.html"},{"isInterface":false,"name":"goog.net.WrapperXmlHttpFactory","isTypedef":false,"href":"class_goog_net_WrapperXmlHttpFactory.html"},{"isInterface":false,"name":"goog.net.XmlHttp","isTypedef":false,"href":"namespace_goog_net_XmlHttp.html"},{"isInterface":false,"name":"goog.net.XmlHttp.OptionType","isTypedef":false,"href":"enum_goog_net_XmlHttp_OptionType.html"},{"isInterface":false,"name":"goog.net.XmlHttp.ReadyState","isTypedef":false,"href":"enum_goog_net_XmlHttp_ReadyState.html"},{"isInterface":false,"name":"goog.net.XmlHttpFactory","isTypedef":false,"href":"class_goog_net_XmlHttpFactory.html"},{"isInterface":false,"name":"goog.object","isTypedef":false,"href":"namespace_goog_object.html"},{"isInterface":false,"name":"goog.string","isTypedef":false,"href":"namespace_goog_string.html"},{"isInterface":false,"name":"goog.string.Unicode","isTypedef":false,"href":"enum_goog_string_Unicode.html"},{"isInterface":false,"name":"goog.structs","isTypedef":false,"href":"namespace_goog_structs.html"},{"isInterface":false,"name":"goog.structs.Map","isTypedef":false,"href":"class_goog_structs_Map.html"},{"isInterface":false,"name":"goog.uri","isTypedef":false,"href":"namespace_goog_uri.html"},{"isInterface":false,"name":"goog.uri.utils","isTypedef":false,"href":"namespace_goog_uri_utils.html"},{"name":"goog.uri.utils.QueryArray","isTypedef":true,"href":"namespace_goog_uri_utils.html#goog.uri.utils.QueryArray"},{"name":"goog.uri.utils.QueryValue","isTypedef":true,"href":"namespace_goog_uri_utils.html#goog.uri.utils.QueryValue"},{"isInterface":false,"name":"goog.uri.utils.CharCode_","isTypedef":false,"href":"enum_goog_uri_utils_CharCode_.html"},{"isInterface":false,"name":"goog.uri.utils.ComponentIndex","isTypedef":false,"href":"enum_goog_uri_utils_ComponentIndex.html"},{"isInterface":false,"name":"goog.uri.utils.StandardQueryParam","isTypedef":false,"href":"enum_goog_uri_utils_StandardQueryParam.html"},{"isInterface":false,"name":"goog.userAgent","isTypedef":false,"href":"namespace_goog_userAgent.html"},{"isInterface":false,"name":"goog.userAgent.product","isTypedef":false,"href":"namespace_goog_userAgent_product.html"},{"isInterface":false,"name":"webdriver","isTypedef":false,"href":"namespace_webdriver.html"},{"isInterface":false,"name":"webdriver.AbstractBuilder","isTypedef":false,"href":"class_webdriver_AbstractBuilder.html"},{"isInterface":false,"name":"webdriver.ActionSequence","isTypedef":false,"href":"class_webdriver_ActionSequence.html"},{"isInterface":false,"name":"webdriver.Alert","isTypedef":false,"href":"class_webdriver_Alert.html"},{"isInterface":false,"name":"webdriver.Browser","isTypedef":false,"href":"enum_webdriver_Browser.html"},{"isInterface":false,"name":"webdriver.Builder","isTypedef":false,"href":"class_webdriver_Builder.html"},{"isInterface":false,"name":"webdriver.Button","isTypedef":false,"href":"enum_webdriver_Button.html"},{"isInterface":false,"name":"webdriver.By","isTypedef":false,"href":"namespace_webdriver_By.html"},{"name":"webdriver.By.Hash","isTypedef":true,"href":"namespace_webdriver_By.html#webdriver.By.Hash"},{"isInterface":false,"name":"webdriver.Capabilities","isTypedef":false,"href":"class_webdriver_Capabilities.html"},{"isInterface":false,"name":"webdriver.Capability","isTypedef":false,"href":"enum_webdriver_Capability.html"},{"isInterface":false,"name":"webdriver.Command","isTypedef":false,"href":"class_webdriver_Command.html"},{"isInterface":true,"name":"webdriver.CommandExecutor","isTypedef":false,"href":"interface_webdriver_CommandExecutor.html"},{"isInterface":false,"name":"webdriver.CommandName","isTypedef":false,"href":"enum_webdriver_CommandName.html"},{"isInterface":false,"name":"webdriver.EventEmitter","isTypedef":false,"href":"class_webdriver_EventEmitter.html"},{"isInterface":false,"name":"webdriver.FirefoxDomExecutor","isTypedef":false,"href":"class_webdriver_FirefoxDomExecutor.html"},{"isInterface":false,"name":"webdriver.FirefoxDomExecutor.Attribute_","isTypedef":false,"href":"enum_webdriver_FirefoxDomExecutor_Attribute_.html"},{"isInterface":false,"name":"webdriver.FirefoxDomExecutor.EventType_","isTypedef":false,"href":"enum_webdriver_FirefoxDomExecutor_EventType_.html"},{"isInterface":false,"name":"webdriver.Key","isTypedef":false,"href":"enum_webdriver_Key.html"},{"isInterface":false,"name":"webdriver.Locator","isTypedef":false,"href":"class_webdriver_Locator.html"},{"isInterface":false,"name":"webdriver.Session","isTypedef":false,"href":"class_webdriver_Session.html"},{"isInterface":false,"name":"webdriver.UnhandledAlertError","isTypedef":false,"href":"class_webdriver_UnhandledAlertError.html"},{"isInterface":false,"name":"webdriver.WebDriver","isTypedef":false,"href":"class_webdriver_WebDriver.html"},{"isInterface":false,"name":"webdriver.WebDriver.Logs","isTypedef":false,"href":"class_webdriver_WebDriver_Logs.html"},{"isInterface":false,"name":"webdriver.WebDriver.Navigation","isTypedef":false,"href":"class_webdriver_WebDriver_Navigation.html"},{"isInterface":false,"name":"webdriver.WebDriver.Options","isTypedef":false,"href":"class_webdriver_WebDriver_Options.html"},{"isInterface":false,"name":"webdriver.WebDriver.TargetLocator","isTypedef":false,"href":"class_webdriver_WebDriver_TargetLocator.html"},{"isInterface":false,"name":"webdriver.WebDriver.Timeouts","isTypedef":false,"href":"class_webdriver_WebDriver_Timeouts.html"},{"isInterface":false,"name":"webdriver.WebDriver.Window","isTypedef":false,"href":"class_webdriver_WebDriver_Window.html"},{"isInterface":false,"name":"webdriver.WebElement","isTypedef":false,"href":"class_webdriver_WebElement.html"},{"isInterface":false,"name":"webdriver.http","isTypedef":false,"href":"namespace_webdriver_http.html"},{"isInterface":true,"name":"webdriver.http.Client","isTypedef":false,"href":"interface_webdriver_http_Client.html"},{"isInterface":false,"name":"webdriver.http.CorsClient","isTypedef":false,"href":"class_webdriver_http_CorsClient.html"},{"isInterface":false,"name":"webdriver.http.Executor","isTypedef":false,"href":"class_webdriver_http_Executor.html"},{"isInterface":false,"name":"webdriver.http.Request","isTypedef":false,"href":"class_webdriver_http_Request.html"},{"isInterface":false,"name":"webdriver.http.Response","isTypedef":false,"href":"class_webdriver_http_Response.html"},{"isInterface":false,"name":"webdriver.http.XhrClient","isTypedef":false,"href":"class_webdriver_http_XhrClient.html"},{"isInterface":false,"name":"webdriver.logging","isTypedef":false,"href":"namespace_webdriver_logging.html"},{"name":"webdriver.logging.Preferences","isTypedef":true,"href":"namespace_webdriver_logging.html#webdriver.logging.Preferences"},{"isInterface":false,"name":"webdriver.logging.Entry","isTypedef":false,"href":"class_webdriver_logging_Entry.html"},{"isInterface":false,"name":"webdriver.logging.Level","isTypedef":false,"href":"enum_webdriver_logging_Level.html"},{"isInterface":false,"name":"webdriver.logging.LevelName","isTypedef":false,"href":"enum_webdriver_logging_LevelName.html"},{"isInterface":false,"name":"webdriver.logging.Type","isTypedef":false,"href":"enum_webdriver_logging_Type.html"},{"isInterface":false,"name":"webdriver.process","isTypedef":false,"href":"namespace_webdriver_process.html"},{"isInterface":false,"name":"webdriver.promise","isTypedef":false,"href":"namespace_webdriver_promise.html"},{"isInterface":false,"name":"webdriver.promise.CanceledTaskError_","isTypedef":false,"href":"class_webdriver_promise_CanceledTaskError_.html"},{"isInterface":false,"name":"webdriver.promise.ControlFlow","isTypedef":false,"href":"class_webdriver_promise_ControlFlow.html"},{"name":"webdriver.promise.ControlFlow.Timer","isTypedef":true,"href":"class_webdriver_promise_ControlFlow.html#webdriver.promise.ControlFlow.Timer"},{"isInterface":false,"name":"webdriver.promise.ControlFlow.EventType","isTypedef":false,"href":"enum_webdriver_promise_ControlFlow_EventType.html"},{"isInterface":false,"name":"webdriver.promise.Deferred","isTypedef":false,"href":"class_webdriver_promise_Deferred.html"},{"name":"webdriver.promise.Deferred.Listener_","isTypedef":true,"href":"class_webdriver_promise_Deferred.html#webdriver.promise.Deferred.Listener_"},{"isInterface":false,"name":"webdriver.promise.Deferred.State_","isTypedef":false,"href":"enum_webdriver_promise_Deferred_State_.html"},{"isInterface":false,"name":"webdriver.promise.Frame_","isTypedef":false,"href":"class_webdriver_promise_Frame_.html"},{"isInterface":false,"name":"webdriver.promise.Node_","isTypedef":false,"href":"class_webdriver_promise_Node_.html"},{"isInterface":false,"name":"webdriver.promise.Promise","isTypedef":false,"href":"class_webdriver_promise_Promise.html"},{"isInterface":false,"name":"webdriver.promise.Task_","isTypedef":false,"href":"class_webdriver_promise_Task_.html"},{"isInterface":false,"name":"webdriver.stacktrace","isTypedef":false,"href":"namespace_webdriver_stacktrace.html"},{"isInterface":false,"name":"webdriver.stacktrace.Frame","isTypedef":false,"href":"class_webdriver_stacktrace_Frame.html"},{"isInterface":false,"name":"webdriver.stacktrace.Snapshot","isTypedef":false,"href":"class_webdriver_stacktrace_Snapshot.html"},{"isInterface":false,"name":"webdriver.testing","isTypedef":false,"href":"namespace_webdriver_testing.html"},{"isInterface":false,"name":"webdriver.testing.Assertion","isTypedef":false,"href":"class_webdriver_testing_Assertion.html"},{"isInterface":false,"name":"webdriver.testing.Assertion.DelegatingMatcher_","isTypedef":false,"href":"class_webdriver_testing_Assertion_DelegatingMatcher_.html"},{"isInterface":false,"name":"webdriver.testing.ContainsMatcher","isTypedef":false,"href":"class_webdriver_testing_ContainsMatcher.html"},{"isInterface":false,"name":"webdriver.testing.NegatedAssertion","isTypedef":false,"href":"class_webdriver_testing_NegatedAssertion.html"},{"isInterface":false,"name":"webdriver.testing.assert","isTypedef":false,"href":"module_selenium-webdriver_testing_assert_namespace_dossier$$module__$usr$local$google$home$jleyba$dev$selenium$build$javascript$node$selenium_webdriver$testing$assert_exports.html"},{"isInterface":false,"name":"webdriver.testing.asserts","isTypedef":false,"href":"namespace_webdriver_testing_asserts.html"}],"modules":[{"name":"selenium-webdriver","types":[{"isInterface":false,"name":"Command","isTypedef":false,"href":"class_webdriver_Command.html"},{"isInterface":false,"name":"Key","isTypedef":false,"href":"enum_webdriver_Key.html"},{"isInterface":false,"name":"EventEmitter","isTypedef":false,"href":"class_webdriver_EventEmitter.html"},{"isInterface":false,"name":"Browser","isTypedef":false,"href":"enum_webdriver_Browser.html"},{"isInterface":false,"name":"ActionSequence","isTypedef":false,"href":"class_webdriver_ActionSequence.html"},{"isInterface":false,"name":"Button","isTypedef":false,"href":"enum_webdriver_Button.html"},{"isInterface":false,"name":"CommandName","isTypedef":false,"href":"enum_webdriver_CommandName.html"},{"isInterface":false,"name":"WebElement","isTypedef":false,"href":"class_webdriver_WebElement.html"},{"isInterface":false,"name":"Capability","isTypedef":false,"href":"enum_webdriver_Capability.html"},{"isInterface":false,"name":"Session","isTypedef":false,"href":"class_webdriver_Session.html"},{"isInterface":false,"name":"Builder","isTypedef":false,"href":"module_selenium-webdriver_class_Builder.html"},{"isInterface":false,"name":"Capabilities","isTypedef":false,"href":"class_webdriver_Capabilities.html"},{"isInterface":false,"name":"WebDriver","isTypedef":false,"href":"class_webdriver_WebDriver.html"}],"href":"module_selenium-webdriver.html"},{"name":"selenium-webdriver/_base","types":[],"href":"module_selenium-webdriver__base.html"},{"name":"selenium-webdriver/builder","types":[{"isInterface":false,"name":"Builder","isTypedef":false,"href":"module_selenium-webdriver_builder_class_Builder.html"}],"href":"module_selenium-webdriver_builder.html"},{"name":"selenium-webdriver/chrome","types":[{"isInterface":false,"name":"ServiceBuilder","isTypedef":false,"href":"module_selenium-webdriver_chrome_class_ServiceBuilder.html"},{"isInterface":false,"name":"Options","isTypedef":false,"href":"module_selenium-webdriver_chrome_class_Options.html"}],"href":"module_selenium-webdriver_chrome.html"},{"name":"selenium-webdriver/error","types":[{"isInterface":false,"name":"ErrorCode","isTypedef":false,"href":"enum_bot_ErrorCode.html"},{"isInterface":false,"name":"Error","isTypedef":false,"href":"class_bot_Error.html"}],"href":"module_selenium-webdriver_error.html"},{"name":"selenium-webdriver/executors","types":[],"href":"module_selenium-webdriver_executors.html"},{"name":"selenium-webdriver/http","types":[{"isInterface":false,"name":"HttpClient","isTypedef":false,"href":"module_selenium-webdriver_http_class_HttpClient.html"},{"isInterface":false,"name":"Response","isTypedef":false,"href":"class_webdriver_http_Response.html"},{"isInterface":false,"name":"Request","isTypedef":false,"href":"class_webdriver_http_Request.html"},{"isInterface":false,"name":"Executor","isTypedef":false,"href":"class_webdriver_http_Executor.html"}],"href":"module_selenium-webdriver_http.html"},{"name":"selenium-webdriver/http/util","types":[],"href":"module_selenium-webdriver_http_util.html"},{"name":"selenium-webdriver/io","types":[],"href":"module_selenium-webdriver_io.html"},{"name":"selenium-webdriver/net","types":[],"href":"module_selenium-webdriver_net.html"},{"name":"selenium-webdriver/net/portprober","types":[],"href":"module_selenium-webdriver_net_portprober.html"},{"name":"selenium-webdriver/phantomjs","types":[],"href":"module_selenium-webdriver_phantomjs.html"},{"name":"selenium-webdriver/proxy","types":[{"isInterface":false,"name":"ProxyConfig","isTypedef":true,"href":"module_selenium-webdriver_proxy_namespace_ProxyConfig.html"}],"href":"module_selenium-webdriver_proxy.html"},{"name":"selenium-webdriver/remote","types":[{"isInterface":false,"name":"DriverService","isTypedef":false,"href":"module_selenium-webdriver_remote_class_DriverService.html"},{"isInterface":false,"name":"SeleniumServer","isTypedef":false,"href":"module_selenium-webdriver_remote_class_SeleniumServer.html"},{"name":"SeleniumServer.Options","isTypedef":true,"href":""},{"isInterface":false,"name":"ServiceOptions","isTypedef":true,"href":"module_selenium-webdriver_remote_namespace_ServiceOptions.html"}],"href":"module_selenium-webdriver_remote.html"},{"name":"selenium-webdriver/testing","types":[],"href":"module_selenium-webdriver_testing.html"},{"name":"selenium-webdriver/testing/assert","types":[],"href":"module_selenium-webdriver_testing_assert.html"}]};
\ No newline at end of file
diff --git a/javascript/node/selenium-webdriver/CHANGES.md b/javascript/node/selenium-webdriver/CHANGES.md
index 2af1e6145cb17..874f0e58c5af5 100644
--- a/javascript/node/selenium-webdriver/CHANGES.md
+++ b/javascript/node/selenium-webdriver/CHANGES.md
@@ -1,4 +1,4 @@
-## v2.41.0-dev
+## v2.41.0
* FIXED: 7138: export logging API from webdriver module.
* FIXED: 7105: beforeEach/it/afterEach properly bind `this` for Mocha tests.
diff --git a/javascript/node/selenium-webdriver/package.json b/javascript/node/selenium-webdriver/package.json
index be415020fb3b2..b25363e0c7521 100644
--- a/javascript/node/selenium-webdriver/package.json
+++ b/javascript/node/selenium-webdriver/package.json
@@ -1,6 +1,6 @@
{
"name": "selenium-webdriver",
- "version": "2.40.0",
+ "version": "2.41.0",
"description": "The official WebDriver JavaScript bindings from the Selenium project",
"keywords": [
"automation",