selenium-webdriver 2.53.4 → 3.8.0

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 (152) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +363 -10
  3. data/LICENSE +1 -1
  4. data/README.md +2 -3
  5. data/lib/selenium-webdriver.rb +0 -2
  6. data/lib/selenium/server.rb +69 -70
  7. data/lib/selenium/webdriver.rb +32 -23
  8. data/lib/selenium/webdriver/atoms.rb +18 -0
  9. data/lib/selenium/webdriver/atoms/getAttribute.js +8 -0
  10. data/lib/selenium/webdriver/chrome.rb +8 -6
  11. data/lib/selenium/webdriver/chrome/driver.rb +112 -0
  12. data/lib/selenium/webdriver/chrome/options.rb +168 -0
  13. data/lib/selenium/webdriver/chrome/profile.rb +17 -17
  14. data/lib/selenium/webdriver/chrome/service.rb +22 -89
  15. data/lib/selenium/webdriver/common.rb +13 -6
  16. data/lib/selenium/webdriver/common/action_builder.rb +49 -57
  17. data/lib/selenium/webdriver/common/alert.rb +5 -15
  18. data/lib/selenium/webdriver/common/bridge_helper.rb +10 -17
  19. data/lib/selenium/webdriver/common/driver.rb +53 -68
  20. data/lib/selenium/webdriver/common/driver_extensions/{has_input_devices.rb → has_addons.rb} +13 -23
  21. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +4 -8
  22. data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +4 -7
  23. data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +0 -4
  24. data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +0 -4
  25. data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +1 -5
  26. data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +0 -5
  27. data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +4 -9
  28. data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +7 -7
  29. data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +2 -7
  30. data/lib/selenium/webdriver/common/element.rb +57 -39
  31. data/lib/selenium/webdriver/common/error.rb +204 -106
  32. data/lib/selenium/webdriver/common/file_reaper.rb +3 -11
  33. data/lib/selenium/webdriver/common/html5/local_storage.rb +6 -10
  34. data/lib/selenium/webdriver/common/html5/session_storage.rb +6 -10
  35. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +7 -18
  36. data/lib/selenium/webdriver/{safari/options.rb → common/interactions/input_device.rb} +20 -31
  37. data/lib/selenium/webdriver/common/interactions/interaction.rb +50 -0
  38. data/lib/selenium/webdriver/{safari/browser.rb → common/interactions/interactions.rb} +16 -15
  39. data/lib/selenium/webdriver/common/interactions/key_actions.rb +143 -0
  40. data/lib/selenium/webdriver/common/interactions/key_input.rb +62 -0
  41. data/lib/selenium/webdriver/{android.rb → common/interactions/none_input.rb} +11 -6
  42. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +353 -0
  43. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +132 -0
  44. data/lib/selenium/webdriver/common/keyboard.rb +7 -14
  45. data/lib/selenium/webdriver/common/keys.rb +99 -82
  46. data/lib/selenium/webdriver/common/log_entry.rb +3 -6
  47. data/lib/selenium/webdriver/common/logger.rb +140 -0
  48. data/lib/selenium/webdriver/common/logs.rb +2 -6
  49. data/lib/selenium/webdriver/common/mouse.rb +9 -14
  50. data/lib/selenium/webdriver/common/navigation.rb +2 -6
  51. data/lib/selenium/webdriver/common/options.rb +20 -23
  52. data/lib/selenium/webdriver/common/platform.rb +70 -97
  53. data/lib/selenium/webdriver/common/port_prober.rb +3 -4
  54. data/lib/selenium/webdriver/common/profile_helper.rb +6 -11
  55. data/lib/selenium/webdriver/common/proxy.rb +58 -72
  56. data/lib/selenium/webdriver/common/search_context.rb +22 -29
  57. data/lib/selenium/webdriver/common/service.rb +161 -0
  58. data/lib/selenium/webdriver/common/socket_lock.rb +6 -14
  59. data/lib/selenium/webdriver/common/socket_poller.rb +5 -12
  60. data/lib/selenium/webdriver/common/target_locator.rb +11 -15
  61. data/lib/selenium/webdriver/common/timeouts.rb +4 -8
  62. data/lib/selenium/webdriver/common/touch_action_builder.rb +2 -6
  63. data/lib/selenium/webdriver/common/touch_screen.rb +19 -23
  64. data/lib/selenium/webdriver/common/w3c_action_builder.rb +209 -0
  65. data/lib/selenium/webdriver/{phantomjs.rb → common/w3c_options.rb} +16 -14
  66. data/lib/selenium/webdriver/common/wait.rb +6 -13
  67. data/lib/selenium/webdriver/common/window.rb +48 -17
  68. data/lib/selenium/webdriver/common/zipper.rb +6 -10
  69. data/lib/selenium/webdriver/edge.rb +5 -12
  70. data/lib/selenium/webdriver/edge/bridge.rb +32 -63
  71. data/lib/selenium/webdriver/edge/driver.rb +73 -0
  72. data/lib/selenium/webdriver/edge/service.rb +18 -87
  73. data/lib/selenium/webdriver/firefox.rb +20 -11
  74. data/lib/selenium/webdriver/firefox/binary.rb +40 -56
  75. data/lib/selenium/webdriver/firefox/driver.rb +48 -0
  76. data/lib/selenium/webdriver/firefox/extension.rb +18 -8
  77. data/lib/selenium/webdriver/firefox/extension/prefs.json +3 -11
  78. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  79. data/lib/selenium/webdriver/firefox/launcher.rb +13 -22
  80. data/lib/selenium/webdriver/firefox/legacy/driver.rb +79 -0
  81. data/lib/selenium/webdriver/{iphone.rb → firefox/marionette/bridge.rb} +25 -6
  82. data/lib/selenium/webdriver/firefox/marionette/driver.rb +96 -0
  83. data/lib/selenium/webdriver/firefox/options.rb +149 -0
  84. data/lib/selenium/webdriver/firefox/profile.rb +46 -46
  85. data/lib/selenium/webdriver/firefox/profiles_ini.rb +8 -18
  86. data/lib/selenium/webdriver/firefox/service.rb +23 -83
  87. data/lib/selenium/webdriver/firefox/util.rb +0 -4
  88. data/lib/selenium/webdriver/ie.rb +4 -8
  89. data/lib/selenium/webdriver/ie/driver.rb +90 -0
  90. data/lib/selenium/webdriver/ie/options.rb +136 -0
  91. data/lib/selenium/webdriver/ie/service.rb +58 -0
  92. data/lib/selenium/webdriver/remote.rb +8 -16
  93. data/lib/selenium/webdriver/remote/bridge.rb +96 -565
  94. data/lib/selenium/webdriver/remote/capabilities.rb +76 -94
  95. data/lib/selenium/webdriver/remote/driver.rb +49 -0
  96. data/lib/selenium/webdriver/remote/http/common.rb +22 -20
  97. data/lib/selenium/webdriver/remote/http/curb.rb +9 -12
  98. data/lib/selenium/webdriver/remote/http/default.rb +54 -41
  99. data/lib/selenium/webdriver/remote/http/persistent.rb +9 -8
  100. data/lib/selenium/webdriver/remote/oss/bridge.rb +586 -0
  101. data/lib/selenium/webdriver/remote/oss/commands.rb +221 -0
  102. data/lib/selenium/webdriver/remote/response.rb +39 -27
  103. data/lib/selenium/webdriver/remote/server_error.rb +1 -5
  104. data/lib/selenium/webdriver/remote/w3c/bridge.rb +573 -0
  105. data/lib/selenium/webdriver/remote/w3c/capabilities.rb +290 -0
  106. data/lib/selenium/webdriver/remote/w3c/commands.rb +148 -0
  107. data/lib/selenium/webdriver/safari.rb +20 -29
  108. data/lib/selenium/webdriver/{firefox/w3c_bridge.rb → safari/driver.rb} +21 -30
  109. data/lib/selenium/webdriver/safari/service.rb +57 -0
  110. data/lib/selenium/webdriver/support.rb +1 -2
  111. data/lib/selenium/webdriver/support/abstract_event_listener.rb +17 -4
  112. data/lib/selenium/webdriver/support/block_event_listener.rb +1 -5
  113. data/lib/selenium/webdriver/support/color.rb +57 -42
  114. data/lib/selenium/webdriver/support/escaper.rb +41 -0
  115. data/lib/selenium/webdriver/support/event_firing_bridge.rb +36 -40
  116. data/lib/selenium/webdriver/support/select.rb +33 -86
  117. data/selenium-webdriver.gemspec +22 -25
  118. metadata +254 -261
  119. data/lib/selenium-client.rb +0 -21
  120. data/lib/selenium/client.rb +0 -57
  121. data/lib/selenium/client/base.rb +0 -151
  122. data/lib/selenium/client/driver.rb +0 -29
  123. data/lib/selenium/client/errors.rb +0 -28
  124. data/lib/selenium/client/extensions.rb +0 -132
  125. data/lib/selenium/client/idiomatic.rb +0 -507
  126. data/lib/selenium/client/javascript_expression_builder.rb +0 -135
  127. data/lib/selenium/client/javascript_frameworks/jquery.rb +0 -32
  128. data/lib/selenium/client/javascript_frameworks/prototype.rb +0 -32
  129. data/lib/selenium/client/legacy_driver.rb +0 -1722
  130. data/lib/selenium/client/protocol.rb +0 -123
  131. data/lib/selenium/client/selenium_helper.rb +0 -49
  132. data/lib/selenium/rake/server_task.rb +0 -176
  133. data/lib/selenium/webdriver/android/bridge.rb +0 -68
  134. data/lib/selenium/webdriver/chrome/bridge.rb +0 -139
  135. data/lib/selenium/webdriver/common/core_ext/base64.rb +0 -28
  136. data/lib/selenium/webdriver/common/core_ext/dir.rb +0 -61
  137. data/lib/selenium/webdriver/common/html5/location.rb +0 -19
  138. data/lib/selenium/webdriver/common/w3c_error.rb +0 -194
  139. data/lib/selenium/webdriver/edge/legacy_support.rb +0 -117
  140. data/lib/selenium/webdriver/firefox/bridge.rb +0 -89
  141. data/lib/selenium/webdriver/ie/bridge.rb +0 -88
  142. data/lib/selenium/webdriver/ie/server.rb +0 -133
  143. data/lib/selenium/webdriver/iphone/bridge.rb +0 -64
  144. data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -78
  145. data/lib/selenium/webdriver/phantomjs/service.rb +0 -130
  146. data/lib/selenium/webdriver/remote/commands.rb +0 -211
  147. data/lib/selenium/webdriver/remote/w3c_bridge.rb +0 -668
  148. data/lib/selenium/webdriver/remote/w3c_capabilities.rb +0 -236
  149. data/lib/selenium/webdriver/remote/w3c_commands.rb +0 -132
  150. data/lib/selenium/webdriver/safari/bridge.rb +0 -135
  151. data/lib/selenium/webdriver/safari/resources/client.js +0 -7255
  152. data/lib/selenium/webdriver/safari/server.rb +0 -187
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -17,25 +15,29 @@
17
15
  # specific language governing permissions and limitations
