selenium-webdriver 4.0.0.alpha1 → 4.0.0.alpha2

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 (28) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +8 -1
  3. data/lib/selenium/webdriver/version.rb +1 -1
  4. metadata +2 -26
  5. data/lib/selenium/webdriver/common/bridge_helper.rb +0 -82
  6. data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +0 -36
  7. data/lib/selenium/webdriver/common/keyboard.rb +0 -70
  8. data/lib/selenium/webdriver/common/mouse.rb +0 -89
  9. data/lib/selenium/webdriver/common/options.rb +0 -177
  10. data/lib/selenium/webdriver/common/touch_action_builder.rb +0 -78
  11. data/lib/selenium/webdriver/common/touch_screen.rb +0 -123
  12. data/lib/selenium/webdriver/common/w3c_action_builder.rb +0 -212
  13. data/lib/selenium/webdriver/common/w3c_manager.rb +0 -45
  14. data/lib/selenium/webdriver/common/w3c_options.rb +0 -45
  15. data/lib/selenium/webdriver/edge/bridge.rb +0 -76
  16. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  17. data/lib/selenium/webdriver/firefox/launcher.rb +0 -111
  18. data/lib/selenium/webdriver/firefox/legacy/driver.rb +0 -83
  19. data/lib/selenium/webdriver/firefox/marionette/bridge.rb +0 -49
  20. data/lib/selenium/webdriver/firefox/marionette/driver.rb +0 -90
  21. data/lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so +0 -0
  22. data/lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so +0 -0
  23. data/lib/selenium/webdriver/firefox/util.rb +0 -46
  24. data/lib/selenium/webdriver/remote/oss/bridge.rb +0 -594
  25. data/lib/selenium/webdriver/remote/oss/commands.rb +0 -223
  26. data/lib/selenium/webdriver/remote/w3c/bridge.rb +0 -605
  27. data/lib/selenium/webdriver/remote/w3c/capabilities.rb +0 -310
  28. data/lib/selenium/webdriver/remote/w3c/commands.rb +0 -157
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module WebDriver
22
- class TouchActionBuilder < ActionBuilder
23
- #
24
- # @api private
25
- #
26
-
27
- def initialize(mouse, keyboard, touch_screen)
28
- WebDriver.logger.deprecate(self.class.name)
29
- super(mouse, keyboard)
30
- @devices[:touch_screen] = touch_screen
31
- end
32
-
33
- def scroll(*args)
34
- raise ArgumentError, "wrong number of arguments, expected 2..3, got #{args.size}" unless [2, 3].include? args.size
35
-
36
- @actions << [:touch_screen, :scroll, args]
37
- self
38
- end
39
-
40
- def flick(*args)
41
- raise ArgumentError, "wrong number of arguments, expected 2 or 4, got #{args.size}" unless [2, 4].include? args.size
42
-
43
- @actions << [:touch_screen, :flick, args]
44
- self
45
- end
46
-
47
- def single_tap(element)
48
- @actions << [:touch_screen, :single_tap, [element]]
49
- self
50
- end
51
-
52
- def double_tap(element)
53
- @actions << [:touch_screen, :double_tap, [element]]
54
- self
55
- end
56
-
57
- def long_press(element)
58
- @actions << [:touch_screen, :long_press, [element]]
59
- self
60
- end
61
-
62
- def down(x, y = nil)
63
- @actions << [:touch_screen, :down, [x, y]]
64
- self
65
- end
66
-
67
- def up(x, y = nil)
68
- @actions << [:touch_screen, :up, [x, y]]
69
- self
70
- end
71
-
72
- def move(x, y = nil)
73
- @actions << [:touch_screen, :move, [x, y]]
74
- self
75
- end
76
- end # TouchActionBuilder
77
- end # WebDriver
78
- end # Selenium
@@ -1,123 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module WebDriver
22
- class TouchScreen
23
- FLICK_SPEED = {normal: 0, fast: 1}.freeze
24
-
25
- #
26
- # @api private
27
- #
28
-
29
- def initialize(bridge)
30
- @bridge = bridge
31
- end
32
-
33
- def single_tap(element)
34
- assert_element element
35
- @bridge.touch_single_tap element.ref
36
- end
37
-
38
- def double_tap(element)
39
- assert_element element
40
- @bridge.touch_double_tap element.ref
41
- end
42
-
43
- def long_press(element)
44
- assert_element element
45
- @bridge.touch_long_press element.ref
46
- end
47
-
48
- def down(x, y = nil)
49
- x, y = coords_from x, y
50
- @bridge.touch_down x, y
51
- end
52
-
53
- def up(x, y = nil)
54
- x, y = coords_from x, y
55
- @bridge.touch_up x, y
56
- end
57
-
58
- def move(x, y = nil)
59
- x, y = coords_from x, y
60
- @bridge.touch_move x, y
61
- end
62
-
63
- def scroll(*args)
64
- case args.size
65
- when 2
66
- x_offset, y_offset = args
67
- @bridge.touch_scroll nil, Integer(x_offset), Integer(y_offset)
68
- when 3
69
- element, x_offset, y_offset = args
70
- assert_element element
71
- @bridge.touch_scroll element.ref, Integer(x_offset), Integer(y_offset)
72
- else
73
- raise ArgumentError, "wrong number of arguments, expected 2..3, got #{args.size}"
74
- end
75
- end
76
-
77
- def flick(*args)
78
- case args.size
79
- when 2
80
- x_speed, y_speed = args
81
- @bridge.touch_flick Integer(x_speed), Integer(y_speed)
82
- when 4
83
- element, xoffset, yoffset, speed = args
84
-
85
- assert_element element
86
-
87
- if (speed.is_a?(String) || speed.is_a?(Symbol)) && FLICK_SPEED.key?(speed.to_sym)
88
- WebDriver.logger.deprecate "Passing #{speed.inspect} speed",
89
- "Integer or Selenium::WebDriver::TouchScreen::FLICK_SPEED[:#{speed}]"
90
- speed = FLICK_SPEED[speed.to_sym]
91
- end
92
-
93
- @bridge.touch_element_flick element.ref, Integer(xoffset), Integer(yoffset), Integer(speed)
94
- else
95
- raise ArgumentError, "wrong number of arguments, expected 2 or 4, got #{args.size}"
96
- end
97
- end
98
-
99
- private
100
-
101
- def coords_from(x, y)
102
- if y.nil?
103
- point = x
104
-
105
- unless point.respond_to?(:x) && point.respond_to?(:y)
106
- raise ArgumentError, "expected #{point.inspect} to respond to :x and :y"
107
- end
108
-
109
- x = point.x
110
- y = point.y
111
- end
112
-
113
- [Integer(x), Integer(y)]
114
- end
115
-
116
- def assert_element(element)
117
- return if element.is_a? Element
118
-
119
- raise TypeError, "expected #{Element}, got #{element.inspect}:#{element.class}"
120
- end
121
- end # TouchScreen
122
- end # WebDriver
123
- end # Selenium
@@ -1,212 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module WebDriver
22
- class W3CActionBuilder
23
- include KeyActions # Actions specific to key inputs
24
- include PointerActions # Actions specific to pointer inputs
25
- attr_reader :devices
26
-
27
- #
28
- # Initialize a W3C Action Builder. Differs from previous by requiring a bridge and allowing asynchronous actions.
29
- # The W3C implementation allows asynchronous actions per device. e.g. A key can be pressed at the same time that
30
- # the mouse is moving. Keep in mind that pauses must be added for other devices in order to line up the actions
31
- # correctly when using asynchronous.
32
- #
33
- # @param [Selenium::WebDriver::Remote::W3CBridge] bridge the bridge for the current driver instance
34
- # @param [Selenium::WebDriver::Interactions::PointerInput] mouse PointerInput for the mouse.
35
- # @param [Selenium::WebDriver::Interactions::KeyInput] keyboard KeyInput for the keyboard.
36
- # @param [Boolean] async Whether to perform the actions asynchronously per device. Defaults to false for
37
- # backwards compatibility.
38
- # @return [W3CActionBuilder] A self reference.
39
- #
40
-
41
- def initialize(bridge, mouse, keyboard, async = false)
42
- # For backwards compatibility, automatically include mouse & keyboard
43
- @bridge = bridge
44
- @devices = [mouse, keyboard]
45
- @async = async
46
- end
47
-
48
- #
49
- # Adds a PointerInput device of the given kind
50
- #
51
- # @example Add a touch pointer input device
52
- #
53
- # builder = device.action
54
- # builder.add_pointer_input('touch', :touch)
55
- #
56
- # @param [String] name name for the device
57
- # @param [Symbol] kind kind of pointer device to create
58
- # @return [Interactions::PointerInput] The pointer input added
59
- #
60
- #
61
-
62
- def add_pointer_input(kind, name)
63
- new_input = Interactions.pointer(kind, name: name)
64
- add_input(new_input)
65
- new_input
66
- end
67
-
68
- #
69
- # Adds a KeyInput device
70
- #
71
- # @example Add a key input device
72
- #
73
- # builder = device.action
74
- # builder.add_key_input('keyboard2')
75
- #
76
- # @param [String] name name for the device
77
- # @return [Interactions::KeyInput] The key input added
78
- #
79
-
80
- def add_key_input(name)
81
- new_input = Interactions.key(name)
82
- add_input(new_input)
83
- new_input
84
- end
85
-
86
- #
87
- # Retrieves the input device for the given name
88
- #
89
- # @param [String] name name of the input device
90
- # @return [Selenium::WebDriver::Interactions::InputDevice] input device with given name
91
- #
92
-
93
- def get_device(name)
94
- @devices.find { |device| device.name == name.to_s }
95
- end
96
-
97
- #
98
- # Retrieves the current PointerInput devices
99
- #
100
- # @return [Array] array of current PointerInput devices
101
- #
102
-
103
- def pointer_inputs
104
- @devices.select { |device| device.type == Interactions::POINTER }
105
- end
106
-
107
- #
108
- # Retrieves the current KeyInput device
109
- #
110
- # @return [Selenium::WebDriver::Interactions::InputDevice] current KeyInput device
111
- #
112
-
113
- def key_inputs
114
- @devices.select { |device| device.type == Interactions::KEY }
115
- end
116
-
117
- #
118
- # Creates a pause for the given device of the given duration. If no duration is given, the pause will only wait
119
- # for all actions to complete in that tick.
120
- #
121
- # @example Send keys to an element
122
- #
123
- # action_builder = driver.action
124
- # keyboard = action_builder.key_input
125
- # el = driver.find_element(id: "some_id")
126
- # driver.action.click(el).pause(keyboard).pause(keyboard).pause(keyboard).send_keys('keys').perform
127
- #
128
- # @param [InputDevice] device Input device to pause
129
- # @param [Float] duration Duration to pause
130
- # @return [W3CActionBuilder] A self reference.
131
- #
132
-
133
- def pause(device, duration = nil)
134
- device.create_pause(duration)
135
- self
136
- end
137
-
138
- #
139
- # Creates multiple pauses for the given device of the given duration.
140
- #
141
- # @example Send keys to an element
142
- #
143
- # action_builder = driver.action
144
- # keyboard = action_builder.key_input
145
- # el = driver.find_element(id: "some_id")
146
- # driver.action.click(el).pauses(keyboard, 3).send_keys('keys').perform
147
- #
148
- # @param [InputDevice] device Input device to pause
149
- # @param [Integer] number of pauses to add for the device
150
- # @param [Float] duration Duration to pause
151
- # @return [W3CActionBuilder] A self reference.
152
- #
153
-
154
- def pauses(device, number, duration = nil)
155
- number.times { device.create_pause(duration) }
156
- self
157
- end
158
-
159
- #
160
- # Executes the actions added to the builder.
161
- #
162
-
163
- def perform
164
- @bridge.send_actions @devices.map(&:encode).compact
165
- clear_all_actions
166
- nil
167
- end
168
-
169
- #
170
- # Clears all actions from the builder.
171
- #
172
-
173
- def clear_all_actions
174
- @devices.each(&:clear_actions)
175
- end
176
-
177
- #
178
- # Releases all action states from the browser.
179
- #
180
-
181
- def release_actions
182
- @bridge.release_actions
183
- end
184
-
185
- private
186
-
187
- #
188
- # Adds pauses for all devices but the given devices
189
- #
190
- # @param [Array[InputDevice]] action_devices Array of Input Devices performing an action in this tick.
191
- #
192
-
193
- def tick(*action_devices)
194
- return if @async
195
-
196
- @devices.each { |device| device.create_pause unless action_devices.include? device }
197
- end
198
-
199
- #
200
- # Adds an InputDevice
201
- #
202
-
203
- def add_input(device)
204
- unless @async
205
- max_device = @devices.max { |a, b| a.actions.length <=> b.actions.length }
206
- pauses(device, max_device.actions.length)
207
- end
208
- @devices << device
209
- end
210
- end # W3CActionBuilder
211
- end # WebDriver
212
- end # Selenium
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module WebDriver
22
- class W3CManager < Manager
23
-
24
- #
25
- # Get the cookie with the given name
26
- #
27
- # @param [String] name the name of the cookie
28
- # @return [Hash, nil] the cookie, or nil if it wasn't found.
29
- #
30
-
31
- def cookie_named(name)
32
- convert_cookie(@bridge.cookie(name))
33
- end
34
-
35
- #
36
- # Delete all cookies
37
- #
38
-
39
- def delete_all_cookies
40
- @bridge.delete_all_cookies
41
- end
42
-
43
- end # WC3Options
44
- end # WebDriver
45
- end # Selenium