selenium-webdriver 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/chrome/prebuilt/Win32/Release/npchromedriver.dll +0 -0
- data/chrome/prebuilt/x64/Release/npchromedriver.dll +0 -0
- data/chrome/src/extension/background.js +1 -0
- data/chrome/src/extension/content_script.js +182 -177
- data/chrome/src/extension/manifest-nonwin.json +1 -1
- data/chrome/src/extension/manifest-win.json +1 -1
- data/chrome/src/rb/lib/selenium/webdriver/chrome/bridge.rb +9 -3
- data/chrome/src/rb/lib/selenium/webdriver/chrome/launcher.rb +1 -1
- 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 +177 -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 +1623 -0
- data/common/src/js/core/scripts/injection.html +72 -0
- data/common/src/js/core/scripts/selenium-api.js +3294 -0
- data/common/src/js/core/scripts/selenium-browserbot.js +2430 -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/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/rb/README +29 -0
- data/common/src/rb/lib/selenium/webdriver/driver.rb +124 -12
- data/common/src/rb/lib/selenium/webdriver/element.rb +119 -3
- data/common/src/rb/lib/selenium/webdriver/error.rb +1 -2
- data/common/src/rb/lib/selenium/webdriver/find.rb +19 -2
- data/common/src/rb/lib/selenium/webdriver/keys.rb +5 -1
- data/common/src/rb/lib/selenium/webdriver/navigation.rb +8 -4
- data/common/src/rb/lib/selenium/webdriver/platform.rb +4 -2
- data/common/src/rb/lib/selenium/webdriver/target_locator.rb +18 -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/src/extension/components/utils.js +13 -2
- data/firefox/src/extension/install.rdf +1 -1
- data/firefox/src/rb/lib/selenium/webdriver/firefox.rb +3 -2
- data/firefox/src/rb/lib/selenium/webdriver/firefox/binary.rb +1 -7
- data/firefox/src/rb/lib/selenium/webdriver/firefox/bridge.rb +11 -4
- data/firefox/src/rb/lib/selenium/webdriver/firefox/profile.rb +56 -15
- data/firefox/src/rb/lib/selenium/webdriver/firefox/util.rb +1 -1
- 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/bridge.rb +10 -5
- data/jobbie/src/rb/lib/selenium/webdriver/ie/util.rb +9 -10
- data/remote/client/src/rb/lib/selenium/webdriver/remote/bridge.rb +4 -2
- data/remote/client/src/rb/lib/selenium/webdriver/remote/capabilities.rb +23 -23
- metadata +103 -6
- data/jobbie/prebuilt/Win32/Release/webdriver-ie-test.dll +0 -0
- data/jobbie/prebuilt/Win32/Release/webdriver-ie.dll +0 -0
- data/jobbie/prebuilt/x64/Release/webdriver-ie-test.dll +0 -0
- data/jobbie/prebuilt/x64/Release/webdriver-ie.dll +0 -0
Binary file
|
Binary file
|
@@ -577,6 +577,7 @@ function parsePortMessage(message) {
|
|
577
577
|
case 10: //org.openqa.selenium.StaleElementReferenceException
|
578
578
|
case 11: //org.openqa.selenium.ElementNotVisibleException
|
579
579
|
case 12: //java.lang.UnsupportedOperationException [Invalid element state ]
|
580
|
+
case 13: //org.openqa.selenium.WebDriverException [Unhandled error]
|
580
581
|
case 17: //org.openqa.selenium.WebDriverException [Bad javascript]
|
581
582
|
case 19: //org.openqa.selenium.XPathLookupException
|
582
583
|
case 99: //org.openqa.selenium.WebDriverException [Native event]
|
@@ -61,185 +61,190 @@ function parsePortMessage(message) {
|
|
61
61
|
return;
|
62
62
|
}
|
63
63
|
}
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
64
|
+
try {
|
65
|
+
switch (message.request.request) {
|
66
|
+
case "addCookie":
|
67
|
+
response.value = setCookie(message.request.cookie);
|
68
|
+
response.wait = false;
|
69
|
+
break;
|
70
|
+
case "clearElement":
|
71
|
+
response.value = clearElement(element);
|
72
|
+
break;
|
73
|
+
case "clickElement":
|
74
|
+
response.value = clickElement(element, message.request.elementId);
|
75
|
+
break;
|
76
|
+
case "nonNativeClickElement":
|
77
|
+
//TODO(danielwh): Focus/blur events for non-native clicking
|
78
|
+
element.scrollIntoView(true);
|
79
|
+
//TODO: Work out a way of firing events,
|
80
|
+
//now that synthesising them gives appendMessage errors
|
81
|
+
console.log("mouse downing");
|
82
|
+
Utils.fireMouseEventOn(element, "mousedown");
|
83
|
+
console.log("mouse up");
|
84
|
+
Utils.fireMouseEventOn(element, "mouseup");
|
85
|
+
console.log("mouse click");
|
86
|
+
Utils.fireMouseEventOn(element, "click");
|
86
87
|
|
87
|
-
|
88
|
-
|
89
|
-
|
88
|
+
if (element.click) {
|
89
|
+
console.log("click");
|
90
|
+
execute("try { arguments[0].click(); } catch(e){}", {type: "ELEMENT", value: getElementId_(element)});
|
91
|
+
}
|
92
|
+
response.value = {statusCode: 0};
|
93
|
+
break;
|
94
|
+
case "deleteAllCookies":
|
95
|
+
response.value = deleteAllCookies();
|
96
|
+
response.wait = false;
|
97
|
+
break;
|
98
|
+
case "deleteCookie":
|
99
|
+
response.value = deleteCookie(message.request.name);
|
100
|
+
response.wait = false;
|
101
|
+
break;
|
102
|
+
case "executeScript":
|
103
|
+
execute(message.request.script, message.request.args);
|
104
|
+
//Sends port message back to background page from its own callback
|
105
|
+
break;
|
106
|
+
case "getCookies":
|
107
|
+
response.value = getCookies();
|
108
|
+
response.wait = false;
|
109
|
+
break;
|
110
|
+
case "getCookie":
|
111
|
+
response.value = getCookieNamed(message.request.name);
|
112
|
+
response.wait = false;
|
113
|
+
break;
|
114
|
+
case "findChildElement":
|
115
|
+
response.value = getElement(false, message.request.using, message.request.value, message.request.id);
|
116
|
+
response.wait = false;
|
117
|
+
break;
|
118
|
+
case "findChildElements":
|
119
|
+
response.value = getElement(true, message.request.using, message.request.value, message.request.id);
|
120
|
+
response.wait = false;
|
121
|
+
break;
|
122
|
+
case "findElement":
|
123
|
+
response.value = getElement(false, message.request.using, message.request.value);
|
124
|
+
response.wait = false;
|
125
|
+
break;
|
126
|
+
case "findElements":
|
127
|
+
response.value = getElement(true, message.request.using, message.request.value);
|
128
|
+
response.wait = false;
|
129
|
+
break;
|
130
|
+
case "getElementAttribute":
|
131
|
+
response.value = getElementAttribute(element, message.request.attribute);
|
132
|
+
response.wait = false;
|
133
|
+
break;
|
134
|
+
case "getElementValueOfCssProperty":
|
135
|
+
response.value = {statusCode: 0, value: getStyle(element, message.request.css)};
|
136
|
+
response.wait = false;
|
137
|
+
break;
|
138
|
+
case "getElementLocation":
|
139
|
+
var coords = getElementCoords(element);
|
140
|
+
response.value = {statusCode: 0, value: {type: "POINT", x: coords[0], y: coords[1]}};
|
141
|
+
response.wait = false;
|
142
|
+
break;
|
143
|
+
case "getElementLocationOnceScrolledIntoView":
|
144
|
+
element.scrollIntoView(true);
|
145
|
+
var coords = getElementCoords(element);
|
146
|
+
response.value = {statusCode: 0, value: {type: "POINT", x: coords[0], y: coords[1]}};
|
147
|
+
break;
|
148
|
+
case "getElementSize":
|
149
|
+
response.value = {statusCode: 0, value: getOffsetSizeFromSubElements(element)};
|
150
|
+
response.wait = false;
|
151
|
+
break;
|
152
|
+
case "getElementTagName":
|
153
|
+
response.value = {statusCode: 0, value: element.tagName.toLowerCase()};
|
154
|
+
response.wait = false;
|
155
|
+
break;
|
156
|
+
case "getElementText":
|
157
|
+
response.value = {statusCode: 0, value: Utils.getText(element)};
|
158
|
+
response.wait = false;
|
159
|
+
break;
|
160
|
+
case "getElementValue":
|
161
|
+
response.value = {statusCode: 0, value: element.value};
|
162
|
+
response.wait = false;
|
163
|
+
break;
|
164
|
+
case "getFrameNameFromIndex":
|
165
|
+
//TODO(danielwh): Do this by simply looking it up in window.frames when Chrome is fixed. Track: crbug.com 20773
|
166
|
+
getFrameNameFromIndex(message.request.index);
|
167
|
+
break;
|
168
|
+
case "getPageSource":
|
169
|
+
response.value = getSource();
|
170
|
+
response.wait = false;
|
171
|
+
break;
|
172
|
+
case "getTitle":
|
173
|
+
response.value = {statusCode: 0, value: ChromeDriverContentScript.currentDocument.title};
|
174
|
+
response.wait = false;
|
175
|
+
break;
|
176
|
+
case "getCurrentUrl":
|
177
|
+
response.value = {statusCode: 0, value: ChromeDriverContentScript.currentDocument.location.href};
|
178
|
+
response.wait = false;
|
179
|
+
break;
|
180
|
+
case "goBack":
|
181
|
+
history.back();
|
182
|
+
response.value = {statusCode: 0};
|
183
|
+
break;
|
184
|
+
case "goForward":
|
185
|
+
history.forward();
|
186
|
+
response.value = {statusCode: 0};
|
187
|
+
break;
|
188
|
+
case "hoverOverElement":
|
189
|
+
response.value = hoverElement(element, message.request.elementId);
|
190
|
+
break;
|
191
|
+
case "injectEmbed":
|
192
|
+
injectEmbed();
|
193
|
+
break;
|
194
|
+
case "isElementDisplayed":
|
195
|
+
response.value = {statusCode: 0, value: isElementDisplayed(element)};
|
196
|
+
response.wait = false;
|
197
|
+
break;
|
198
|
+
case "isElementEnabled":
|
199
|
+
response.value = {statusCode: 0, value: !element.disabled};
|
200
|
+
response.wait = false;
|
201
|
+
break;
|
202
|
+
case "isElementSelected":
|
203
|
+
response.value = {statusCode: 0, value: findWhetherElementIsSelected(element)};
|
204
|
+
response.wait = false;
|
205
|
+
break;
|
206
|
+
case "refresh":
|
207
|
+
ChromeDriverContentScript.currentDocument.location.reload(true);
|
208
|
+
response.value = {statusCode: 0};
|
209
|
+
break;
|
210
|
+
case "sendKeysToElement":
|
211
|
+
response.value = sendElementKeys(element, message.request.keys, message.request.elementId);
|
212
|
+
response.wait = false;
|
213
|
+
break;
|
214
|
+
case "sendElementNonNativeKeys":
|
215
|
+
response.value = sendElementNonNativeKeys(element, message.request.keys);
|
216
|
+
response.wait = false;
|
217
|
+
break;
|
218
|
+
case "setElementSelected":
|
219
|
+
response.value = selectElement(element);
|
220
|
+
break;
|
221
|
+
case "getActiveElement":
|
222
|
+
response.value = {statusCode: 0, value: [addElementToInternalArray(ChromeDriverContentScript.currentDocument.activeElement).toString()]};
|
223
|
+
response.wait = false;
|
224
|
+
break;
|
225
|
+
case "switchToNamedIFrameIfOneExists":
|
226
|
+
response.value = switchToNamedIFrameIfOneExists(message.request.name);
|
227
|
+
response.wait = false;
|
228
|
+
break;
|
229
|
+
case "submitElement":
|
230
|
+
response.value = submitElement(element);
|
231
|
+
break;
|
232
|
+
case "toggleElement":
|
233
|
+
response.value = toggleElement(element);
|
234
|
+
break;
|
235
|
+
case "sniffForMetaRedirects":
|
236
|
+
response.value = sniffForMetaRedirects();
|
237
|
+
break;
|
238
|
+
default:
|
239
|
+
response.value = {statusCode: 9, value: {message: message.request.request + " is unsupported"}};
|
240
|
+
break;
|
90
241
|
}
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
response.value = deleteAllCookies();
|
95
|
-
response.wait = false;
|
96
|
-
break;
|
97
|
-
case "deleteCookie":
|
98
|
-
response.value = deleteCookie(message.request.name);
|
99
|
-
response.wait = false;
|
100
|
-
break;
|
101
|
-
case "executeScript":
|
102
|
-
execute(message.request.script, message.request.args);
|
103
|
-
//Sends port message back to background page from its own callback
|
104
|
-
break;
|
105
|
-
case "getCookies":
|
106
|
-
response.value = getCookies();
|
107
|
-
response.wait = false;
|
108
|
-
break;
|
109
|
-
case "getCookie":
|
110
|
-
response.value = getCookieNamed(message.request.name);
|
111
|
-
response.wait = false;
|
112
|
-
break;
|
113
|
-
case "findChildElement":
|
114
|
-
response.value = getElement(false, message.request.using, message.request.value, message.request.id);
|
115
|
-
response.wait = false;
|
116
|
-
break;
|
117
|
-
case "findChildElements":
|
118
|
-
response.value = getElement(true, message.request.using, message.request.value, message.request.id);
|
119
|
-
response.wait = false;
|
120
|
-
break;
|
121
|
-
case "findElement":
|
122
|
-
response.value = getElement(false, message.request.using, message.request.value);
|
123
|
-
response.wait = false;
|
124
|
-
break;
|
125
|
-
case "findElements":
|
126
|
-
response.value = getElement(true, message.request.using, message.request.value);
|
127
|
-
response.wait = false;
|
128
|
-
break;
|
129
|
-
case "getElementAttribute":
|
130
|
-
response.value = getElementAttribute(element, message.request.attribute);
|
131
|
-
response.wait = false;
|
132
|
-
break;
|
133
|
-
case "getElementValueOfCssProperty":
|
134
|
-
response.value = {statusCode: 0, value: getStyle(element, message.request.css)};
|
135
|
-
response.wait = false;
|
136
|
-
break;
|
137
|
-
case "getElementLocation":
|
138
|
-
var coords = getElementCoords(element);
|
139
|
-
response.value = {statusCode: 0, value: {type: "POINT", x: coords[0], y: coords[1]}};
|
140
|
-
response.wait = false;
|
141
|
-
break;
|
142
|
-
case "getElementLocationOnceScrolledIntoView":
|
143
|
-
element.scrollIntoView(true);
|
144
|
-
var coords = getElementCoords(element);
|
145
|
-
response.value = {statusCode: 0, value: {type: "POINT", x: coords[0], y: coords[1]}};
|
146
|
-
break;
|
147
|
-
case "getElementSize":
|
148
|
-
response.value = {statusCode: 0, value: getOffsetSizeFromSubElements(element)};
|
149
|
-
response.wait = false;
|
150
|
-
break;
|
151
|
-
case "getElementTagName":
|
152
|
-
response.value = {statusCode: 0, value: element.tagName.toLowerCase()};
|
153
|
-
response.wait = false;
|
154
|
-
break;
|
155
|
-
case "getElementText":
|
156
|
-
response.value = {statusCode: 0, value: Utils.getText(element)};
|
157
|
-
response.wait = false;
|
158
|
-
break;
|
159
|
-
case "getElementValue":
|
160
|
-
response.value = {statusCode: 0, value: element.value};
|
161
|
-
response.wait = false;
|
162
|
-
break;
|
163
|
-
case "getFrameNameFromIndex":
|
164
|
-
//TODO(danielwh): Do this by simply looking it up in window.frames when Chrome is fixed. Track: crbug.com 20773
|
165
|
-
getFrameNameFromIndex(message.request.index);
|
166
|
-
break;
|
167
|
-
case "getPageSource":
|
168
|
-
response.value = getSource();
|
169
|
-
response.wait = false;
|
170
|
-
break;
|
171
|
-
case "getTitle":
|
172
|
-
response.value = {statusCode: 0, value: ChromeDriverContentScript.currentDocument.title};
|
173
|
-
response.wait = false;
|
174
|
-
break;
|
175
|
-
case "getCurrentUrl":
|
176
|
-
response.value = {statusCode: 0, value: ChromeDriverContentScript.currentDocument.location.href};
|
177
|
-
response.wait = false;
|
178
|
-
break;
|
179
|
-
case "goBack":
|
180
|
-
history.back();
|
181
|
-
response.value = {statusCode: 0};
|
182
|
-
break;
|
183
|
-
case "goForward":
|
184
|
-
history.forward();
|
185
|
-
response.value = {statusCode: 0};
|
186
|
-
break;
|
187
|
-
case "hoverOverElement":
|
188
|
-
response.value = hoverElement(element, message.request.elementId);
|
189
|
-
break;
|
190
|
-
case "injectEmbed":
|
191
|
-
injectEmbed();
|
192
|
-
break;
|
193
|
-
case "isElementDisplayed":
|
194
|
-
response.value = {statusCode: 0, value: isElementDisplayed(element)};
|
195
|
-
response.wait = false;
|
196
|
-
break;
|
197
|
-
case "isElementEnabled":
|
198
|
-
response.value = {statusCode: 0, value: !element.disabled};
|
199
|
-
response.wait = false;
|
200
|
-
break;
|
201
|
-
case "isElementSelected":
|
202
|
-
response.value = {statusCode: 0, value: findWhetherElementIsSelected(element)};
|
203
|
-
response.wait = false;
|
204
|
-
break;
|
205
|
-
case "refresh":
|
206
|
-
ChromeDriverContentScript.currentDocument.location.reload(true);
|
207
|
-
response.value = {statusCode: 0};
|
208
|
-
break;
|
209
|
-
case "sendKeysToElement":
|
210
|
-
response.value = sendElementKeys(element, message.request.keys, message.request.elementId);
|
211
|
-
response.wait = false;
|
212
|
-
break;
|
213
|
-
case "sendElementNonNativeKeys":
|
214
|
-
response.value = sendElementNonNativeKeys(element, message.request.keys);
|
215
|
-
response.wait = false;
|
216
|
-
break;
|
217
|
-
case "setElementSelected":
|
218
|
-
response.value = selectElement(element);
|
219
|
-
break;
|
220
|
-
case "getActiveElement":
|
221
|
-
response.value = {statusCode: 0, value: [addElementToInternalArray(ChromeDriverContentScript.currentDocument.activeElement).toString()]};
|
222
|
-
response.wait = false;
|
223
|
-
break;
|
224
|
-
case "switchToNamedIFrameIfOneExists":
|
225
|
-
response.value = switchToNamedIFrameIfOneExists(message.request.name);
|
226
|
-
response.wait = false;
|
227
|
-
break;
|
228
|
-
case "submitElement":
|
229
|
-
response.value = submitElement(element);
|
230
|
-
break;
|
231
|
-
case "toggleElement":
|
232
|
-
response.value = toggleElement(element);
|
233
|
-
break;
|
234
|
-
case "sniffForMetaRedirects":
|
235
|
-
response.value = sniffForMetaRedirects();
|
236
|
-
break;
|
237
|
-
default:
|
238
|
-
response.value = {statusCode: 9, value: {message: message.request.request + " is unsupported"}};
|
239
|
-
break;
|
242
|
+
} catch (e) {
|
243
|
+
console.log("Caught exception " + e + ", sending error response");
|
244
|
+
ChromeDriverContentScript.port.postMessage({response: {statusCode: 13, value: {message: "An unexpected error occured while executing " + message.request.request + ", exception dump: " + e}}, sequenceNumber: message.sequenceNumber});
|
240
245
|
}
|
241
246
|
if (response.value != null) {
|
242
|
-
ChromeDriverContentScript.port.postMessage({response: response, sequenceNumber: message.sequenceNumber})
|
247
|
+
ChromeDriverContentScript.port.postMessage({response: response, sequenceNumber: message.sequenceNumber});
|
243
248
|
console.log("Sent response: " + JSON.stringify(response) + " (seq:" + message.sequenceNumber + ")");
|
244
249
|
}
|
245
250
|
if (message.request.followup) {
|
@@ -453,8 +458,8 @@ function getElement(plural, lookupBy, lookupValue, id) {
|
|
453
458
|
elements = getElementsByXPath(root + "//" + lookupValue);
|
454
459
|
break;
|
455
460
|
case "xpath":
|
456
|
-
if (root != "") {
|
457
|
-
//Because xpath is relative to the parent, if there is a parent, we add a /
|
461
|
+
if (root != "" && lookupValue[0] != "/") {
|
462
|
+
//Because xpath is relative to the parent, if there is a parent, and the lookup seems to be implied sub-lookup, we add a /
|
458
463
|
root = root + "/";
|
459
464
|
}
|
460
465
|
var xpath = root + lookupValue;
|
@@ -69,6 +69,10 @@ module Selenium
|
|
69
69
|
execute :request => 'close'
|
70
70
|
end
|
71
71
|
|
72
|
+
def refresh
|
73
|
+
execute :request => 'refresh'
|
74
|
+
end
|
75
|
+
|
72
76
|
def getWindowHandles
|
73
77
|
execute :request => 'getWindowHandles'
|
74
78
|
end
|
@@ -213,8 +217,10 @@ module Selenium
|
|
213
217
|
end
|
214
218
|
|
215
219
|
def getElementSize(element)
|
216
|
-
execute :request => 'getElementSize',
|
217
|
-
|
220
|
+
data = execute :request => 'getElementSize',
|
221
|
+
:elementId => element
|
222
|
+
|
223
|
+
Dimension.new data['width'], data['height']
|
218
224
|
end
|
219
225
|
|
220
226
|
def sendKeysToElement(element, string)
|
@@ -269,7 +275,7 @@ module Selenium
|
|
269
275
|
end
|
270
276
|
alias_method :switchToActiveElement, :getActiveElement
|
271
277
|
|
272
|
-
def hoverOverElement
|
278
|
+
def hoverOverElement(element)
|
273
279
|
execute :request => 'hoverOverElement',
|
274
280
|
:elementId => element
|
275
281
|
end
|