18
16
  # under the License.
19
17
 
20
- require 'net/http'
21
-
22
- require 'selenium/webdriver/phantomjs/service'
23
- require 'selenium/webdriver/phantomjs/bridge'
24
-
25
18
  module Selenium
26
19
  module WebDriver
20
+ class W3COptions < Options
27
21
 
28
- module PhantomJS
22
+ #
23
+ # Get the cookie with the given name
24
+ #
25
+ # @param [String] name the name of the cookie
26
+ # @return [Hash, nil] the cookie, or nil if it wasn't found.
27
+ #
29
28
 
30
- def self.path=(path)
31
- Platform.assert_executable path
32
- @path = path
29
+ def cookie_named(name)
30
+ convert_cookie(@bridge.cookie(name))
33
31
  end
34
32
 
35
- def self.path
36
- @path ||= Platform.find_binary("phantomjs")
33
+ #
34
+ # Delete all cookies
35
+ #
36
+
37
+ def delete_all_cookies
38
+ @bridge.delete_all_cookies
37
39
  end
38
40
 
39
- end # PhantomJS
41
+ end # WC3Options
40
42
  end # WebDriver
41
43
  end # Selenium
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -20,7 +18,6 @@
20
18
  module Selenium
21
19
  module WebDriver
22
20
  class Wait
