selenium-webdriver 4.0.0.alpha1 → 4.0.0.alpha2

Sign up to get free protection for your applications and to get access to all the features.
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