rainux-selenium-webdriver 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +204 -0
- data/chrome/prebuilt/Win32/Release/npchromedriver.dll +0 -0
- data/chrome/prebuilt/x64/Release/npchromedriver.dll +0 -0
- data/chrome/src/extension/background.html +9 -0
- data/chrome/src/extension/background.js +995 -0
- data/chrome/src/extension/content_script.js +1321 -0
- data/chrome/src/extension/icons/busy.png +0 -0
- data/chrome/src/extension/icons/free.png +0 -0
- data/chrome/src/extension/manifest-nonwin.json +19 -0
- data/chrome/src/extension/manifest-win.json +20 -0
- data/chrome/src/extension/utils.js +231 -0
- data/chrome/src/rb/lib/selenium/webdriver/chrome.rb +8 -0
- data/chrome/src/rb/lib/selenium/webdriver/chrome/bridge.rb +358 -0
- data/chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb +124 -0
- data/chrome/src/rb/lib/selenium/webdriver/chrome/launcher.rb +135 -0
- data/common/src/js/abstractcommandprocessor.js +134 -0
- data/common/src/js/asserts.js +296 -0
- data/common/src/js/by.js +149 -0
- data/common/src/js/command.js +304 -0
- data/common/src/js/context.js +58 -0
- data/common/src/js/core/Blank.html +7 -0
- data/common/src/js/core/InjectedRemoteRunner.html +8 -0
- data/common/src/js/core/RemoteRunner.html +101 -0
- data/common/src/js/core/SeleniumLog.html +109 -0
- data/common/src/js/core/TestPrompt.html +145 -0
- data/common/src/js/core/TestRunner-splash.html +55 -0
- data/common/src/js/core/TestRunner.html +165 -0
- data/common/src/js/core/icons/all.png +0 -0
- data/common/src/js/core/icons/continue.png +0 -0
- data/common/src/js/core/icons/continue_disabled.png +0 -0
- data/common/src/js/core/icons/pause.png +0 -0
- data/common/src/js/core/icons/pause_disabled.png +0 -0
- data/common/src/js/core/icons/selected.png +0 -0
- data/common/src/js/core/icons/step.png +0 -0
- data/common/src/js/core/icons/step_disabled.png +0 -0
- data/common/src/js/core/lib/cssQuery/cssQuery-p.js +6 -0
- data/common/src/js/core/lib/cssQuery/src/cssQuery-level2.js +142 -0
- data/common/src/js/core/lib/cssQuery/src/cssQuery-level3.js +150 -0
- data/common/src/js/core/lib/cssQuery/src/cssQuery-standard.js +53 -0
- data/common/src/js/core/lib/cssQuery/src/cssQuery.js +356 -0
- data/common/src/js/core/lib/prototype.js +2006 -0
- data/common/src/js/core/lib/scriptaculous/builder.js +101 -0
- data/common/src/js/core/lib/scriptaculous/controls.js +815 -0
- data/common/src/js/core/lib/scriptaculous/dragdrop.js +915 -0
- data/common/src/js/core/lib/scriptaculous/effects.js +958 -0
- data/common/src/js/core/lib/scriptaculous/scriptaculous.js +47 -0
- data/common/src/js/core/lib/scriptaculous/slider.js +283 -0
- data/common/src/js/core/lib/scriptaculous/unittest.js +383 -0
- data/common/src/js/core/lib/snapsie.js +91 -0
- data/common/src/js/core/scripts/find_matching_child.js +69 -0
- data/common/src/js/core/scripts/htmlutils.js +8716 -0
- data/common/src/js/core/scripts/injection.html +72 -0
- data/common/src/js/core/scripts/selenium-api.js +3291 -0
- data/common/src/js/core/scripts/selenium-browserbot.js +2457 -0
- data/common/src/js/core/scripts/selenium-browserdetect.js +153 -0
- data/common/src/js/core/scripts/selenium-commandhandlers.js +379 -0
- data/common/src/js/core/scripts/selenium-executionloop.js +175 -0
- data/common/src/js/core/scripts/selenium-logging.js +148 -0
- data/common/src/js/core/scripts/selenium-remoterunner.js +695 -0
- data/common/src/js/core/scripts/selenium-testrunner.js +1362 -0
- data/common/src/js/core/scripts/selenium-version.js +5 -0
- data/common/src/js/core/scripts/ui-doc.html +808 -0
- data/common/src/js/core/scripts/ui-element.js +1644 -0
- data/common/src/js/core/scripts/ui-map-sample.js +979 -0
- data/common/src/js/core/scripts/user-extensions.js +3 -0
- data/common/src/js/core/scripts/user-extensions.js.sample +75 -0
- data/common/src/js/core/scripts/xmlextras.js +153 -0
- data/common/src/js/core/selenium-logo.png +0 -0
- data/common/src/js/core/selenium-test.css +43 -0
- data/common/src/js/core/selenium.css +316 -0
- data/common/src/js/core/xpath/dom.js +566 -0
- data/common/src/js/core/xpath/javascript-xpath-0.1.11.js +2816 -0
- data/common/src/js/core/xpath/util.js +549 -0
- data/common/src/js/core/xpath/xmltoken.js +149 -0
- data/common/src/js/core/xpath/xpath.js +2481 -0
- data/common/src/js/extension/README +2 -0
- data/common/src/js/extension/dommessenger.js +152 -0
- data/common/src/js/factory.js +55 -0
- data/common/src/js/future.js +141 -0
- data/common/src/js/jsunit.js +40 -0
- data/common/src/js/jsunit/app/css/jsUnitStyle.css +50 -0
- data/common/src/js/jsunit/app/css/readme +10 -0
- data/common/src/js/jsunit/app/emptyPage.html +11 -0
- data/common/src/js/jsunit/app/jsUnitCore.js +534 -0
- data/common/src/js/jsunit/app/jsUnitMockTimeout.js +81 -0
- data/common/src/js/jsunit/app/jsUnitTestManager.js +705 -0
- data/common/src/js/jsunit/app/jsUnitTestSuite.js +44 -0
- data/common/src/js/jsunit/app/jsUnitTracer.js +102 -0
- data/common/src/js/jsunit/app/jsUnitVersionCheck.js +59 -0
- data/common/src/js/jsunit/app/main-counts-errors.html +12 -0
- data/common/src/js/jsunit/app/main-counts-failures.html +13 -0
- data/common/src/js/jsunit/app/main-counts-runs.html +13 -0
- data/common/src/js/jsunit/app/main-counts.html +21 -0
- data/common/src/js/jsunit/app/main-data.html +178 -0
- data/common/src/js/jsunit/app/main-errors.html +23 -0
- data/common/src/js/jsunit/app/main-frame.html +19 -0
- data/common/src/js/jsunit/app/main-loader.html +45 -0
- data/common/src/js/jsunit/app/main-progress.html +25 -0
- data/common/src/js/jsunit/app/main-results.html +67 -0
- data/common/src/js/jsunit/app/main-status.html +13 -0
- data/common/src/js/jsunit/app/testContainer.html +16 -0
- data/common/src/js/jsunit/app/testContainerController.html +77 -0
- data/common/src/js/jsunit/app/xbDebug.js +306 -0
- data/common/src/js/jsunit/changelog.txt +60 -0
- data/common/src/js/jsunit/css/jsUnitStyle.css +83 -0
- data/common/src/js/jsunit/images/green.gif +0 -0
- data/common/src/js/jsunit/images/logo_jsunit.gif +0 -0
- data/common/src/js/jsunit/images/powerby-transparent.gif +0 -0
- data/common/src/js/jsunit/images/red.gif +0 -0
- data/common/src/js/jsunit/licenses/JDOM_license.txt +56 -0
- data/common/src/js/jsunit/licenses/Jetty_license.html +213 -0
- data/common/src/js/jsunit/licenses/MPL-1.1.txt +470 -0
- data/common/src/js/jsunit/licenses/gpl-2.txt +340 -0
- data/common/src/js/jsunit/licenses/index.html +141 -0
- data/common/src/js/jsunit/licenses/lgpl-2.1.txt +504 -0
- data/common/src/js/jsunit/licenses/mpl-tri-license-c.txt +35 -0
- data/common/src/js/jsunit/licenses/mpl-tri-license-html.txt +35 -0
- data/common/src/js/jsunit/readme.txt +19 -0
- data/common/src/js/jsunit/testRunner.html +167 -0
- data/common/src/js/jsunit/version.txt +1 -0
- data/common/src/js/key.js +117 -0
- data/common/src/js/localcommandprocessor.js +185 -0
- data/common/src/js/testcase.js +217 -0
- data/common/src/js/timing.js +89 -0
- data/common/src/js/webdriver.js +890 -0
- data/common/src/js/webelement.js +485 -0
- data/common/src/rb/README +30 -0
- data/common/src/rb/lib/selenium-webdriver.rb +1 -0
- data/common/src/rb/lib/selenium/webdriver.rb +67 -0
- data/common/src/rb/lib/selenium/webdriver/bridge_helper.rb +91 -0
- data/common/src/rb/lib/selenium/webdriver/child_process.rb +180 -0
- data/common/src/rb/lib/selenium/webdriver/core_ext/dir.rb +41 -0
- data/common/src/rb/lib/selenium/webdriver/driver.rb +252 -0
- data/common/src/rb/lib/selenium/webdriver/driver_extensions/takes_screenshot.rb +24 -0
- data/common/src/rb/lib/selenium/webdriver/element.rb +262 -0
- data/common/src/rb/lib/selenium/webdriver/error.rb +67 -0
- data/common/src/rb/lib/selenium/webdriver/find.rb +89 -0
- data/common/src/rb/lib/selenium/webdriver/keys.rb +84 -0
- data/common/src/rb/lib/selenium/webdriver/navigation.rb +27 -0
- data/common/src/rb/lib/selenium/webdriver/options.rb +50 -0
- data/common/src/rb/lib/selenium/webdriver/platform.rb +86 -0
- data/common/src/rb/lib/selenium/webdriver/target_locator.rb +70 -0
- data/firefox/prebuilt/Win32/Release/webdriver-firefox.dll +0 -0
- data/firefox/prebuilt/linux/Release/libwebdriver-firefox.so +0 -0
- data/firefox/prebuilt/linux/Release/x_ignore_nofocus.so +0 -0
- data/firefox/prebuilt/linux64/Release/libwebdriver-firefox.so +0 -0
- data/firefox/prebuilt/linux64/Release/x_ignore_nofocus.so +0 -0
- data/firefox/prebuilt/nsICommandProcessor.xpt +0 -0
- data/firefox/prebuilt/nsINativeEvents.xpt +0 -0
- data/firefox/prebuilt/nsIResponseHandler.xpt +0 -0
- data/firefox/src/extension/chrome.manifest +3 -0
- data/firefox/src/extension/components/badCertListener.js +294 -0
- data/firefox/src/extension/components/context.js +37 -0
- data/firefox/src/extension/components/driver-component.js +127 -0
- data/firefox/src/extension/components/firefoxDriver.js +810 -0
- data/firefox/src/extension/components/json2.js +273 -0
- data/firefox/src/extension/components/keytest.html +554 -0
- data/firefox/src/extension/components/nsCommandProcessor.js +643 -0
- data/firefox/src/extension/components/promptService.js +208 -0
- data/firefox/src/extension/components/screenshooter.js +81 -0
- data/firefox/src/extension/components/socketListener.js +185 -0
- data/firefox/src/extension/components/utils.js +1263 -0
- data/firefox/src/extension/components/webLoadingListener.js +57 -0
- data/firefox/src/extension/components/webdriverserver.js +106 -0
- data/firefox/src/extension/components/wrappedElement.js +683 -0
- data/firefox/src/extension/content/fxdriver.xul +30 -0
- data/firefox/src/extension/content/server.js +95 -0
- data/firefox/src/extension/idl/nsICommandProcessor.idl +38 -0
- data/firefox/src/extension/idl/nsIResponseHandler.idl +34 -0
- data/firefox/src/extension/install.rdf +29 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox.rb +31 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/binary.rb +107 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/bridge.rb +484 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/extension_connection.rb +90 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/launcher.rb +155 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/profile.rb +233 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/profiles_ini.rb +59 -0
- data/firefox/src/rb/lib/selenium/webdriver/firefox/util.rb +23 -0
- data/jobbie/prebuilt/Win32/Release/InternetExplorerDriver.dll +0 -0
- data/jobbie/prebuilt/x64/Release/InternetExplorerDriver.dll +0 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie.rb +14 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie/bridge.rb +565 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie/lib.rb +99 -0
- data/jobbie/src/rb/lib/selenium/webdriver/ie/util.rb +147 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote.rb +16 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/bridge.rb +408 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/capabilities.rb +105 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/commands.rb +53 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/default_http_client.rb +71 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/response.rb +49 -0
- data/remote/client/src/rb/lib/selenium/webdriver/remote/server_error.rb +32 -0
- metadata +303 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2007-2009 WebDriver committers
|
|
3
|
+
Copyright 2007-2009 Google Inc.
|
|
4
|
+
Portions copyright 2007 ThoughtWorks, Inc
|
|
5
|
+
|
|
6
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
you may not use this file except in compliance with the License.
|
|
8
|
+
You may obtain a copy of the License at
|
|
9
|
+
|
|
10
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
|
|
12
|
+
Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
See the License for the specific language governing permissions and
|
|
16
|
+
limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @fileoverview Messenger service used to communicate with the current web
|
|
21
|
+
* page through custom DOM events.
|
|
22
|
+
*
|
|
23
|
+
* <p>The DomMessenger will listen for {@code webdriverCommand} events on the
|
|
24
|
+
* document. The event target should be a node whose {@code command} attribute
|
|
25
|
+
* is a JSON string with the command to execute.
|
|
26
|
+
*
|
|
27
|
+
* <p>Once the command has been executed, the response will be stored as a JSON
|
|
28
|
+
* string in the {@code response} attribute of the node that dispatched the
|
|
29
|
+
* original {@code webdriverCommand} event. The DomMessenger will then dispatch
|
|
30
|
+
* a {@code webdriverResponse} event on that node to notify the page that a
|
|
31
|
+
* response is ready.
|
|
32
|
+
*
|
|
33
|
+
* @author jmleyba@gmail.com (Jason Leyba)
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The DomMessenger is used to communicate with the current webpage through
|
|
39
|
+
* custom events fired on the DOM.
|
|
40
|
+
*
|
|
41
|
+
* @param { {execute: function(string, function(string))} } commandProcessor The
|
|
42
|
+
* object to send commands to for execution. The object should have a single
|
|
43
|
+
* method, {@code execute}, that takes two arguments: the command to execute
|
|
44
|
+
* as a JSON string, and a callback for the command response (specified as a
|
|
45
|
+
* JSON string).
|
|
46
|
+
* @constructor
|
|
47
|
+
*/
|
|
48
|
+
var DomMessenger = function(commandProcessor) {
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The object to use as a command processor.
|
|
52
|
+
* @type { {execute: function(string, function(string))} }
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
this.commandProcessor_ = commandProcessor;
|
|
56
|
+
|
|
57
|
+
var self = this; // TODO(jmleyba): bind
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* EventListener for {@code COMMAND_EVENT}s.
|
|
61
|
+
* @type {function(Event)}
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
this.commandEventListener_ = function(e) {
|
|
65
|
+
self.onCommand(e);
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Attributes used to pass information between the extension and the current
|
|
72
|
+
* web page.
|
|
73
|
+
* @enum {string}
|
|
74
|
+
*/
|
|
75
|
+
DomMessenger.Attribute = {
|
|
76
|
+
COMMAND: 'command',
|
|
77
|
+
RESPONSE: 'response'
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Custom event types used to signal a new message either to or from the current
|
|
83
|
+
* web page.
|
|
84
|
+
* @enum {string}
|
|
85
|
+
*/
|
|
86
|
+
DomMessenger.EventType = {
|
|
87
|
+
COMMAND: 'webdriverCommand',
|
|
88
|
+
RESPONSE: 'webdriverResponse'
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Called when a page loads to
|
|
94
|
+
* Called when a page loads so an element can be injected for communicating with
|
|
95
|
+
* the web page.
|
|
96
|
+
*/
|
|
97
|
+
DomMessenger.prototype.onPageLoad = function(e) {
|
|
98
|
+
// Annotate the documentElement to signal to the client that webdriver is
|
|
99
|
+
// installed.
|
|
100
|
+
var doc = e.originalTarget || e.target;
|
|
101
|
+
doc.documentElement.setAttribute('webdriver', true);
|
|
102
|
+
doc.addEventListener(
|
|
103
|
+
DomMessenger.EventType.COMMAND, this.commandEventListener_, true);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Called when a page unloads; removes the command event listener.
|
|
109
|
+
* @param {Event} e The unload event, whose target is the document that was
|
|
110
|
+
* unloaded.
|
|
111
|
+
*/
|
|
112
|
+
DomMessenger.prototype.onPageUnload = function(e) {
|
|
113
|
+
var doc = e.originalTarget || e.target;
|
|
114
|
+
doc.removeEventListener(
|
|
115
|
+
DomMessenger.EventType.COMMAND, this.commandEventListener_, true);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Handles {@code COMMAND_EVENT}s. The command should be stored as a JSON string
|
|
121
|
+
* in the {@code COMMAND_ATTRIBUTE}.
|
|
122
|
+
* @param {Event} e The command event.
|
|
123
|
+
*/
|
|
124
|
+
DomMessenger.prototype.onCommand = function(e) {
|
|
125
|
+
var client = e.target;
|
|
126
|
+
var command = client.getAttribute(DomMessenger.Attribute.COMMAND);
|
|
127
|
+
|
|
128
|
+
if (!command) {
|
|
129
|
+
throw Error('No command specified');
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
var self = this; // TODO(jmleyba): bind
|
|
133
|
+
this.commandProcessor_.execute(command, function(response) {
|
|
134
|
+
self.dispatchResponse(client, response);
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Dispatches a {@code RESPONSE_EVENT} to notify the appropriate page that a
|
|
141
|
+
* command it gave completed execution.
|
|
142
|
+
* @param {Node} client The DOM node that issued the command this response is
|
|
143
|
+
* for.
|
|
144
|
+
* @param {string} response Response to a command as a JSON string.
|
|
145
|
+
*/
|
|
146
|
+
DomMessenger.prototype.dispatchResponse = function(client, response) {
|
|
147
|
+
client.setAttribute(DomMessenger.Attribute.RESPONSE, response);
|
|
148
|
+
var evt = client.ownerDocument.createEvent('Event');
|
|
149
|
+
evt.initEvent(DomMessenger.EventType.RESPONSE,
|
|
150
|
+
/*canBubble=*/true, /*cancellable=*/true);
|
|
151
|
+
client.dispatchEvent(evt);
|
|
152
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** @license
|
|
2
|
+
Copyright 2007-2009 WebDriver committers
|
|
3
|
+
Copyright 2007-2009 Google Inc.
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @fileoverview Provides factory methods for creating new instances of
|
|
20
|
+
* {@code webdriver.WebDriver}.
|
|
21
|
+
* @author jmleyba@gmail.com (Jason Leyba)
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
goog.provide('webdriver.factory');
|
|
25
|
+
|
|
26
|
+
goog.require('goog.userAgent');
|
|
27
|
+
goog.require('webdriver.LocalCommandProcessor');
|
|
28
|
+
goog.require('webdriver.WebDriver');
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new {@code webdriver.WebDriver} instance that uses an
|
|
33
|
+
* {@code webdriver.AbstractCommandProcessor}. This driver will only be able to
|
|
34
|
+
* perform the most basic of commands: sleeping and calling user defined
|
|
35
|
+
* functions.
|
|
36
|
+
* @return {webdriver.WebDriver} A new WebDriver instance.
|
|
37
|
+
*/
|
|
38
|
+
webdriver.factory.createAbstractDriver = function() {
|
|
39
|
+
return new webdriver.WebDriver(new webdriver.AbstractCommandProcessor());
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new {@code webdriver.WebDriver} instance that uses a
|
|
45
|
+
* CommandProcessor directly accessible to the current JavaScript engine.
|
|
46
|
+
* Currently, only Firefox is supported, but IE and Google Chrome support is
|
|
47
|
+
* planned.
|
|
48
|
+
* TODO(jmleyba): Add support for Internet Explorer and Goolge Chrome.
|
|
49
|
+
* @return {webdriver.WebDriver} A new WebDriver instance.
|
|
50
|
+
* @throws If called from a JavaScript engine that does not have support for a
|
|
51
|
+
* local CommandProcessor.
|
|
52
|
+
*/
|
|
53
|
+
webdriver.factory.createLocalWebDriver = function() {
|
|
54
|
+
return new webdriver.WebDriver(new webdriver.LocalCommandProcessor());
|
|
55
|
+
};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/** @license
|
|
2
|
+
Copyright 2007-2009 WebDriver committers
|
|
3
|
+
Copyright 2007-2009 Google Inc.
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @fileoverview Defines a class for representing the result of an asynchronous
|
|
20
|
+
* {@code webdriver.Command}.
|
|
21
|
+
* @author jmleyba@gmail.com (Jason Leyba)
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
goog.provide('webdriver.Future');
|
|
25
|
+
|
|
26
|
+
goog.require('goog.Disposable');
|
|
27
|
+
goog.require('goog.array');
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Represents the result of an asynchronous {@code webdriver.Command}. Methods
|
|
32
|
+
* are provided to check if the result has been set and to retrieve the result.
|
|
33
|
+
* @param {webdriver.WebDriver} driver The WebDriver instance that will
|
|
34
|
+
* eventually set this instance's value.
|
|
35
|
+
* @constructor
|
|
36
|
+
* @extends {goog.Disposable}
|
|
37
|
+
*/
|
|
38
|
+
webdriver.Future = function(driver) {
|
|
39
|
+
goog.Disposable.call(this);
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The WebDriver that will eventaully set this instance's value.
|
|
43
|
+
* @type {webdriver.WebDriver}
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
this.driver_ = driver;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The value of this Future.
|
|
50
|
+
* @type {*}
|
|
51
|
+
* @private
|
|
52
|
+
*/
|
|
53
|
+
this.value_ = webdriver.Future.NOT_SET_;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Futures whose values are linked to this one. When this future's value is
|
|
57
|
+
* set, all of the linked futures will also be updated.
|
|
58
|
+
* @type {Array.<webdriver.Future>}
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
this.linkedFutures_ = [];
|
|
62
|
+
};
|
|
63
|
+
goog.inherits(webdriver.Future, goog.Disposable);
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* A special place-holder value used to represent that the result for a future
|
|
68
|
+
* has not been computed yet.
|
|
69
|
+
* @type {Object}
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
webdriver.Future.NOT_SET_ = {};
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
/** @override */
|
|
76
|
+
webdriver.Future.prototype.disposeInternal = function() {
|
|
77
|
+
delete this.driver_;
|
|
78
|
+
delete this.value_;
|
|
79
|
+
delete this.linkedFutures_;
|
|
80
|
+
webdriver.Future.superClass_.disposeInternal.call(this);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @return {*} The value of this Future.
|
|
86
|
+
* @throws If the value has not been set yet.
|
|
87
|
+
*/
|
|
88
|
+
webdriver.Future.prototype.getValue = function() {
|
|
89
|
+
if (this.value_ === webdriver.Future.NOT_SET_) {
|
|
90
|
+
throw new Error('Value has not been set yet');
|
|
91
|
+
}
|
|
92
|
+
return this.value_;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @return {webdriver.WebDriver} The WebDriver that set/will set this Future's
|
|
98
|
+
* value.
|
|
99
|
+
*/
|
|
100
|
+
webdriver.Future.prototype.getDriver = function() {
|
|
101
|
+
return this.driver_;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Sets the value of this Future and dispatches a
|
|
107
|
+
* {@code goog.events.EventType.CHANGE} event. If the given value is another
|
|
108
|
+
* future and its value has not been set, a callback will be registered to
|
|
109
|
+
* set this instance's value when the input future's value is set. Note that
|
|
110
|
+
* the value of a future may only be set once.
|
|
111
|
+
* @param {*} value The new value.
|
|
112
|
+
*/
|
|
113
|
+
webdriver.Future.prototype.setValue = function(value) {
|
|
114
|
+
if (this.isSet()) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (value instanceof webdriver.Future) {
|
|
118
|
+
if (value.isSet()) {
|
|
119
|
+
value = value.getValue();
|
|
120
|
+
this.value_ = value;
|
|
121
|
+
goog.array.forEach(this.linkedFutures_, function(future) {
|
|
122
|
+
future.setValue(value);
|
|
123
|
+
});
|
|
124
|
+
} else {
|
|
125
|
+
value.linkedFutures_.push(this);
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
this.value_ = value;
|
|
129
|
+
goog.array.forEach(this.linkedFutures_, function(future) {
|
|
130
|
+
future.setValue(value);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @return {boolean} Whether this future has had its value set.
|
|
138
|
+
*/
|
|
139
|
+
webdriver.Future.prototype.isSet = function() {
|
|
140
|
+
return this.value_ !== webdriver.Future.NOT_SET_;
|
|
141
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** @license
|
|
2
|
+
Copyright 2007-2009 WebDriver committers
|
|
3
|
+
Copyright 2007-2009 Google Inc.
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @fileoverview File to include for turnning any HTML page into a WebDriver
|
|
20
|
+
* JSUnit test suite by configuring an onload listener to the body that will
|
|
21
|
+
* instantiate and start the test runner.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
goog.provide('webdriver.jsunit');
|
|
25
|
+
|
|
26
|
+
goog.require('goog.testing.jsunit');
|
|
27
|
+
goog.require('webdriver.TestCase');
|
|
28
|
+
goog.require('webdriver.asserts');
|
|
29
|
+
goog.require('webdriver.factory');
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
(function() {
|
|
33
|
+
window.onload = function() {
|
|
34
|
+
var test = new webdriver.TestCase(document.title,
|
|
35
|
+
webdriver.factory.createLocalWebDriver);
|
|
36
|
+
test.autoDiscoverTests();
|
|
37
|
+
G_testRunner.initialize(test);
|
|
38
|
+
G_testRunner.execute(test);
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
body {
|
|
2
|
+
margin-top: 0;
|
|
3
|
+
margin-bottom: 0;
|
|
4
|
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
|
5
|
+
color: #000;
|
|
6
|
+
font-size: 0.8em;
|
|
7
|
+
background-color: #fff;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
a:link, a:visited {
|
|
11
|
+
color: #00F;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
a:hover {
|
|
15
|
+
color: #F00;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
h1 {
|
|
19
|
+
font-size: 1.2em;
|
|
20
|
+
font-weight: bold;
|
|
21
|
+
color: #039;
|
|
22
|
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
h2 {
|
|
26
|
+
font-weight: bold;
|
|
27
|
+
color: #039;
|
|
28
|
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
h3 {
|
|
32
|
+
font-weight: bold;
|
|
33
|
+
color: #039;
|
|
34
|
+
text-decoration: underline;
|
|
35
|
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
h4 {
|
|
39
|
+
font-weight: bold;
|
|
40
|
+
color: #039;
|
|
41
|
+
font-family: Verdana, Arial, Helvetica, sans-serif;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.jsUnitTestResultSuccess {
|
|
45
|
+
color: #000;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.jsUnitTestResultNotSuccess {
|
|
49
|
+
color: #F00;
|
|
50
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
this file is required due to differences in behavior between Mozilla/Opera
|
|
2
|
+
and Internet Explorer.
|
|
3
|
+
|
|
4
|
+
main-data.html calls kickOffTests() which calls top.testManager.start()
|
|
5
|
+
in the top most frame. top.testManager.start() initializes the output
|
|
6
|
+
frames using document.write and HTML containing a relative <link> to the
|
|
7
|
+
jsUnitStyle.css file. In MSIE, the base href used to find the CSS file is
|
|
8
|
+
that of the top level frame however in Mozilla/Opera the base href is
|
|
9
|
+
that of main-data.html. This leads to not-found for the jsUnitStyle.css
|
|
10
|
+
in Mozilla/Opera. Creating app/css/jsUnitStyle.css works around this problem.
|