23
-
24
21
  DEFAULT_TIMEOUT = 5
25
22
  DEFAULT_INTERVAL = 0.2
26
23
 
@@ -41,7 +38,6 @@ module Selenium
41
38
  @ignored = Array(opts[:ignore] || Error::NoSuchElementError)
42
39
  end
43
40
 
44
-
45
41
  #
46
42
  # Wait until the given block returns a true value.
47
43
  #
@@ -49,7 +45,7 @@ module Selenium
49
45
  # @return [Object] the result of the block
50
46
  #
51
47
 
52
- def until(&blk)
48
+ def until
53
49
  end_time = Time.now + @timeout
54
50
  last_error = nil
55
51
 
@@ -64,19 +60,16 @@ module Selenium
64
60
  sleep @interval
65
61
  end
66
62
 
67
-
68
- if @message
69
- msg = @message.dup
70
- else
71
- msg = "timed out after #{@timeout} seconds"
72
- end
63
+ msg = if @message
64
+ @message.dup
65
+ else
66
+ "timed out after #{@timeout} seconds"
67
+ end
73
68
 
74
69
  msg << " (#{last_error.message})" if last_error
75
70
 
76
71
  raise Error::TimeOutError, msg
77
72
  end
78
-
79
73
  end # Wait
80
74
  end # WebDriver
