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.
Files changed (192) hide show
  1. data/COPYING +204 -0
  2. data/chrome/prebuilt/Win32/Release/npchromedriver.dll +0 -0
  3. data/chrome/prebuilt/x64/Release/npchromedriver.dll +0 -0
  4. data/chrome/src/extension/background.html +9 -0
  5. data/chrome/src/extension/background.js +995 -0
  6. data/chrome/src/extension/content_script.js +1321 -0
  7. data/chrome/src/extension/icons/busy.png +0 -0
  8. data/chrome/src/extension/icons/free.png +0 -0
  9. data/chrome/src/extension/manifest-nonwin.json +19 -0
  10. data/chrome/src/extension/manifest-win.json +20 -0
  11. data/chrome/src/extension/utils.js +231 -0
  12. data/chrome/src/rb/lib/selenium/webdriver/chrome.rb +8 -0
  13. data/chrome/src/rb/lib/selenium/webdriver/chrome/bridge.rb +358 -0
  14. data/chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb +124 -0
  15. data/chrome/src/rb/lib/selenium/webdriver/chrome/launcher.rb +135 -0
  16. data/common/src/js/abstractcommandprocessor.js +134 -0
  17. data/common/src/js/asserts.js +296 -0
  18. data/common/src/js/by.js +149 -0
  19. data/common/src/js/command.js +304 -0
  20. data/common/src/js/context.js +58 -0
  21. data/common/src/js/core/Blank.html +7 -0
  22. data/common/src/js/core/InjectedRemoteRunner.html +8 -0
  23. data/common/src/js/core/RemoteRunner.html +101 -0
  24. data/common/src/js/core/SeleniumLog.html +109 -0
  25. data/common/src/js/core/TestPrompt.html +145 -0
  26. data/common/src/js/core/TestRunner-splash.html +55 -0
  27. data/common/src/js/core/TestRunner.html +165 -0
  28. data/common/src/js/core/icons/all.png +0 -0
  29. data/common/src/js/core/icons/continue.png +0 -0
  30. data/common/src/js/core/icons/continue_disabled.png +0 -0
  31. data/common/src/js/core/icons/pause.png +0 -0
  32. data/common/src/js/core/icons/pause_disabled.png +0 -0
  33. data/common/src/js/core/icons/selected.png +0 -0
  34. data/common/src/js/core/icons/step.png +0 -0
  35. data/common/src/js/core/icons/step_disabled.png +0 -0
  36. data/common/src/js/core/lib/cssQuery/cssQuery-p.js +6 -0
  37. data/common/src/js/core/lib/cssQuery/src/cssQuery-level2.js +142 -0
  38. data/common/src/js/core/lib/cssQuery/src/cssQuery-level3.js +150 -0
  39. data/common/src/js/core/lib/cssQuery/src/cssQuery-standard.js +53 -0
  40. data/common/src/js/core/lib/cssQuery/src/cssQuery.js +356 -0
  41. data/common/src/js/core/lib/prototype.js +2006 -0
  42. data/common/src/js/core/lib/scriptaculous/builder.js +101 -0
  43. data/common/src/js/core/lib/scriptaculous/controls.js +815 -0
  44. data/common/src/js/core/lib/scriptaculous/dragdrop.js +915 -0
  45. data/common/src/js/core/lib/scriptaculous/effects.js +958 -0
  46. data/common/src/js/core/lib/scriptaculous/scriptaculous.js +47 -0
  47. data/common/src/js/core/lib/scriptaculous/slider.js +283 -0
  48. data/common/src/js/core/lib/scriptaculous/unittest.js +383 -0
  49. data/common/src/js/core/lib/snapsie.js +91 -0
  50. data/common/src/js/core/scripts/find_matching_child.js +69 -0
  51. data/common/src/js/core/scripts/htmlutils.js +8716 -0
  52. data/common/src/js/core/scripts/injection.html +72 -0
  53. data/common/src/js/core/scripts/selenium-api.js +3291 -0
  54. data/common/src/js/core/scripts/selenium-browserbot.js +2457 -0
  55. data/common/src/js/core/scripts/selenium-browserdetect.js +153 -0
  56. data/common/src/js/core/scripts/selenium-commandhandlers.js +379 -0
  57. data/common/src/js/core/scripts/selenium-executionloop.js +175 -0
  58. data/common/src/js/core/scripts/selenium-logging.js +148 -0
  59. data/common/src/js/core/scripts/selenium-remoterunner.js +695 -0
  60. data/common/src/js/core/scripts/selenium-testrunner.js +1362 -0
  61. data/common/src/js/core/scripts/selenium-version.js +5 -0
  62. data/common/src/js/core/scripts/ui-doc.html +808 -0
  63. data/common/src/js/core/scripts/ui-element.js +1644 -0
  64. data/common/src/js/core/scripts/ui-map-sample.js +979 -0
  65. data/common/src/js/core/scripts/user-extensions.js +3 -0
  66. data/common/src/js/core/scripts/user-extensions.js.sample +75 -0
  67. data/common/src/js/core/scripts/xmlextras.js +153 -0
  68. data/common/src/js/core/selenium-logo.png +0 -0
  69. data/common/src/js/core/selenium-test.css +43 -0
  70. data/common/src/js/core/selenium.css +316 -0
  71. data/common/src/js/core/xpath/dom.js +566 -0
  72. data/common/src/js/core/xpath/javascript-xpath-0.1.11.js +2816 -0
  73. data/common/src/js/core/xpath/util.js +549 -0
  74. data/common/src/js/core/xpath/xmltoken.js +149 -0
  75. data/common/src/js/core/xpath/xpath.js +2481 -0
  76. data/common/src/js/extension/README +2 -0
  77. data/common/src/js/extension/dommessenger.js +152 -0
  78. data/common/src/js/factory.js +55 -0
  79. data/common/src/js/future.js +141 -0
  80. data/common/src/js/jsunit.js +40 -0
  81. data/common/src/js/jsunit/app/css/jsUnitStyle.css +50 -0
  82. data/common/src/js/jsunit/app/css/readme +10 -0
  83. data/common/src/js/jsunit/app/emptyPage.html +11 -0
  84. data/common/src/js/jsunit/app/jsUnitCore.js +534 -0
  85. data/common/src/js/jsunit/app/jsUnitMockTimeout.js +81 -0
  86. data/common/src/js/jsunit/app/jsUnitTestManager.js +705 -0
  87. data/common/src/js/jsunit/app/jsUnitTestSuite.js +44 -0
  88. data/common/src/js/jsunit/app/jsUnitTracer.js +102 -0
  89. data/common/src/js/jsunit/app/jsUnitVersionCheck.js +59 -0
  90. data/common/src/js/jsunit/app/main-counts-errors.html +12 -0
  91. data/common/src/js/jsunit/app/main-counts-failures.html +13 -0
  92. data/common/src/js/jsunit/app/main-counts-runs.html +13 -0
  93. data/common/src/js/jsunit/app/main-counts.html +21 -0
  94. data/common/src/js/jsunit/app/main-data.html +178 -0
  95. data/common/src/js/jsunit/app/main-errors.html +23 -0
  96. data/common/src/js/jsunit/app/main-frame.html +19 -0
  97. data/common/src/js/jsunit/app/main-loader.html +45 -0
  98. data/common/src/js/jsunit/app/main-progress.html +25 -0
  99. data/common/src/js/jsunit/app/main-results.html +67 -0
  100. data/common/src/js/jsunit/app/main-status.html +13 -0
  101. data/common/src/js/jsunit/app/testContainer.html +16 -0
  102. data/common/src/js/jsunit/app/testContainerController.html +77 -0
  103. data/common/src/js/jsunit/app/xbDebug.js +306 -0
  104. data/common/src/js/jsunit/changelog.txt +60 -0
  105. data/common/src/js/jsunit/css/jsUnitStyle.css +83 -0
  106. data/common/src/js/jsunit/images/green.gif +0 -0
  107. data/common/src/js/jsunit/images/logo_jsunit.gif +0 -0
  108. data/common/src/js/jsunit/images/powerby-transparent.gif +0 -0
  109. data/common/src/js/jsunit/images/red.gif +0 -0
  110. data/common/src/js/jsunit/licenses/JDOM_license.txt +56 -0
  111. data/common/src/js/jsunit/licenses/Jetty_license.html +213 -0
  112. data/common/src/js/jsunit/licenses/MPL-1.1.txt +470 -0
  113. data/common/src/js/jsunit/licenses/gpl-2.txt +340 -0
  114. data/common/src/js/jsunit/licenses/index.html +141 -0
  115. data/common/src/js/jsunit/licenses/lgpl-2.1.txt +504 -0
  116. data/common/src/js/jsunit/licenses/mpl-tri-license-c.txt +35 -0
  117. data/common/src/js/jsunit/licenses/mpl-tri-license-html.txt +35 -0
  118. data/common/src/js/jsunit/readme.txt +19 -0
  119. data/common/src/js/jsunit/testRunner.html +167 -0
  120. data/common/src/js/jsunit/version.txt +1 -0
  121. data/common/src/js/key.js +117 -0
  122. data/common/src/js/localcommandprocessor.js +185 -0
  123. data/common/src/js/testcase.js +217 -0
  124. data/common/src/js/timing.js +89 -0
  125. data/common/src/js/webdriver.js +890 -0
  126. data/common/src/js/webelement.js +485 -0
  127. data/common/src/rb/README +30 -0
  128. data/common/src/rb/lib/selenium-webdriver.rb +1 -0
  129. data/common/src/rb/lib/selenium/webdriver.rb +67 -0
  130. data/common/src/rb/lib/selenium/webdriver/bridge_helper.rb +91 -0
  131. data/common/src/rb/lib/selenium/webdriver/child_process.rb +180 -0
  132. data/common/src/rb/lib/selenium/webdriver/core_ext/dir.rb +41 -0
  133. data/common/src/rb/lib/selenium/webdriver/driver.rb +252 -0
  134. data/common/src/rb/lib/selenium/webdriver/driver_extensions/takes_screenshot.rb +24 -0
  135. data/common/src/rb/lib/selenium/webdriver/element.rb +262 -0
  136. data/common/src/rb/lib/selenium/webdriver/error.rb +67 -0
  137. data/common/src/rb/lib/selenium/webdriver/find.rb +89 -0
  138. data/common/src/rb/lib/selenium/webdriver/keys.rb +84 -0
  139. data/common/src/rb/lib/selenium/webdriver/navigation.rb +27 -0
  140. data/common/src/rb/lib/selenium/webdriver/options.rb +50 -0
  141. data/common/src/rb/lib/selenium/webdriver/platform.rb +86 -0
  142. data/common/src/rb/lib/selenium/webdriver/target_locator.rb +70 -0
  143. data/firefox/prebuilt/Win32/Release/webdriver-firefox.dll +0 -0
  144. data/firefox/prebuilt/linux/Release/libwebdriver-firefox.so +0 -0
  145. data/firefox/prebuilt/linux/Release/x_ignore_nofocus.so +0 -0
  146. data/firefox/prebuilt/linux64/Release/libwebdriver-firefox.so +0 -0
  147. data/firefox/prebuilt/linux64/Release/x_ignore_nofocus.so +0 -0
  148. data/firefox/prebuilt/nsICommandProcessor.xpt +0 -0
  149. data/firefox/prebuilt/nsINativeEvents.xpt +0 -0
  150. data/firefox/prebuilt/nsIResponseHandler.xpt +0 -0
  151. data/firefox/src/extension/chrome.manifest +3 -0
  152. data/firefox/src/extension/components/badCertListener.js +294 -0
  153. data/firefox/src/extension/components/context.js +37 -0
  154. data/firefox/src/extension/components/driver-component.js +127 -0
  155. data/firefox/src/extension/components/firefoxDriver.js +810 -0
  156. data/firefox/src/extension/components/json2.js +273 -0
  157. data/firefox/src/extension/components/keytest.html +554 -0
  158. data/firefox/src/extension/components/nsCommandProcessor.js +643 -0
  159. data/firefox/src/extension/components/promptService.js +208 -0
  160. data/firefox/src/extension/components/screenshooter.js +81 -0
  161. data/firefox/src/extension/components/socketListener.js +185 -0
  162. data/firefox/src/extension/components/utils.js +1263 -0
  163. data/firefox/src/extension/components/webLoadingListener.js +57 -0
  164. data/firefox/src/extension/components/webdriverserver.js +106 -0
  165. data/firefox/src/extension/components/wrappedElement.js +683 -0
  166. data/firefox/src/extension/content/fxdriver.xul +30 -0
  167. data/firefox/src/extension/content/server.js +95 -0
  168. data/firefox/src/extension/idl/nsICommandProcessor.idl +38 -0
  169. data/firefox/src/extension/idl/nsIResponseHandler.idl +34 -0
  170. data/firefox/src/extension/install.rdf +29 -0
  171. data/firefox/src/rb/lib/selenium/webdriver/firefox.rb +31 -0
  172. data/firefox/src/rb/lib/selenium/webdriver/firefox/binary.rb +107 -0
  173. data/firefox/src/rb/lib/selenium/webdriver/firefox/bridge.rb +484 -0
  174. data/firefox/src/rb/lib/selenium/webdriver/firefox/extension_connection.rb +90 -0
  175. data/firefox/src/rb/lib/selenium/webdriver/firefox/launcher.rb +155 -0
  176. data/firefox/src/rb/lib/selenium/webdriver/firefox/profile.rb +233 -0
  177. data/firefox/src/rb/lib/selenium/webdriver/firefox/profiles_ini.rb +59 -0
  178. data/firefox/src/rb/lib/selenium/webdriver/firefox/util.rb +23 -0
  179. data/jobbie/prebuilt/Win32/Release/InternetExplorerDriver.dll +0 -0
  180. data/jobbie/prebuilt/x64/Release/InternetExplorerDriver.dll +0 -0
  181. data/jobbie/src/rb/lib/selenium/webdriver/ie.rb +14 -0
  182. data/jobbie/src/rb/lib/selenium/webdriver/ie/bridge.rb +565 -0
  183. data/jobbie/src/rb/lib/selenium/webdriver/ie/lib.rb +99 -0
  184. data/jobbie/src/rb/lib/selenium/webdriver/ie/util.rb +147 -0
  185. data/remote/client/src/rb/lib/selenium/webdriver/remote.rb +16 -0
  186. data/remote/client/src/rb/lib/selenium/webdriver/remote/bridge.rb +408 -0
  187. data/remote/client/src/rb/lib/selenium/webdriver/remote/capabilities.rb +105 -0
  188. data/remote/client/src/rb/lib/selenium/webdriver/remote/commands.rb +53 -0
  189. data/remote/client/src/rb/lib/selenium/webdriver/remote/default_http_client.rb +71 -0
  190. data/remote/client/src/rb/lib/selenium/webdriver/remote/response.rb +49 -0
  191. data/remote/client/src/rb/lib/selenium/webdriver/remote/server_error.rb +32 -0
  192. metadata +303 -0
