selenium-webdriver 3.0.1 → 3.0.2
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.
- data/CHANGES +17 -0
- data/lib/selenium/webdriver/chrome.rb +13 -13
- data/lib/selenium/webdriver/chrome/bridge.rb +4 -3
- data/lib/selenium/webdriver/chrome/service.rb +6 -4
- data/lib/selenium/webdriver/common.rb +1 -0
- data/lib/selenium/webdriver/common/driver.rb +1 -1
- data/lib/selenium/webdriver/common/element.rb +14 -0
- data/lib/selenium/webdriver/common/options.rb +12 -10
- data/lib/selenium/webdriver/common/port_prober.rb +2 -1
- data/lib/selenium/webdriver/common/service.rb +23 -8
- data/lib/selenium/webdriver/common/w3c_options.rb +45 -0
- data/lib/selenium/webdriver/edge.rb +13 -13
- data/lib/selenium/webdriver/edge/bridge.rb +98 -1
- data/lib/selenium/webdriver/edge/service.rb +6 -4
- data/lib/selenium/webdriver/firefox.rb +13 -13
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/service.rb +10 -4
- data/lib/selenium/webdriver/firefox/w3c_bridge.rb +2 -1
- data/lib/selenium/webdriver/ie.rb +13 -13
- data/lib/selenium/webdriver/ie/bridge.rb +3 -1
- data/lib/selenium/webdriver/ie/service.rb +6 -4
- data/lib/selenium/webdriver/phantomjs.rb +13 -9
- data/lib/selenium/webdriver/phantomjs/bridge.rb +2 -1
- data/lib/selenium/webdriver/phantomjs/service.rb +2 -4
- data/lib/selenium/webdriver/remote/bridge.rb +102 -108
- data/lib/selenium/webdriver/remote/commands.rb +188 -185
- data/lib/selenium/webdriver/remote/w3c_bridge.rb +75 -94
- data/lib/selenium/webdriver/remote/w3c_capabilities.rb +3 -3
- data/lib/selenium/webdriver/remote/w3c_commands.rb +108 -104
- data/lib/selenium/webdriver/safari.rb +14 -13
- data/lib/selenium/webdriver/safari/bridge.rb +2 -1
- data/lib/selenium/webdriver/safari/service.rb +16 -4
- data/selenium-webdriver.gemspec +1 -1
- metadata +3 -4
- data/Gemfile.lock +0 -53
- data/lib/selenium/webdriver/edge/legacy_support.rb +0 -117
@@ -76,8 +76,8 @@ module Selenium
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def firefox(opts = {})
|
79
|
-
opts[:browser_version] = opts.delete :version
|
80
|
-
opts[:platform_name] = opts.delete :platform
|
79
|
+
opts[:browser_version] = opts.delete(:version) if opts.key?(:version)
|
80
|
+
opts[:platform_name] = opts.delete(:platform) if opts.key?(:platform)
|
81
81
|
|
82
82
|
new({browser_name: 'firefox'}.merge(opts))
|
83
83
|
end
|
@@ -85,7 +85,7 @@ module Selenium
|
|
85
85
|
alias_method :ff, :firefox
|
86
86
|
|
87
87
|
def w3c?(opts = {})
|
88
|
-
opts[:
|
88
|
+
opts[:marionette] != false &&
|
89
89
|
(!opts[:desired_capabilities] || opts[:desired_capabilities][:marionette] != false)
|
90
90
|
end
|
91
91
|
|
@@ -25,110 +25,114 @@ module Selenium
|
|
25
25
|
# http://www.w3.org/TR/2015/WD-webdriver-20150918/#list-of-endpoints
|
26
26
|
#
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
28
|
+
COMMANDS = {
|
29
|
+
|
30
|
+
#
|
31
|
+
# session handling
|
32
|
+
#
|
33
|
+
|
34
|
+
new_session: [:post, 'session'.freeze],
|
35
|
+
delete_session: [:delete, 'session/:session_id'.freeze],
|
36
|
+
|
37
|
+
#
|
38
|
+
# basic driver
|
39
|
+
#
|
40
|
+
|
41
|
+
get: [:post, 'session/:session_id/url'.freeze],
|
42
|
+
get_current_url: [:get, 'session/:session_id/url'.freeze],
|
43
|
+
back: [:post, 'session/:session_id/back'.freeze],
|
44
|
+
forward: [:post, 'session/:session_id/forward'.freeze],
|
45
|
+
refresh: [:post, 'session/:session_id/refresh'.freeze],
|
46
|
+
get_title: [:get, 'session/:session_id/title'.freeze],
|
47
|
+
|
48
|
+
#
|
49
|
+
# window and Frame handling
|
50
|
+
#
|
51
|
+
|
52
|
+
get_window_handle: [:get, 'session/:session_id/window'.freeze],
|
53
|
+
close_window: [:delete, 'session/:session_id/window'.freeze],
|
54
|
+
switch_to_window: [:post, 'session/:session_id/window'.freeze],
|
55
|
+
get_window_handles: [:get, 'session/:session_id/window/handles'.freeze],
|
56
|
+
fullscreen_window: [:post, 'session/:session_id/window/fullscreen'.freeze],
|
57
|
+
maximize_window: [:post, 'session/:session_id/window/maximize'.freeze],
|
58
|
+
set_window_size: [:post, 'session/:session_id/window/size'.freeze],
|
59
|
+
get_window_size: [:get, 'session/:session_id/window/size'.freeze],
|
60
|
+
switch_to_frame: [:post, 'session/:session_id/frame'.freeze],
|
61
|
+
switch_to_parent_frame: [:post, 'session/:session_id/frame/parent'.freeze],
|
62
|
+
|
63
|
+
#
|
64
|
+
# element
|
65
|
+
#
|
66
|
+
|
67
|
+
find_element: [:post, 'session/:session_id/element'.freeze],
|
68
|
+
find_elements: [:post, 'session/:session_id/elements'.freeze],
|
69
|
+
find_child_element: [:post, 'session/:session_id/element/:id/element'.freeze],
|
70
|
+
find_child_elements: [:post, 'session/:session_id/element/:id/elements'.freeze],
|
71
|
+
get_active_element: [:get, 'session/:session_id/element/active'.freeze],
|
72
|
+
is_element_selected: [:get, 'session/:session_id/element/:id/selected'.freeze],
|
73
|
+
get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'.freeze],
|
74
|
+
get_element_property: [:get, 'session/:session_id/element/:id/property/:name'.freeze],
|
75
|
+
get_element_css_value: [:get, 'session/:session_id/element/:id/css/:property_name'.freeze],
|
76
|
+
get_element_text: [:get, 'session/:session_id/element/:id/text'.freeze],
|
77
|
+
get_element_tag_name: [:get, 'session/:session_id/element/:id/name'.freeze],
|
78
|
+
get_element_rect: [:get, 'session/:session_id/element/:id/rect'.freeze],
|
79
|
+
is_element_enabled: [:get, 'session/:session_id/element/:id/enabled'.freeze],
|
80
|
+
|
81
|
+
#
|
82
|
+
# document handling
|
83
|
+
#
|
84
|
+
|
85
|
+
get_page_source: [:get, '/session/:session_id/source'.freeze],
|
86
|
+
execute_script: [:post, 'session/:session_id/execute/sync'.freeze],
|
87
|
+
execute_async_script: [:post, 'session/:session_id/execute/async'.freeze],
|
88
|
+
|
89
|
+
#
|
90
|
+
# cookies
|
91
|
+
#
|
92
|
+
|
93
|
+
get_all_cookies: [:get, 'session/:session_id/cookie'.freeze],
|
94
|
+
get_cookie: [:get, 'session/:session_id/cookie/:name'.freeze],
|
95
|
+
add_cookie: [:post, 'session/:session_id/cookie'.freeze],
|
96
|
+
delete_cookie: [:delete, 'session/:session_id/cookie/:name'.freeze],
|
97
|
+
delete_all_cookies: [:delete, 'session/:session_id/cookie'.freeze],
|
98
|
+
|
99
|
+
#
|
100
|
+
# timeouts
|
101
|
+
#
|
102
|
+
|
103
|
+
set_timeout: [:post, 'session/:session_id/timeouts'.freeze],
|
104
|
+
|
105
|
+
#
|
106
|
+
# actions
|
107
|
+
#
|
108
|
+
|
109
|
+
actions: [:post, 'session/:session_id/actions'.freeze],
|
110
|
+
|
111
|
+
#
|
112
|
+
# Element Operations
|
113
|
+
#
|
114
|
+
|
115
|
+
element_click: [:post, 'session/:session_id/element/:id/click'.freeze],
|
116
|
+
element_tap: [:post, 'session/:session_id/element/:id/tap'.freeze],
|
117
|
+
element_clear: [:post, 'session/:session_id/element/:id/clear'.freeze],
|
118
|
+
element_send_keys: [:post, 'session/:session_id/element/:id/value'.freeze],
|
119
|
+
|
120
|
+
#
|
121
|
+
# alerts
|
122
|
+
#
|
123
|
+
|
124
|
+
dismiss_alert: [:post, 'session/:session_id/alert/dismiss'.freeze],
|
125
|
+
accept_alert: [:post, 'session/:session_id/alert/accept'.freeze],
|
126
|
+
get_alert_text: [:get, 'session/:session_id/alert/text'.freeze],
|
127
|
+
send_alert_text: [:post, 'session/:session_id/alert/text'.freeze],
|
128
|
+
|
129
|
+
#
|
130
|
+
# screenshot
|
131
|
+
#
|
132
|
+
|
133
|
+
take_screenshot: [:get, 'session/:session_id/screenshot'.freeze],
|
134
|
+
take_element_screenshot: [:get, 'session/:session_id/element/:id/screenshot'.freeze]
|
135
|
+
}.freeze
|
132
136
|
end
|
133
137
|
end # Remote
|
134
138
|
end # WebDriver
|
@@ -23,11 +23,6 @@ require 'pathname'
|
|
23
23
|
module Selenium
|
24
24
|
module WebDriver
|
25
25
|
module Safari
|
26
|
-
MISSING_TEXT = <<-ERROR.tr("\n", '').freeze
|
27
|
-
Unable to find Apple's safaridriver which comes with Safari 10.
|
28
|
-
More info at https://webkit.org/blog/6900/webdriver-support-in-safari-10/
|
29
|
-
ERROR
|
30
|
-
|
31
26
|
class << self
|
32
27
|
def path=(path)
|
33
28
|
Platform.assert_executable(path)
|
@@ -41,19 +36,25 @@ module Selenium
|
|
41
36
|
raise Error::WebDriverError, 'Unable to find Safari'
|
42
37
|
end
|
43
38
|
|
44
|
-
def resource_path
|
45
|
-
@resource_path ||= Pathname.new(File.expand_path('../safari/resources', __FILE__))
|
46
|
-
end
|
47
|
-
|
48
39
|
def driver_path=(path)
|
40
|
+
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
41
|
+
[DEPRECATION] `driver_path=` is deprecated. Pass the driver path as an option instead.
|
42
|
+
e.g. Selenium::WebDriver.for :safari, driver_path: '/path'
|
43
|
+
DEPRECATE
|
44
|
+
|
49
45
|
Platform.assert_executable path
|
50
46
|
@driver_path = path
|
51
47
|
end
|
52
48
|
|
53
|
-
def driver_path
|
54
|
-
|
55
|
-
|
56
|
-
|
49
|
+
def driver_path(warning = true)
|
50
|
+
if warning
|
51
|
+
warn <<-DEPRECATE.gsub(/\n +| {2,}/, ' ').freeze
|
52
|
+
[DEPRECATION] `driver_path` is deprecated. Pass the driver path as an option instead.
|
53
|
+
e.g. Selenium::WebDriver.for :safari, driver_path: '/path'
|
54
|
+
DEPRECATE
|
55
|
+
end
|
56
|
+
|
57
|
+
@driver_path ||= nil
|
57
58
|
end
|
58
59
|
end
|
59
60
|
end # Safari
|
@@ -27,7 +27,8 @@ module Selenium
|
|
27
27
|
port = opts.delete(:port) || Service::DEFAULT_PORT
|
28
28
|
service_args = opts.delete(:service_args) || {}
|
29
29
|
|
30
|
-
|
30
|
+
driver_path = opts.delete(:driver_path) || Safari.driver_path(false)
|
31
|
+
@service = Service.new(driver_path, port, *extract_service_args(service_args))
|
31
32
|
@service.start
|
32
33
|
opts[:url] = @service.uri
|
33
34
|
|
@@ -26,9 +26,25 @@ module Selenium
|
|
26
26
|
|
27
27
|
class Service < WebDriver::Service
|
28
28
|
DEFAULT_PORT = 7050
|
29
|
+
@executable = '/usr/bin/safaridriver'.freeze
|
30
|
+
@missing_text = <<-ERROR.gsub(/\n +| {2,}/, ' ').freeze
|
31
|
+
Unable to find Apple's safaridriver which comes with Safari 10.
|
32
|
+
More info at https://webkit.org/blog/6900/webdriver-support-in-safari-10/
|
33
|
+
ERROR
|
34
|
+
|
35
|
+
def stop
|
36
|
+
stop_process
|
37
|
+
end
|
29
38
|
|
30
39
|
private
|
31
40
|
|
41
|
+
def binary_path(path)
|
42
|
+
path = self.class.executable if path.nil?
|
43
|
+
raise Error::WebDriverError, self.class.missing_text unless path
|
44
|
+
Platform.assert_executable path
|
45
|
+
path
|
46
|
+
end
|
47
|
+
|
32
48
|
def start_process
|
33
49
|
server_command = [@executable_path, "--port=#{@port}", *@extra_args]
|
34
50
|
@process = ChildProcess.build(*server_command)
|
@@ -37,10 +53,6 @@ module Selenium
|
|
37
53
|
@process.start
|
38
54
|
end
|
39
55
|
|
40
|
-
def stop_server
|
41
|
-
connect_to_server { |http| http.head('/shutdown') }
|
42
|
-
end
|
43
|
-
|
44
56
|
def cannot_connect_error_text
|
45
57
|
"unable to connect to safaridriver #{@host}:#{@port}"
|
46
58
|
end
|
data/selenium-webdriver.gemspec
CHANGED
@@ -5,7 +5,7 @@ raise "cwd must be #{root} when reading gemspec" if root != Dir.pwd
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = 'selenium-webdriver'
|
8
|
-
s.version = '3.0.
|
8
|
+
s.version = '3.0.2'
|
9
9
|
|
10
10
|
s.authors = ['Alex Rodionov', 'Titus Fortner']
|
11
11
|
s.email = ['p0deje@gmail.com', 'titusfortner@gmail.com']
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 3.0.
|
5
|
+
version: 3.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Alex Rodionov
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2016-11-
|
14
|
+
date: 2016-11-25 00:00:00 -06:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -124,7 +124,6 @@ extra_rdoc_files: []
|
|
124
124
|
files:
|
125
125
|
- CHANGES
|
126
126
|
- Gemfile
|
127
|
-
- Gemfile.lock
|
128
127
|
- LICENSE
|
129
128
|
- README.md
|
130
129
|
- selenium-webdriver.gemspec
|
@@ -172,6 +171,7 @@ files:
|
|
172
171
|
- lib/selenium/webdriver/common/touch_action_builder.rb
|
173
172
|
- lib/selenium/webdriver/common/touch_screen.rb
|
174
173
|
- lib/selenium/webdriver/common/w3c_error.rb
|
174
|
+
- lib/selenium/webdriver/common/w3c_options.rb
|
175
175
|
- lib/selenium/webdriver/common/wait.rb
|
176
176
|
- lib/selenium/webdriver/common/window.rb
|
177
177
|
- lib/selenium/webdriver/common/zipper.rb
|
@@ -189,7 +189,6 @@ files:
|
|
189
189
|
- lib/selenium/webdriver/common/html5/session_storage.rb
|
190
190
|
- lib/selenium/webdriver/common/html5/shared_web_storage.rb
|
191
191
|
- lib/selenium/webdriver/edge/bridge.rb
|
192
|
-
- lib/selenium/webdriver/edge/legacy_support.rb
|
193
192
|
- lib/selenium/webdriver/edge/service.rb
|
194
193
|
- lib/selenium/webdriver/firefox/binary.rb
|
195
194
|
- lib/selenium/webdriver/firefox/bridge.rb
|
data/Gemfile.lock
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
selenium-webdriver (3.0.1)
|
5
|
-
childprocess (~> 0.5)
|
6
|
-
rubyzip (~> 1.0)
|
7
|
-
websocket (~> 1.0)
|
8
|
-
|
9
|
-
GEM
|
10
|
-
remote: https://rubygems.org/
|
11
|
-
specs:
|
12
|
-
addressable (2.4.0)
|
13
|
-
builder (3.2.2)
|
14
|
-
childprocess (0.5.9)
|
15
|
-
ffi (~> 1.0, >= 1.0.11)
|
16
|
-
ci_reporter (1.9.3)
|
17
|
-
builder (>= 2.1.2)
|
18
|
-
crack (0.4.3)
|
19
|
-
safe_yaml (~> 1.0.0)
|
20
|
-
diff-lcs (1.2.5)
|
21
|
-
ffi (1.9.14)
|
22
|
-
hashdiff (0.3.0)
|
23
|
-
rack (1.6.4)
|
24
|
-
rspec (2.99.0)
|
25
|
-
rspec-core (~> 2.99.0)
|
26
|
-
rspec-expectations (~> 2.99.0)
|
27
|
-
rspec-mocks (~> 2.99.0)
|
28
|
-
rspec-core (2.99.2)
|
29
|
-
rspec-expectations (2.99.2)
|
30
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
31
|
-
rspec-mocks (2.99.4)
|
32
|
-
rubyzip (1.2.0)
|
33
|
-
safe_yaml (1.0.4)
|
34
|
-
webmock (1.24.6)
|
35
|
-
addressable (>= 2.3.6)
|
36
|
-
crack (>= 0.3.2)
|
37
|
-
hashdiff
|
38
|
-
websocket (1.2.3)
|
39
|
-
yard (0.8.7.6)
|
40
|
-
|
41
|
-
PLATFORMS
|
42
|
-
ruby
|
43
|
-
|
44
|
-
DEPENDENCIES
|
45
|
-
ci_reporter (~> 1.6, >= 1.6.2)
|
46
|
-
rack (~> 1.0)
|
47
|
-
rspec (~> 2.99.0)
|
48
|
-
selenium-webdriver!
|
49
|
-
webmock (~> 1.7, >= 1.7.5)
|
50
|
-
yard (~> 0.8.7)
|
51
|
-
|
52
|
-
BUNDLED WITH
|
53
|
-
1.13.6
|
@@ -1,117 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
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
|
-
module Edge
|
23
|
-
module LegacySupport
|
24
|
-
# These are commands Edge is still using from JSON Wire Protocol
|
25
|
-
%i[executeScript executeAsyncScript submitElement doubleClick
|
26
|
-
mouseDown mouseUp mouseMoveTo click
|
27
|
-
sendKeysToActiveElement getWindowHandles getCurrentWindowHandle
|
28
|
-
getWindowSize setWindowSize getWindowPosition setWindowPosition
|
29
|
-
maximizeWindow getAlertText acceptAlert dismissAlert].each do |cmd|
|
30
|
-
jwp = Remote::Bridge::COMMANDS[cmd]
|
31
|
-
Remote::W3CBridge.command(cmd, jwp.first, jwp.last)
|
32
|
-
end
|
33
|
-
|
34
|
-
def execute_script(script, *args)
|
35
|
-
result = execute :executeScript, {}, {script: script, args: args}
|
36
|
-
unwrap_script_result result
|
37
|
-
end
|
38
|
-
|
39
|
-
def execute_async_script(script, *args)
|
40
|
-
result = execute :executeAsyncScript, {}, {script: script, args: args}
|
41
|
-
unwrap_script_result result
|
42
|
-
end
|
43
|
-
|
44
|
-
def submit_element(element)
|
45
|
-
execute :submitElement, id: element['ELEMENT']
|
46
|
-
end
|
47
|
-
|
48
|
-
def double_click
|
49
|
-
execute :doubleClick
|
50
|
-
end
|
51
|
-
|
52
|
-
def click
|
53
|
-
execute :click, {}, {button: 0}
|
54
|
-
end
|
55
|
-
|
56
|
-
def context_click
|
57
|
-
execute :click, {}, {button: 2}
|
58
|
-
end
|
59
|
-
|
60
|
-
def mouse_down
|
61
|
-
execute :mouseDown
|
62
|
-
end
|
63
|
-
|
64
|
-
def mouse_up
|
65
|
-
execute :mouseUp
|
66
|
-
end
|
67
|
-
|
68
|
-
def mouse_move_to(element, x = nil, y = nil)
|
69
|
-
element_id = element['ELEMENT'] if element
|
70
|
-
params = {element: element_id}
|
71
|
-
|
72
|
-
if x && y
|
73
|
-
params[:xoffset] = x
|
74
|
-
params[:yoffset] = y
|
75
|
-
end
|
76
|
-
|
77
|
-
execute :mouseMoveTo, {}, params
|
78
|
-
end
|
79
|
-
|
80
|
-
def send_keys_to_active_element(key)
|
81
|
-
execute :sendKeysToActiveElement, {}, {value: key}
|
82
|
-
end
|
83
|
-
|
84
|
-
def window_handle
|
85
|
-
execute :getCurrentWindowHandle
|
86
|
-
end
|
87
|
-
|
88
|
-
def window_size(handle = :current)
|
89
|
-
data = execute :getWindowSize, window_handle: handle
|
90
|
-
|
91
|
-
Dimension.new data['width'], data['height']
|
92
|
-
end
|
93
|
-
|
94
|
-
def resize_window(width, height, handle = :current)
|
95
|
-
execute :setWindowSize, {window_handle: handle},
|
96
|
-
{width: width,
|
97
|
-
height: height}
|
98
|
-
end
|
99
|
-
|
100
|
-
def window_position(handle = :current)
|
101
|
-
data = execute :getWindowPosition, window_handle: handle
|
102
|
-
|
103
|
-
Point.new data['x'], data['y']
|
104
|
-
end
|
105
|
-
|
106
|
-
def reposition_window(x, y, handle = :current)
|
107
|
-
execute :setWindowPosition, {window_handle: handle},
|
108
|
-
{x: x, y: y}
|
109
|
-
end
|
110
|
-
|
111
|
-
def maximize_window(handle = :current)
|
112
|
-
execute :maximizeWindow, window_handle: handle
|
113
|
-
end
|
114
|
-
end # LegacySupport
|
115
|
-
end # Edge
|
116
|
-
end # WebDriver
|
117
|
-
end # Selenium
|