81
75
  end # Selenium
82
-
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -19,13 +17,11 @@
19
17
 
20
18
  module Selenium
21
19
  module WebDriver
22
-
23
20
  #
24
21
  # @api beta This API may be changed or removed in a future release.
25
22
  #
26
23
 
27
24
  class Window
28
-
29
25
  #
30
26
  # @api private
31
27
  #
@@ -42,11 +38,11 @@ module Selenium
42
38
 
43
39
  def size=(dimension)
44
40
  unless dimension.respond_to?(:width) && dimension.respond_to?(:height)
45
- raise ArgumentError, "expected #{dimension.inspect}:#{dimension.class}" +
46
- " to respond to #width and #height"
41
+ raise ArgumentError, "expected #{dimension.inspect}:#{dimension.class}" \
42
+ ' to respond to #width and #height'
47
43
  end
48
44
 
49
- @bridge.setWindowSize dimension.width, dimension.height
45
+ @bridge.resize_window dimension.width, dimension.height
50
46
  end
51
47
 
52
48
  #
@@ -56,7 +52,7 @@ module Selenium
56
52
  #
57
53
 
58
54
  def size
59
- @bridge.getWindowSize
55
+ @bridge.window_size
60
56
  end
61
57
 
62
58
  #
@@ -67,11 +63,11 @@ module Selenium
67
63
 
68
64
  def position=(point)
69
65
  unless point.respond_to?(:x) && point.respond_to?(:y)
70
- raise ArgumentError, "expected #{point.inspect}:#{point.class}" +
71
- " to respond to #x and #y"
66
+ raise ArgumentError, "expected #{point.inspect}:#{point.class}" \
67
+ ' to respond to #x and #y'
72
68
  end
73
69
 
74
- @bridge.setWindowPosition point.x, point.y
70
+ @bridge.reposition_window point.x, point.y
75
71
  end
76
72
 
77
73
  #
@@ -81,7 +77,35 @@ module Selenium
81
77
  #
82
78
 
83
79
  def position
84
- @bridge.getWindowPosition
80
+ @bridge.window_position
81
+ end
82
+
83
+ #
84
+ # Sets the current window rect to the given point and position.
85
+ #
86
+ # @param [Selenium::WebDriver::Rectangle, #x, #y, #width, #height] rectangle The new rect.
87
+ #
88
+
89
+ def rect=(rectangle)
90
+ unless %w[x y width height].all? { |val| rectangle.respond_to? val }
91
+ raise ArgumentError, "expected #{rectangle.inspect}:#{rectangle.class}" \
92
+ ' to respond to #x, #y, #width, and #height'
93
+ end
94
+
95
+ @bridge.set_window_rect(x: rectangle.x,
96
+ y: rectangle.y,
97
+ width: rectangle.width,
98
+ height: rectangle.height)
99
+ end
100
+
101
+ #
102
+ # Get the rect of the current window.
103
+ #
104
+ # @return [Selenium::WebDriver::Rectangle] The rectangle.
105
+ #
106
+
107
+ def rect
108
+ @bridge.window_rect
85
109
  end
86
110
 
87
111
  #
@@ -94,7 +118,7 @@ module Selenium
94
118
  #
