Skip to content

Commit e3fbb4a

Browse files
committed
[rb] remove remaining Edge workarounds for remote server
1 parent f8f18c1 commit e3fbb4a

File tree

6 files changed

+112
-133
lines changed

6 files changed

+112
-133
lines changed

rb/lib/selenium/webdriver/edge/bridge.rb

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,20 @@ def driver_extensions
5151
]
5252
end
5353

54+
def commands(command)
55+
unsupported = %i[execute_script execute_async_script submit_element double_click
56+
mouse_down mouse_up mouse_move_to click
57+
send_keys_to_active_element get_window_handles get_current_window_handle
58+
get_window_size set_window_size get_window_position set_window_position
59+
maximize_window get_alert_text accept_alert dismiss_alert]
60+
if unsupported.include? command
61+
Remote::Bridge::COMMANDS[command]
62+
else
63+
super
64+
end
65+
66+
end
67+
5468
def capabilities
5569
@capabilities ||= Remote::Capabilities.edge
5670
end
@@ -61,6 +75,87 @@ def quit
6175
@service.stop if @service
6276
end
6377

78+
def execute_script(script, *args)
79+
result = execute :execute_script, {}, {script: script, args: args}
80+
unwrap_script_result result
81+
end
82+
83+
def execute_async_script(script, *args)
84+
result = execute :execute_async_script, {}, {script: script, args: args}
85+
unwrap_script_result result
86+
end
87+
88+
def submit_element(element)
89+
execute :submit_element, id: element['ELEMENT']
90+
end
91+
92+
def double_click
93+
execute :double_click
94+
end
95+
96+
def click
97+
execute :click, {}, {button: 0}
98+
end
99+
100+
def context_click
101+
execute :click, {}, {button: 2}
102+
end
103+
104+
def mouse_down
105+
execute :mouse_down
106+
end
107+
108+
def mouse_up
109+
execute :mouse_up
110+
end
111+
112+
def mouse_move_to(element, x = nil, y = nil)
113+
element_id = element['ELEMENT'] if element
114+
params = {element: element_id}
115+
116+
if x && y
117+
params[:xoffset] = x
118+
params[:yoffset] = y
119+
end
120+
121+
execute :mouse_move_to, {}, params
122+
end
123+
124+
def send_keys_to_active_element(key)
125+
execute :send_keys_to_active_element, {}, {value: key}
126+
end
127+
128+
def window_handle
129+
execute :get_current_window_handle
130+
end
131+
132+
def window_size(handle = :current)
133+
data = execute :get_window_size, window_handle: handle
134+
135+
Dimension.new data['width'], data['height']
136+
end
137+
138+
def resize_window(width, height, handle = :current)
139+
execute :set_window_size, {window_handle: handle},
140+
{width: width,
141+
height: height}
142+
end
143+
144+
def window_position(handle = :current)
145+
data = execute :get_window_position, window_handle: handle
146+
147+
Point.new data['x'], data['y']
148+
end
149+
150+
def reposition_window(x, y, handle = :current)
151+
execute :set_window_position, {window_handle: handle},
152+
{x: x, y: y}
153+
end
154+
155+
def maximize_window(handle = :current)
156+
execute :maximize_window, window_handle: handle
157+
end
158+
64159
private
65160

66161
def extract_service_args(args = {})

rb/lib/selenium/webdriver/edge/legacy_support.rb

Lines changed: 0 additions & 117 deletions
This file was deleted.

rb/lib/selenium/webdriver/remote/bridge.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ def driver_extensions
9393
]
9494
end
9595

96+
def commands(command)
97+
COMMANDS[command]
98+
end
99+
96100
#
97101
# Returns the current session ID.
98102
#
@@ -628,7 +632,7 @@ def execute(*args)
628632
#
629633

630634
def raw_execute(command, opts = {}, command_hash = nil)
631-
verb, path = COMMANDS[command] || raise(ArgumentError, "unknown command: #{command.inspect}")
635+
verb, path = commands(command) || raise(ArgumentError, "unknown command: #{command.inspect}")
632636
path = path.dup
633637

634638
path[':session_id'] = @session_id if path.include?(':session_id')

rb/lib/selenium/webdriver/remote/commands.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ class Bridge
212212

213213
get_available_log_types: [:get, 'session/:session_id/log/types'.freeze],
214214
get_log: [:post, 'session/:session_id/log'.freeze]
215-
}
215+
}.freeze
216216
end
217217
end # Remote
218218
end # WebDriver

rb/lib/selenium/webdriver/remote/w3c_bridge.rb

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ class W3CBridge
4444
#
4545

4646
def initialize(opts = {})
47-
edge_check(opts)
4847

4948
opts = opts.dup
5049

@@ -78,13 +77,6 @@ def browser
7877
)
7978
end
8079

81-
def edge_check(opts)
82-
caps = opts[:desired_capabilities]
83-
return unless caps && caps[:browser_name] && caps[:browser_name] == 'MicrosoftEdge'
84-
require_relative '../edge/legacy_support'
85-
extend Edge::LegacySupport
86-
end
87-
8880
def driver_extensions
8981
[
9082
DriverExtensions::HasInputDevices,
@@ -98,6 +90,15 @@ def driver_extensions
9890
]
9991
end
10092

93+
def commands(command)
94+
case command
95+
when :status, :is_element_displayed
96+
Bridge::COMMANDS[command]
97+
else
98+
COMMANDS[command]
99+
end
100+
end
101+
101102
#
102103
# Returns the current session ID.
103104
#
@@ -118,8 +119,6 @@ def create_session(desired_capabilities)
118119
end
119120

120121
def status
121-
jwp = Selenium::WebDriver::Remote::Bridge::COMMANDS[:status]
122-
self.class.command(:status, jwp.first, jwp.last)
123122
execute :status
124123
end
125124

@@ -546,8 +545,6 @@ def element_selected?(element)
546545
end
547546

548547
def element_displayed?(element)
549-
jwp = Selenium::WebDriver::Remote::Bridge::COMMANDS[:is_element_displayed]
550-
self.class.command(:is_element_displayed, jwp.first, jwp.last)
551548
execute :is_element_displayed, id: element.values.first
552549
end
553550

@@ -626,7 +623,7 @@ def execute(*args)
626623
#
627624

628625
def raw_execute(command, opts = {}, command_hash = nil)
629-
verb, path = COMMANDS[command] || raise(ArgumentError, "unknown command: #{command.inspect}")
626+
verb, path = commands(command) || raise(ArgumentError, "unknown command: #{command.inspect}")
630627
path = path.dup
631628

632629
path[':session_id'] = @session_id if path.include?(':session_id')

rb/lib/selenium/webdriver/remote/w3c_commands.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class W3CBridge
132132

133133
take_screenshot: [:get, 'session/:session_id/screenshot'.freeze],
134134
take_element_screenshot: [:get, 'session/:session_id/element/:id/screenshot'.freeze]
135-
}
135+
}.freeze
136136
end
137137
end # Remote
138138
end # WebDriver

0 commit comments

Comments
 (0)