@@ -0,0 +1,105 @@
1
+ module Selenium
2
+ module WebDriver
3
+ module Remote
4
+
5
+ #
6
+ # Specification of the desired and/or actual capabilities of the browser that the
7
+ # server is being asked to create.
8
+ #
9
+ class Capabilities
10
+
11
+ attr_accessor :browser_name, :version, :platform, :javascript_enabled
12
+ alias_method :javascript?, :javascript_enabled
13
+
14
+ #
15
+ # Convenience methods for the common choices.
16
+ #
17
+
18
+ class << self
19
+ def firefox(opts = {})
20
+ new({
21
+ :browser_name => "firefox",
22
+ :javascript_enabled => true
23
+ }.merge(opts))
24
+ end
25
+
26
+ def internet_explorer(opts = {})
27
+ new({
28
+ :browser_name => "internet explorer",
29
+ :platform => :windows
30
+ }.merge(opts))
31
+ end
32
+
33
+ def htmlunit(opts = {})
34
+ new({
35
+ :browser_name => "htmlunit"
36
+ }.merge(opts))
37
+ end
38
+
39
+ def safari(opts = {})
40
+ new({
41
+ :browser_name => "safari",
42
+ :platform => :mac
43
+ }.merge(opts))
44
+ end
45
+
46
+ def iphone(opts = {})
47
+ new({
48
+ :browser_name => "iphone",
49
+ :platform => :mac
50
+ }.merge(opts))
51
+ end
52
+
53
+ def chrome(opts = {})
54
+ new({
55
+ :browser_name => "chrome",
56
+ :javascript_enabled => true
57
+ }.merge(opts))
58
+ end
59
+
60
+ #
61
+ # @api private
62
+ #
63
+
64
+ def json_create(data)
65
+ new(
66
+ :browser_name => data["browserName"],
67
+ :version => data["version"],
68
+ :platform => data["platform"].downcase.to_sym,
69
+ :javascript_enabled => data["javascriptEnabled"]
70
+ )
71
+ end
72
+ end
73
+
74
+ # @option :browser_name [String] required browser name
75
+ # @option :version [String] required browser version number
76
+ # @option :platform [Symbol] one of :any, :win, :mac, or :x
77
+ # @option :javascript_enabled [Boolean] should the test run with javascript enabled?
78
+ #
79
+ # @api public
80
+ #
81
+
82
+ def initialize(opts = {})
83
+ @browser_name = opts[:browser_name] || ""
84
+ @version = opts[:version] || ""
85
+ @platform = opts[:platform] || :any
86
+ @javascript_enabled = opts[:javascript_enabled] || false
87
+ end
88
+
89
+ #
90
+ # @api private
91
+ #
92
+
93
+ def to_json(*args)
94
+ {
95
+ "browserName" => browser_name,
96
+ "version" => version,
97
+ "platform" => platform.to_s.upcase,
98
+ "javascriptEnabled" => javascript?
99
+ }.to_json(*args)
100
+ end
101
+
102
+ end # Capabilities
103
+ end # Remote
104
+ end # WebDriver
105
+ end # Selenium
@@ -0,0 +1,53 @@
1
+ class Selenium::WebDriver::Remote::Bridge
2
+ command :addCookie, :post, "session/:session_id/:context/cookie"
3
+ command :goBack, :post, "session/:session_id/:context/back"
4
+ command :clearElement, :post, "session/:session_id/:context/element/:id/clear"
5
+ command :clickElement, :post, "session/:session_id/:context/element/:id/click"
6
+ command :close, :delete, "session/:session_id/:context/window"
7
+ command :getCurrentUrl, :get, "session/:session_id/:context/url"
8
+ command :deleteAllCookies, :delete, "session/:session_id/:context/cookie"
9
+ command :deleteCookie, :delete, "session/:session_id/:context/cookie/:name"
10
+ command :dragElement, :post, "session/:session_id/:context/element/:id/drag"
11
+ command :elementEquals, :get, "session/:session_id/:context/element/:id/equals/:other"
12
+ command :executeScript, :post, "session/:session_id/:context/execute"
13
+ command :findElement, :post, "session/:session_id/:context/element"
14
+ command :findElements, :post, "session/:session_id/:context/elements"
15
+ command :findChildElement, :post, "session/:session_id/:context/element/:id/element/:using"
16
+ command :findChildElements, :post, "session/:session_id/:context/element/:id/elements/:using"
17
+ command :goForward, :post, "session/:session_id/:context/forward"
18
+ command :get, :post, "session/:session_id/:context/url"
19
+ command :getActiveElement, :post, "session/:session_id/:context/element/active"
20
+ command :getAllCookies, :get, "session/:session_id/:context/cookie"
21
+ # command :getCookie # TODO: getCookie
22
+ command :getCurrentWindowHandle, :get, "session/:session_id/:context/window_handle"
23
+ command :getElementAttribute, :get, "session/:session_id/:context/element/:id/attribute/:name"
24
+ command :getElementLocation, :get, "session/:session_id/:context/element/:id/location"
25
+ command :getElementSize, :get, "session/:session_id/:context/element/:id/size"
26
+ command :getElementText, :get, "session/:session_id/:context/element/:id/text"
27
+ command :getElementValue, :get, "session/:session_id/:context/element/:id/value"
28
+ command :getSpeed, :get, "session/:session_id/:context/speed"
29
+ command :getElementTagName, :get, "session/:session_id/:context/element/:id/name"
30
+ command :getTitle, :get, "session/:session_id/:context/title"
31
+ command :getElementValueOfCssProperty, :get, "session/:session_id/:context/element/:id/css/:property_name"
32
+ command :getVisible, :get, "session/:session_id/:context/visible"
33
+ command :getWindowHandles, :get, "session/:session_id/:context/window_handles"
34
+ command :hoverOverElement, :post, "session/:session_id/:context/element/:id/hover"
35
+ command :isElementDisplayed, :get, "session/:session_id/:context/element/:id/displayed"
36
+ command :isElementEnabled, :get, "session/:session_id/:context/element/:id/enabled"
37
+ command :isElementSelected, :get, "session/:session_id/:context/element/:id/selected"
38
+ command :newSession, :post, "session"
39
+ command :getPageSource, :get, "session/:session_id/:context/source"
40
+ command :quit, :delete, "session/:session_id"
41
+ command :refresh, :post, "session/:session_id/:context/refresh"
42
+ command :screenshot, :get, "session/:session_id/:context/screenshot"
43
+ command :sendKeysToElement, :post, "session/:session_id/:context/element/:id/value"
44
+ command :setElementSelected, :post, "session/:session_id/:context/element/:id/selected"
45
+ command :setSpeed, :post, "session/:session_id/:context/speed"
46
+ command :setVisible, :post, "session/:session_id/:context/visible"
47
+ command :submitElement, :post, "session/:session_id/:context/element/:id/submit"
48
+ command :switchToFrame, :post, "session/:session_id/:context/frame/:id"
49
+ # command :switchToFrameByIndex # TODO: switchToFrameByIndex
50
+ # command :switchToDefaultContent # TODO: switchToDefaultContent
51
+ command :switchToWindow, :post, "session/:session_id/:context/window/:name"
52
+ command :toggleElement, :post, "session/:session_id/:context/element/:id/toggle"
53
+ end
@@ -0,0 +1,71 @@
1
+ require "net/http"
2
+
3
+ module Selenium
4
+ module WebDriver
5
+ module Remote
6
+ class DefaultHttpClient
7
+ CONTENT_TYPE = "application/json"
8
+ DEFAULT_HEADERS = { "Accept" => CONTENT_TYPE }
9
+
10
+ class RetryException < StandardError; end
11
+
12
+ def initialize(url)
13
+ @server_url = url
14
+ end
15
+
16
+ def call(verb, url, *args)
17
+ response = nil
18
+ url = @server_url.merge(url) unless url.kind_of?(URI)
19
+ headers = DEFAULT_HEADERS.dup
20
+
21
+ if args.any?
22
+ headers.merge!("Content-Type" => "#{CONTENT_TYPE}; charset=utf-8")
23
+ payload = args.to_json
24
+ puts " >>> #{payload}" if $DEBUG
25
+ end
26
+
27
+ begin
28
+ request = Net::HTTP.const_get(verb.to_s.capitalize).new(url.path, headers)
29
+
30
+ # TODO: should be checking against a maximum redirect count
31
+ http.request(request, payload) do |res|
32
+ if res.kind_of? Net::HTTPRedirection
33
+ verb, payload = :get, nil
34
+ url = URI.parse(res["Location"])
35
+ raise RetryException
36
+ else
37
+ response = create_response(res)
38
+ end
39
+ end
40
+
41
+ response
42
+ rescue RetryException
43
+ retry
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def http
50
+ # ignoring SSL for now
51
+ @http ||= Net::HTTP.new @server_url.host, @server_url.port
52
+ end
53
+
54
+ def create_response(res)
55
+ puts "<- #{res.body}\n" if $DEBUG
56
+ if res.content_type == CONTENT_TYPE
57
+ Response.new do |r|
58
+ r.code = res.code.to_i
59
+ r.payload = JSON.parse(res.body.strip)
60
+ end
61
+ elsif res.code == '204'
62
+ Response.new { |r| r.code = res.code.to_i }
63
+ else
64
+ raise "Unexpected content type: #{res.content_type.inspect} (#{res.code})\n#{res.body}"
65
+ end
66
+ end
67
+
68
+ end # DefaultHttpClient
69
+ end # Remote
70
+ end # WebDriver
71
+ end # Selenium
@@ -0,0 +1,49 @@
1
+ module Selenium
2
+ module WebDriver
3
+ module Remote
4
+ class Response
5
+
6
+ attr_accessor :code
7
+ attr_writer :payload
8
+
9
+ def initialize
10
+ yield self if block_given?
11
+ assert_ok
12
+ end
13
+
14
+ def error
15
+ if payload['error']
16
+ value = payload['value']
17
+ # the remote server gets this wrong, where the value is double encoded as JSON
18
+ # the iphone driver does the right thing
19
+ value.kind_of?(String) ? JSON.parse(value) : value
20
+ end
21
+ end
22
+
23
+ def [](key)
24
+ payload[key]
25
+ end
26
+
27
+ def payload
28
+ @payload ||= {}
29
+ end
30
+
31
+ private
32
+
33
+ def assert_ok
34
+ if @code.nil? || @code > 400
35
+ if e = error()
36
+ raise(
37
+ Error.for_remote_class(e['class']),
38
+ e['message'] || self
39
+ )
40
+ else
41
+ raise ServerError, self
42
+ end
43
+ end
44
+ end
45
+
46
+ end # Response
47
+ end # Remote
48
+ end # WebDriver
49
+ end # Selenium
@@ -0,0 +1,32 @@
1
+ module Selenium
2
+ module WebDriver
3
+ module Error
4
+ class ServerError < StandardError
5
+
6
+ def initialize(response)
7
+ return super(response) if response.kind_of?(String)
8
+
9
+ if response.respond_to?(:error) && err = response.error
10
+ super(err["message"] || err['class'])
11
+ else
12
+ super("status code #{response.code}")
13
+ end
14
+ end
15
+
16
+ end
17
+
18
+ REMOTE_EXCEPTIONS = {
19
+ 'org.openqa.selenium.NoSuchElementException' => NoSuchElementError,
20
+ 'org.openqa.selenium.NoSuchFrameException' => NoSuchFrameError,
21
+ 'org.openqa.selenium.NoSuchWindowException' => NoSuchWindowError,
22
+ }
23
+
24
+ class << self
25
+ def for_remote_class(klass)
26
+ REMOTE_EXCEPTIONS[klass] || ServerError
27
+ end
28
+ end
29
+
30
+ end # Error
31
+ end # WebDriver
32
+ end # Selenium
metadata ADDED
@@ -0,0 +1,303 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rainux-selenium-webdriver
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 17
9
+ version: 0.0.17
10
+ platform: ruby
11
+ authors:
12
+ - Jari Bakken
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-03-02 00:00:00 +08:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: json_pure
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :runtime
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: ffi
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :runtime
43
+ version_requirements: *id002
44
+ - !ruby/object:Gem::Dependency
45
+ name: rspec
46
+ prerelease: false
47
+ requirement: &id003 !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
54
+ type: :development
55
+ version_requirements: *id003
56
+ - !ruby/object:Gem::Dependency
57
+ name: rack
58
+ prerelease: false
59
+ requirement: &id004 !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ segments:
64
+ - 0
65
+ version: "0"
66
+ type: :development
67
+ version_requirements: *id004
68
+ description: WebDriver is a tool for writing automated tests of websites. It aims to mimic the behaviour of a real user, and as such interacts with the HTML of the application.
69
+ email: jari.bakken@gmail.com
70
+ executables: []
71
+
72
+ extensions: []
73
+
74
+ extra_rdoc_files: []
75
+
76
+ files:
77
+ - COPYING
78
+ - common/src/rb/lib/selenium/webdriver/error.rb
79
+ - common/src/rb/lib/selenium/webdriver/driver.rb
80
+ - common/src/rb/lib/selenium/webdriver/platform.rb
81
+ - common/src/rb/lib/selenium/webdriver/navigation.rb
82
+ - common/src/rb/lib/selenium/webdriver/element.rb
83
+ - common/src/rb/lib/selenium/webdriver/find.rb
84
+ - common/src/rb/lib/selenium/webdriver/child_process.rb
85
+ - common/src/rb/lib/selenium/webdriver/target_locator.rb
86
+ - common/src/rb/lib/selenium/webdriver/core_ext/dir.rb
87
+ - common/src/rb/lib/selenium/webdriver/bridge_helper.rb
88
+ - common/src/rb/lib/selenium/webdriver/options.rb
89
+ - common/src/rb/lib/selenium/webdriver/driver_extensions/takes_screenshot.rb
90
+ - common/src/rb/lib/selenium/webdriver/keys.rb
91
+ - common/src/rb/lib/selenium/webdriver.rb
92
+ - common/src/rb/lib/selenium-webdriver.rb
93
+ - common/src/rb/README
94
+ - common/src/js/jsunit/readme.txt
95
+ - common/src/js/jsunit/testRunner.html
96
+ - common/src/js/jsunit/version.txt
97
+ - common/src/js/jsunit/app/emptyPage.html
98
+ - common/src/js/jsunit/app/main-data.html
99
+ - common/src/js/jsunit/app/main-loader.html
100
+ - common/src/js/jsunit/app/main-results.html
101
+ - common/src/js/jsunit/app/testContainerController.html
102
+ - common/src/js/jsunit/app/jsUnitTracer.js
103
+ - common/src/js/jsunit/app/jsUnitVersionCheck.js
104
+ - common/src/js/jsunit/app/testContainer.html
105
+ - common/src/js/jsunit/app/css/readme
106
+ - common/src/js/jsunit/app/css/jsUnitStyle.css
107
+ - common/src/js/jsunit/app/jsUnitTestSuite.js
108
+ - common/src/js/jsunit/app/main-status.html
109
+ - common/src/js/jsunit/app/main-frame.html
110
+ - common/src/js/jsunit/app/jsUnitTestManager.js
111
+ - common/src/js/jsunit/app/main-progress.html
112
+ - common/src/js/jsunit/app/main-counts-failures.html
113
+ - common/src/js/jsunit/app/jsUnitCore.js
114
+ - common/src/js/jsunit/app/jsUnitMockTimeout.js
115
+ - common/src/js/jsunit/app/main-counts-runs.html
116
+ - common/src/js/jsunit/app/main-counts-errors.html
117
+ - common/src/js/jsunit/app/main-errors.html
118
+ - common/src/js/jsunit/app/xbDebug.js
119
+ - common/src/js/jsunit/app/main-counts.html
120
+ - common/src/js/jsunit/licenses/mpl-tri-license-html.txt
121
+ - common/src/js/jsunit/licenses/index.html
122
+ - common/src/js/jsunit/licenses/MPL-1.1.txt
123
+ - common/src/js/jsunit/licenses/JDOM_license.txt
124
+ - common/src/js/jsunit/licenses/mpl-tri-license-c.txt
125
+ - common/src/js/jsunit/licenses/lgpl-2.1.txt
126
+ - common/src/js/jsunit/licenses/Jetty_license.html
127
+ - common/src/js/jsunit/licenses/gpl-2.txt
128
+ - common/src/js/jsunit/css/jsUnitStyle.css
129
+ - common/src/js/jsunit/changelog.txt
130
+ - common/src/js/jsunit/images/powerby-transparent.gif
131
+ - common/src/js/jsunit/images/logo_jsunit.gif
132
+ - common/src/js/jsunit/images/red.gif
133
+ - common/src/js/jsunit/images/green.gif
134
+ - common/src/js/by.js
135
+ - common/src/js/asserts.js
136
+ - common/src/js/factory.js
137
+ - common/src/js/key.js
138
+ - common/src/js/timing.js
139
+ - common/src/js/context.js
140
+ - common/src/js/jsunit.js
141
+ - common/src/js/core/InjectedRemoteRunner.html
142
+ - common/src/js/core/scripts/user-extensions.js.sample
143
+ - common/src/js/core/scripts/selenium-executionloop.js
144
+ - common/src/js/core/scripts/xmlextras.js
145
+ - common/src/js/core/scripts/selenium-browserdetect.js
146
+ - common/src/js/core/scripts/selenium-commandhandlers.js
147
+ - common/src/js/core/scripts/selenium-logging.js
148
+ - common/src/js/core/scripts/selenium-remoterunner.js
149
+ - common/src/js/core/scripts/selenium-version.js
150
+ - common/src/js/core/scripts/selenium-browserbot.js
151
+ - common/src/js/core/scripts/selenium-testrunner.js
152
+ - common/src/js/core/scripts/injection.html
153
+ - common/src/js/core/scripts/find_matching_child.js
154
+ - common/src/js/core/scripts/user-extensions.js
155
+ - common/src/js/core/scripts/selenium-api.js
156
+ - common/src/js/core/scripts/ui-element.js
157
+ - common/src/js/core/scripts/ui-map-sample.js
158
+ - common/src/js/core/scripts/htmlutils.js
159
+ - common/src/js/core/scripts/ui-doc.html
160
+ - common/src/js/core/selenium.css
161
+ - common/src/js/core/Blank.html
162
+ - common/src/js/core/lib/snapsie.js
163
+ - common/src/js/core/lib/cssQuery/src/cssQuery.js
164
+ - common/src/js/core/lib/cssQuery/src/cssQuery-level2.js
165
+ - common/src/js/core/lib/cssQuery/src/cssQuery-standard.js
166
+ - common/src/js/core/lib/cssQuery/src/cssQuery-level3.js
167
+ - common/src/js/core/lib/cssQuery/cssQuery-p.js
168
+ - common/src/js/core/lib/scriptaculous/unittest.js
169
+ - common/src/js/core/lib/scriptaculous/controls.js
170
+ - common/src/js/core/lib/scriptaculous/scriptaculous.js
171
+ - common/src/js/core/lib/scriptaculous/slider.js
172
+ - common/src/js/core/lib/scriptaculous/builder.js
173
+ - common/src/js/core/lib/scriptaculous/dragdrop.js
174
+ - common/src/js/core/lib/scriptaculous/effects.js
175
+ - common/src/js/core/lib/prototype.js
176
+ - common/src/js/core/selenium-test.css
177
+ - common/src/js/core/icons/pause.png
178
+ - common/src/js/core/icons/step.png
179
+ - common/src/js/core/icons/selected.png
180
+ - common/src/js/core/icons/all.png
181
+ - common/src/js/core/icons/pause_disabled.png
182
+ - common/src/js/core/icons/continue_disabled.png
183
+ - common/src/js/core/icons/step_disabled.png
184
+ - common/src/js/core/icons/continue.png
185
+ - common/src/js/core/TestRunner-splash.html
186
+ - common/src/js/core/TestRunner.html
187
+ - common/src/js/core/RemoteRunner.html
188
+ - common/src/js/core/xpath/xpath.js
189
+ - common/src/js/core/xpath/javascript-xpath-0.1.11.js
190
+ - common/src/js/core/xpath/xmltoken.js
191
+ - common/src/js/core/xpath/dom.js
192
+ - common/src/js/core/xpath/util.js
193
+ - common/src/js/core/selenium-logo.png
194
+ - common/src/js/core/TestPrompt.html
195
+ - common/src/js/core/SeleniumLog.html
196
+ - common/src/js/localcommandprocessor.js
197
+ - common/src/js/webdriver.js
198
+ - common/src/js/abstractcommandprocessor.js
199
+ - common/src/js/extension/dommessenger.js
200
+ - common/src/js/extension/README
201
+ - common/src/js/command.js
202
+ - common/src/js/testcase.js
203
+ - common/src/js/future.js
204
+ - common/src/js/webelement.js
205
+ - firefox/src/rb/lib/selenium/webdriver/firefox/profiles_ini.rb
206
+ - firefox/src/rb/lib/selenium/webdriver/firefox/util.rb
207
+ - firefox/src/rb/lib/selenium/webdriver/firefox/binary.rb
208
+ - firefox/src/rb/lib/selenium/webdriver/firefox/launcher.rb
209
+ - firefox/src/rb/lib/selenium/webdriver/firefox/extension_connection.rb
210
+ - firefox/src/rb/lib/selenium/webdriver/firefox/profile.rb
211
+ - firefox/src/rb/lib/selenium/webdriver/firefox/bridge.rb
212
+ - firefox/src/rb/lib/selenium/webdriver/firefox.rb
213
+ - firefox/src/extension/install.rdf
214
+ - firefox/src/extension/chrome.manifest
215
+ - firefox/src/extension/components/promptService.js
216
+ - firefox/src/extension/components/wrappedElement.js
217
+ - firefox/src/extension/components/context.js
218
+ - firefox/src/extension/components/keytest.html
219
+ - firefox/src/extension/components/driver-component.js
220
+ - firefox/src/extension/components/firefoxDriver.js
221
+ - firefox/src/extension/components/utils.js
222
+ - firefox/src/extension/components/screenshooter.js
223
+ - firefox/src/extension/components/webdriverserver.js
224
+ - firefox/src/extension/components/socketListener.js
225
+ - firefox/src/extension/components/badCertListener.js
226
+ - firefox/src/extension/components/webLoadingListener.js
227
+ - firefox/src/extension/components/nsCommandProcessor.js
228
+ - firefox/src/extension/components/json2.js
229
+ - firefox/src/extension/content/fxdriver.xul
230
+ - firefox/src/extension/content/server.js
231
+ - firefox/src/extension/idl/nsICommandProcessor.idl
232
+ - firefox/src/extension/idl/nsIResponseHandler.idl
233
+ - firefox/prebuilt/nsICommandProcessor.xpt
234
+ - firefox/prebuilt/linux/Release/libwebdriver-firefox.so
235
+ - firefox/prebuilt/linux/Release/x_ignore_nofocus.so
236
+ - firefox/prebuilt/nsIResponseHandler.xpt
237
+ - firefox/prebuilt/nsINativeEvents.xpt
238
+ - firefox/prebuilt/linux64/Release/libwebdriver-firefox.so
239
+ - firefox/prebuilt/linux64/Release/x_ignore_nofocus.so
240
+ - firefox/prebuilt/Win32/Release/webdriver-firefox.dll
241
+ - chrome/src/rb/lib/selenium/webdriver/chrome/launcher.rb
242
+ - chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb
243
+ - chrome/src/rb/lib/selenium/webdriver/chrome/bridge.rb
244
+ - chrome/src/rb/lib/selenium/webdriver/chrome.rb
245
+ - chrome/src/extension/background.js
246
+ - chrome/src/extension/content_script.js
247
+ - chrome/src/extension/manifest-nonwin.json
248
+ - chrome/src/extension/utils.js
249
+ - chrome/src/extension/icons/busy.png
250
+ - chrome/src/extension/icons/free.png
251
+ - chrome/src/extension/background.html
252
+ - chrome/src/extension/manifest-win.json
253
+ - chrome/prebuilt/x64/Release/npchromedriver.dll
254
+ - chrome/prebuilt/Win32/Release/npchromedriver.dll
255
+ - jobbie/src/rb/lib/selenium/webdriver/ie/util.rb
256
+ - jobbie/src/rb/lib/selenium/webdriver/ie/lib.rb
257
+ - jobbie/src/rb/lib/selenium/webdriver/ie/bridge.rb
258
+ - jobbie/src/rb/lib/selenium/webdriver/ie.rb
259
+ - jobbie/prebuilt/x64/Release/InternetExplorerDriver.dll
260
+ - jobbie/prebuilt/Win32/Release/InternetExplorerDriver.dll
261
+ - remote/client/src/rb/lib/selenium/webdriver/remote.rb
262
+ - remote/client/src/rb/lib/selenium/webdriver/remote/response.rb
263
+ - remote/client/src/rb/lib/selenium/webdriver/remote/server_error.rb
264
+ - remote/client/src/rb/lib/selenium/webdriver/remote/capabilities.rb
265
+ - remote/client/src/rb/lib/selenium/webdriver/remote/commands.rb
266
+ - remote/client/src/rb/lib/selenium/webdriver/remote/default_http_client.rb
267
+ - remote/client/src/rb/lib/selenium/webdriver/remote/bridge.rb
268
+ has_rdoc: true
269
+ homepage: http://selenium.googlecode.com
270
+ licenses: []
271
+
272
+ post_install_message:
273
+ rdoc_options: []
274
+
275
+ require_paths:
276
+ - common/src/rb/lib
277
+ - firefox/src/rb/lib
278
+ - chrome/src/rb/lib
279
+ - jobbie/src/rb/lib
280
+ - remote/client/src/rb/lib
281
+ required_ruby_version: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ segments:
286
+ - 0
287
+ version: "0"
288
+ required_rubygems_version: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ segments:
293
+ - 0
294
+ version: "0"
295
+ requirements: []
296
+
297
+ rubyforge_project:
298
+ rubygems_version: 1.3.6
299
+ signing_key:
300
+ specification_version: 3
301
+ summary: The next generation developer focused tool for automated testing of webapps
302
+ test_files: []
303
+