95
119
 
96
120
  def resize_to(width, height)
97
- @bridge.setWindowSize Integer(width), Integer(height)
121
+ @bridge.resize_window Integer(width), Integer(height)
98
122
  end
99
123
 
100
124
  #
@@ -106,7 +130,7 @@ module Selenium
106
130
  #
107
131
 
108
132
  def move_to(x, y)
109
- @bridge.setWindowPosition Integer(x), Integer(y)
133
+ @bridge.reposition_window Integer(x), Integer(y)
110
134
  end
111
135
 
112
136
  #
@@ -114,7 +138,15 @@ module Selenium
114
138
  #
115
139
 
116
140
  def maximize
117
- @bridge.maximizeWindow
141
+ @bridge.maximize_window
142
+ end
143
+
144
+ #
145
+ # Minimize the current window
146
+ #
147
+
148
+ def minimize
149
+ @bridge.minimize_window
118
150
  end
119
151
 
120
152
  #
@@ -122,9 +154,8 @@ module Selenium
122
154
  #
123
155
 
124
156
  def full_screen
125
- @bridge.fullscreenWindow
157
+ @bridge.full_screen_window
126
158
  end
127
-
128
159
  end # Window
129
160
  end # WebDriver
130
161
  end # Selenium
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -20,6 +18,7 @@
20
18
  require 'zip'
21
19
  require 'tempfile'
22
20
  require 'find'
21
+ require 'base64'
23
22
 
24
23
  module Selenium
25
24
  module WebDriver
@@ -28,13 +27,11 @@ module Selenium
28
27
  #
29
28
 
30
29
  module Zipper
31
-
32
- EXTENSIONS = %w[.zip .xpi]
30
+ EXTENSIONS = %w[.zip .xpi].freeze
33
31
 
34
32
  class << self
35
-
36
33
  def unzip(path)
37
- destination = Dir.mktmpdir("webdriver-unzip")
34
+ destination = Dir.mktmpdir('webdriver-unzip')
38
35
  FileReaper << destination
39
36
 
40
37
  Zip::File.open(path) do |zip|
@@ -59,7 +56,7 @@ module Selenium
59
56
  end
60
57
 
61
58
  zip.commit
62
- File.open(zip.name, "rb") { |io| Base64.strict_encode64 io.read }
59
+ File.open(zip.name, 'rb') { |io| Base64.strict_encode64 io.read }
63
60
  end
64
61
  end
65
62
 
@@ -68,7 +65,7 @@ module Selenium
68
65
  add_zip_entry zip, path, File.basename(path)
69
66
 
70
67
  zip.commit
71
- File.open(zip.name, "rb") { |io| Base64.strict_encode64 io.read }
68
+ File.open(zip.name, 'rb') { |io| Base64.strict_encode64 io.read }
72
69
  end
73
70
  end
74
71
 
@@ -78,7 +75,7 @@ module Selenium
78
75
  # can't use Tempfile here since it doesn't support File::BINARY mode on 1.8
79
76
  # can't use Dir.mktmpdir(&blk) because of http://jira.codehaus.org/browse/JRUBY-4082
80
77
  tmp_dir = Dir.mktmpdir
81
- zip_path = File.join(tmp_dir, "webdriver-zip")
78
+ zip_path = File.join(tmp_dir, 'webdriver-zip')
82
79
 
83
80
  begin
84
81
  Zip::File.open(zip_path, Zip::File::CREATE, &blk)
@@ -94,7 +91,6 @@ module Selenium
94
91
 
95
92
  zip.add entry, file
96
93
  end
97
-
98
94
  end
99
95
  end # Zipper
100
96
  end # WebDriver
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -19,26 +17,21 @@
19
17
 
20
18
  require 'net/http'
21
19
 
22
- require 'selenium/webdriver/edge/service'
23
20
  require 'selenium/webdriver/edge/bridge'
21
+ require 'selenium/webdriver/edge/driver'
22
+ require 'selenium/webdriver/edge/service'
24
23
 
25
24
  module Selenium
26
25
  module WebDriver
27
-
28
26
  module Edge
29
27
  def self.driver_path=(path)
30
- Service.executable_path = path
31
- end
32
-
33
- def self.path=(path)
34
28
  Platform.assert_executable path
35
- @path = path
29
+ @driver_path = path
36
30
  end
37
31
 
38
- def self.path
39
- @path ||= nil
32
+ def self.driver_path(warning = true)
33
+ @driver_path ||= nil
40
34
  end
41
-
42
35
  end # Edge
43
36
  end # WebDriver
44
37
  end # Selenium
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
- #
3
1
  # Licensed to the Software Freedom Conservancy (SFC) under one
4
2
  # or more contributor license agreements. See the NOTICE file
5
3
  # distributed with this work for additional information
@@ -20,83 +18,54 @@
20
18
  module Selenium
21
19
  module WebDriver
22
20
  module Edge
23
-
24
- # @api private
25
- class Bridge < Remote::W3CBridge
26
-
27
- def initialize(opts = {})
28
-
29
- http_client = opts.delete(:http_client)
30
-
31
- if opts.has_key?(:url)
32
- url = opts.delete(:url)
21
+ module Bridge
22
+
23
+ def commands(command)
24
+ unsupported = %i[execute_script execute_async_script submit_element double_click
25
+ mouse_down mouse_up mouse_move_to click
26
+ send_keys_to_active_element get_window_handles get_current_window_handle
27
+ get_window_size set_window_size get_window_position set_window_position
28
+ maximize_window get_alert_text accept_alert dismiss_alert]
29
+ if unsupported.include? command
30
+ Remote::OSS::Bridge::COMMANDS[command]
33
31
  else
34
- @service = Service.default_service(*extract_service_args(opts))
35
-
36
- if @service.instance_variable_get("@host") == "127.0.0.1"
37
- @service.instance_variable_set("@host", 'localhost')
38
- end
39
-
40
- @service.start
41
-
42
- url = @service.uri
32
+ super
43
33
  end
44
-
45
- caps = create_capabilities(opts)
46
-
47
- remote_opts = {
48
- :url => url,
49
- :desired_capabilities => caps
50
- }
51
-
52
- remote_opts.merge!(:http_client => http_client) if http_client
53
- super(remote_opts)
54
34
  end
55
35
 
56
- def browser
57
- :edge
36
+ def send_keys_to_active_element(key)
37
+ execute :send_keys_to_active_element, {}, {value: key}
58
38
  end
59
39
 
60
- def driver_extensions
61
- [
62
- DriverExtensions::TakesScreenshot,
63
- DriverExtensions::HasInputDevices
64
- ]
40
+ def window_handle
41
+ execute :get_current_window_handle
65
42
  end
66
43
 
67
- def capabilities
68
- @capabilities ||= Remote::Capabilities.edge
69
- end
44
+ def window_size(handle = :current)
45
+ data = execute :get_window_size, window_handle: handle
70
46
 
71
- def quit
72
- super
73
- ensure
74
- @service.stop if @service
47
+ Dimension.new data['width'], data['height']
75
48
  end
76
49
 
77
- private
78
-
79
- def create_capabilities(opts)
80
- caps = opts.delete(:desired_capabilities) { Remote::W3CCapabilities.edge }
81
- page_load_strategy = opts.delete(:page_load_strategy) || "normal"
82
-
83
- unless opts.empty?
84
- raise ArgumentError, "unknown option#{'s' if opts.size != 1}: #{opts.inspect}"
85
- end
50
+ def resize_window(width, height, handle = :current)
51
+ execute :set_window_size, {window_handle: handle},
52
+ {width: width,
53
+ height: height}
54
+ end
86
55
 
87
- caps['page_load_strategy'] = page_load_strategy
56
+ def window_position(handle = :current)
57
+ data = execute :get_window_position, window_handle: handle
88
58
 
89
- caps
59
+ Point.new data['x'], data['y']
90
60
  end
91
61
 
92
- def extract_service_args(opts)
93
- args = []
94
-
95
- if opts.has_key?(:service_log_path)
96
- args << "--log-path=#{opts.delete(:service_log_path)}"
97
- end
62
+ def reposition_window(x, y, handle = :current)
63
+ execute :set_window_position, {window_handle: handle},
64
+ {x: x, y: y}
65
+ end
98
66
 
99
- args
67
+ def maximize_window(handle = :current)
68
+ execute :maximize_window, window_handle: handle
100
69
  end
101
70
 
102
71
  end # Bridge