|
34 | 34 |
|
35 | 35 | LOGGER = logging.getLogger(__name__) |
36 | 36 |
|
| 37 | +remote_commands = { |
| 38 | + Command.NEW_SESSION: ("POST", "/session"), |
| 39 | + Command.QUIT: ("DELETE", "/session/$sessionId"), |
| 40 | + Command.W3C_GET_CURRENT_WINDOW_HANDLE: ("GET", "/session/$sessionId/window"), |
| 41 | + Command.W3C_GET_WINDOW_HANDLES: ("GET", "/session/$sessionId/window/handles"), |
| 42 | + Command.GET: ("POST", "/session/$sessionId/url"), |
| 43 | + Command.GO_FORWARD: ("POST", "/session/$sessionId/forward"), |
| 44 | + Command.GO_BACK: ("POST", "/session/$sessionId/back"), |
| 45 | + Command.REFRESH: ("POST", "/session/$sessionId/refresh"), |
| 46 | + Command.W3C_EXECUTE_SCRIPT: ("POST", "/session/$sessionId/execute/sync"), |
| 47 | + Command.W3C_EXECUTE_SCRIPT_ASYNC: ("POST", "/session/$sessionId/execute/async"), |
| 48 | + Command.GET_CURRENT_URL: ("GET", "/session/$sessionId/url"), |
| 49 | + Command.GET_TITLE: ("GET", "/session/$sessionId/title"), |
| 50 | + Command.GET_PAGE_SOURCE: ("GET", "/session/$sessionId/source"), |
| 51 | + Command.SCREENSHOT: ("GET", "/session/$sessionId/screenshot"), |
| 52 | + Command.ELEMENT_SCREENSHOT: ("GET", "/session/$sessionId/element/$id/screenshot"), |
| 53 | + Command.FIND_ELEMENT: ("POST", "/session/$sessionId/element"), |
| 54 | + Command.FIND_ELEMENTS: ("POST", "/session/$sessionId/elements"), |
| 55 | + Command.W3C_GET_ACTIVE_ELEMENT: ("GET", "/session/$sessionId/element/active"), |
| 56 | + Command.FIND_CHILD_ELEMENT: ("POST", "/session/$sessionId/element/$id/element"), |
| 57 | + Command.FIND_CHILD_ELEMENTS: ("POST", "/session/$sessionId/element/$id/elements"), |
| 58 | + Command.CLICK_ELEMENT: ("POST", "/session/$sessionId/element/$id/click"), |
| 59 | + Command.CLEAR_ELEMENT: ("POST", "/session/$sessionId/element/$id/clear"), |
| 60 | + Command.GET_ELEMENT_TEXT: ("GET", "/session/$sessionId/element/$id/text"), |
| 61 | + Command.SEND_KEYS_TO_ELEMENT: ("POST", "/session/$sessionId/element/$id/value"), |
| 62 | + Command.UPLOAD_FILE: ("POST", "/session/$sessionId/se/file"), |
| 63 | + Command.GET_ELEMENT_TAG_NAME: ("GET", "/session/$sessionId/element/$id/name"), |
| 64 | + Command.IS_ELEMENT_SELECTED: ("GET", "/session/$sessionId/element/$id/selected"), |
| 65 | + Command.IS_ELEMENT_ENABLED: ("GET", "/session/$sessionId/element/$id/enabled"), |
| 66 | + Command.GET_ELEMENT_RECT: ("GET", "/session/$sessionId/element/$id/rect"), |
| 67 | + Command.GET_ELEMENT_ATTRIBUTE: ("GET", "/session/$sessionId/element/$id/attribute/$name"), |
| 68 | + Command.GET_ELEMENT_PROPERTY: ("GET", "/session/$sessionId/element/$id/property/$name"), |
| 69 | + Command.GET_ELEMENT_ARIA_ROLE: ("GET", "/session/$sessionId/element/$id/computedrole"), |
| 70 | + Command.GET_ELEMENT_ARIA_LABEL: ("GET", "/session/$sessionId/element/$id/computedlabel"), |
| 71 | + Command.GET_SHADOW_ROOT: ("GET", "/session/$sessionId/element/$id/shadow"), |
| 72 | + Command.FIND_ELEMENT_FROM_SHADOW_ROOT: ("POST", "/session/$sessionId/shadow/$shadowId/element"), |
| 73 | + Command.FIND_ELEMENTS_FROM_SHADOW_ROOT: ("POST", "/session/$sessionId/shadow/$shadowId/elements"), |
| 74 | + Command.GET_ALL_COOKIES: ("GET", "/session/$sessionId/cookie"), |
| 75 | + Command.ADD_COOKIE: ("POST", "/session/$sessionId/cookie"), |
| 76 | + Command.GET_COOKIE: ("GET", "/session/$sessionId/cookie/$name"), |
| 77 | + Command.DELETE_ALL_COOKIES: ("DELETE", "/session/$sessionId/cookie"), |
| 78 | + Command.DELETE_COOKIE: ("DELETE", "/session/$sessionId/cookie/$name"), |
| 79 | + Command.SWITCH_TO_FRAME: ("POST", "/session/$sessionId/frame"), |
| 80 | + Command.SWITCH_TO_PARENT_FRAME: ("POST", "/session/$sessionId/frame/parent"), |
| 81 | + Command.SWITCH_TO_WINDOW: ("POST", "/session/$sessionId/window"), |
| 82 | + Command.NEW_WINDOW: ("POST", "/session/$sessionId/window/new"), |
| 83 | + Command.CLOSE: ("DELETE", "/session/$sessionId/window"), |
| 84 | + Command.GET_ELEMENT_VALUE_OF_CSS_PROPERTY: ("GET", "/session/$sessionId/element/$id/css/$propertyName"), |
| 85 | + Command.EXECUTE_ASYNC_SCRIPT: ("POST", "/session/$sessionId/execute_async"), |
| 86 | + Command.SET_TIMEOUTS: ("POST", "/session/$sessionId/timeouts"), |
| 87 | + Command.GET_TIMEOUTS: ("GET", "/session/$sessionId/timeouts"), |
| 88 | + Command.W3C_DISMISS_ALERT: ("POST", "/session/$sessionId/alert/dismiss"), |
| 89 | + Command.W3C_ACCEPT_ALERT: ("POST", "/session/$sessionId/alert/accept"), |
| 90 | + Command.W3C_SET_ALERT_VALUE: ("POST", "/session/$sessionId/alert/text"), |
| 91 | + Command.W3C_GET_ALERT_TEXT: ("GET", "/session/$sessionId/alert/text"), |
| 92 | + Command.W3C_ACTIONS: ("POST", "/session/$sessionId/actions"), |
| 93 | + Command.W3C_CLEAR_ACTIONS: ("DELETE", "/session/$sessionId/actions"), |
| 94 | + Command.SET_WINDOW_RECT: ("POST", "/session/$sessionId/window/rect"), |
| 95 | + Command.GET_WINDOW_RECT: ("GET", "/session/$sessionId/window/rect"), |
| 96 | + Command.W3C_MAXIMIZE_WINDOW: ("POST", "/session/$sessionId/window/maximize"), |
| 97 | + Command.SET_SCREEN_ORIENTATION: ("POST", "/session/$sessionId/orientation"), |
| 98 | + Command.GET_SCREEN_ORIENTATION: ("GET", "/session/$sessionId/orientation"), |
| 99 | + Command.GET_NETWORK_CONNECTION: ("GET", "/session/$sessionId/network_connection"), |
| 100 | + Command.SET_NETWORK_CONNECTION: ("POST", "/session/$sessionId/network_connection"), |
| 101 | + Command.GET_LOG: ("POST", "/session/$sessionId/se/log"), |
| 102 | + Command.GET_AVAILABLE_LOG_TYPES: ("GET", "/session/$sessionId/se/log/types"), |
| 103 | + Command.CURRENT_CONTEXT_HANDLE: ("GET", "/session/$sessionId/context"), |
| 104 | + Command.CONTEXT_HANDLES: ("GET", "/session/$sessionId/contexts"), |
| 105 | + Command.SWITCH_TO_CONTEXT: ("POST", "/session/$sessionId/context"), |
| 106 | + Command.FULLSCREEN_WINDOW: ("POST", "/session/$sessionId/window/fullscreen"), |
| 107 | + Command.MINIMIZE_WINDOW: ("POST", "/session/$sessionId/window/minimize"), |
| 108 | + Command.PRINT_PAGE: ("POST", "/session/$sessionId/print"), |
| 109 | + Command.ADD_VIRTUAL_AUTHENTICATOR: ("POST", "/session/$sessionId/webauthn/authenticator"), |
| 110 | + Command.REMOVE_VIRTUAL_AUTHENTICATOR: ( |
| 111 | + "DELETE", |
| 112 | + "/session/$sessionId/webauthn/authenticator/$authenticatorId", |
| 113 | + ), |
| 114 | + Command.ADD_CREDENTIAL: ("POST", "/session/$sessionId/webauthn/authenticator/$authenticatorId/credential"), |
| 115 | + Command.GET_CREDENTIALS: ("GET", "/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials"), |
| 116 | + Command.REMOVE_CREDENTIAL: ( |
| 117 | + "DELETE", |
| 118 | + "/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials/$credentialId", |
| 119 | + ), |
| 120 | + Command.REMOVE_ALL_CREDENTIALS: ( |
| 121 | + "DELETE", |
| 122 | + "/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials", |
| 123 | + ), |
| 124 | + Command.SET_USER_VERIFIED: ("POST", "/session/$sessionId/webauthn/authenticator/$authenticatorId/uv"), |
| 125 | +} |
| 126 | + |
37 | 127 |
|
38 | 128 | class RemoteConnection: |
39 | 129 | """A connection with the Remote WebDriver server. |
@@ -178,96 +268,7 @@ def __init__(self, remote_server_addr: str, keep_alive: bool = False, ignore_pro |
178 | 268 | self._proxy_url = self._get_proxy_url() if not ignore_proxy else None |
179 | 269 | if keep_alive: |
180 | 270 | self._conn = self._get_connection_manager() |
181 | | - |
182 | | - self._commands = { |
183 | | - Command.NEW_SESSION: ("POST", "/session"), |
184 | | - Command.QUIT: ("DELETE", "/session/$sessionId"), |
185 | | - Command.W3C_GET_CURRENT_WINDOW_HANDLE: ("GET", "/session/$sessionId/window"), |
186 | | - Command.W3C_GET_WINDOW_HANDLES: ("GET", "/session/$sessionId/window/handles"), |
187 | | - Command.GET: ("POST", "/session/$sessionId/url"), |
188 | | - Command.GO_FORWARD: ("POST", "/session/$sessionId/forward"), |
189 | | - Command.GO_BACK: ("POST", "/session/$sessionId/back"), |
190 | | - Command.REFRESH: ("POST", "/session/$sessionId/refresh"), |
191 | | - Command.W3C_EXECUTE_SCRIPT: ("POST", "/session/$sessionId/execute/sync"), |
192 | | - Command.W3C_EXECUTE_SCRIPT_ASYNC: ("POST", "/session/$sessionId/execute/async"), |
193 | | - Command.GET_CURRENT_URL: ("GET", "/session/$sessionId/url"), |
194 | | - Command.GET_TITLE: ("GET", "/session/$sessionId/title"), |
195 | | - Command.GET_PAGE_SOURCE: ("GET", "/session/$sessionId/source"), |
196 | | - Command.SCREENSHOT: ("GET", "/session/$sessionId/screenshot"), |
197 | | - Command.ELEMENT_SCREENSHOT: ("GET", "/session/$sessionId/element/$id/screenshot"), |
198 | | - Command.FIND_ELEMENT: ("POST", "/session/$sessionId/element"), |
199 | | - Command.FIND_ELEMENTS: ("POST", "/session/$sessionId/elements"), |
200 | | - Command.W3C_GET_ACTIVE_ELEMENT: ("GET", "/session/$sessionId/element/active"), |
201 | | - Command.FIND_CHILD_ELEMENT: ("POST", "/session/$sessionId/element/$id/element"), |
202 | | - Command.FIND_CHILD_ELEMENTS: ("POST", "/session/$sessionId/element/$id/elements"), |
203 | | - Command.CLICK_ELEMENT: ("POST", "/session/$sessionId/element/$id/click"), |
204 | | - Command.CLEAR_ELEMENT: ("POST", "/session/$sessionId/element/$id/clear"), |
205 | | - Command.GET_ELEMENT_TEXT: ("GET", "/session/$sessionId/element/$id/text"), |
206 | | - Command.SEND_KEYS_TO_ELEMENT: ("POST", "/session/$sessionId/element/$id/value"), |
207 | | - Command.UPLOAD_FILE: ("POST", "/session/$sessionId/se/file"), |
208 | | - Command.GET_ELEMENT_TAG_NAME: ("GET", "/session/$sessionId/element/$id/name"), |
209 | | - Command.IS_ELEMENT_SELECTED: ("GET", "/session/$sessionId/element/$id/selected"), |
210 | | - Command.IS_ELEMENT_ENABLED: ("GET", "/session/$sessionId/element/$id/enabled"), |
211 | | - Command.GET_ELEMENT_RECT: ("GET", "/session/$sessionId/element/$id/rect"), |
212 | | - Command.GET_ELEMENT_ATTRIBUTE: ("GET", "/session/$sessionId/element/$id/attribute/$name"), |
213 | | - Command.GET_ELEMENT_PROPERTY: ("GET", "/session/$sessionId/element/$id/property/$name"), |
214 | | - Command.GET_ELEMENT_ARIA_ROLE: ("GET", "/session/$sessionId/element/$id/computedrole"), |
215 | | - Command.GET_ELEMENT_ARIA_LABEL: ("GET", "/session/$sessionId/element/$id/computedlabel"), |
216 | | - Command.GET_SHADOW_ROOT: ("GET", "/session/$sessionId/element/$id/shadow"), |
217 | | - Command.FIND_ELEMENT_FROM_SHADOW_ROOT: ("POST", "/session/$sessionId/shadow/$shadowId/element"), |
218 | | - Command.FIND_ELEMENTS_FROM_SHADOW_ROOT: ("POST", "/session/$sessionId/shadow/$shadowId/elements"), |
219 | | - Command.GET_ALL_COOKIES: ("GET", "/session/$sessionId/cookie"), |
220 | | - Command.ADD_COOKIE: ("POST", "/session/$sessionId/cookie"), |
221 | | - Command.GET_COOKIE: ("GET", "/session/$sessionId/cookie/$name"), |
222 | | - Command.DELETE_ALL_COOKIES: ("DELETE", "/session/$sessionId/cookie"), |
223 | | - Command.DELETE_COOKIE: ("DELETE", "/session/$sessionId/cookie/$name"), |
224 | | - Command.SWITCH_TO_FRAME: ("POST", "/session/$sessionId/frame"), |
225 | | - Command.SWITCH_TO_PARENT_FRAME: ("POST", "/session/$sessionId/frame/parent"), |
226 | | - Command.SWITCH_TO_WINDOW: ("POST", "/session/$sessionId/window"), |
227 | | - Command.NEW_WINDOW: ("POST", "/session/$sessionId/window/new"), |
228 | | - Command.CLOSE: ("DELETE", "/session/$sessionId/window"), |
229 | | - Command.GET_ELEMENT_VALUE_OF_CSS_PROPERTY: ("GET", "/session/$sessionId/element/$id/css/$propertyName"), |
230 | | - Command.EXECUTE_ASYNC_SCRIPT: ("POST", "/session/$sessionId/execute_async"), |
231 | | - Command.SET_TIMEOUTS: ("POST", "/session/$sessionId/timeouts"), |
232 | | - Command.GET_TIMEOUTS: ("GET", "/session/$sessionId/timeouts"), |
233 | | - Command.W3C_DISMISS_ALERT: ("POST", "/session/$sessionId/alert/dismiss"), |
234 | | - Command.W3C_ACCEPT_ALERT: ("POST", "/session/$sessionId/alert/accept"), |
235 | | - Command.W3C_SET_ALERT_VALUE: ("POST", "/session/$sessionId/alert/text"), |
236 | | - Command.W3C_GET_ALERT_TEXT: ("GET", "/session/$sessionId/alert/text"), |
237 | | - Command.W3C_ACTIONS: ("POST", "/session/$sessionId/actions"), |
238 | | - Command.W3C_CLEAR_ACTIONS: ("DELETE", "/session/$sessionId/actions"), |
239 | | - Command.SET_WINDOW_RECT: ("POST", "/session/$sessionId/window/rect"), |
240 | | - Command.GET_WINDOW_RECT: ("GET", "/session/$sessionId/window/rect"), |
241 | | - Command.W3C_MAXIMIZE_WINDOW: ("POST", "/session/$sessionId/window/maximize"), |
242 | | - Command.SET_SCREEN_ORIENTATION: ("POST", "/session/$sessionId/orientation"), |
243 | | - Command.GET_SCREEN_ORIENTATION: ("GET", "/session/$sessionId/orientation"), |
244 | | - Command.GET_NETWORK_CONNECTION: ("GET", "/session/$sessionId/network_connection"), |
245 | | - Command.SET_NETWORK_CONNECTION: ("POST", "/session/$sessionId/network_connection"), |
246 | | - Command.GET_LOG: ("POST", "/session/$sessionId/se/log"), |
247 | | - Command.GET_AVAILABLE_LOG_TYPES: ("GET", "/session/$sessionId/se/log/types"), |
248 | | - Command.CURRENT_CONTEXT_HANDLE: ("GET", "/session/$sessionId/context"), |
249 | | - Command.CONTEXT_HANDLES: ("GET", "/session/$sessionId/contexts"), |
250 | | - Command.SWITCH_TO_CONTEXT: ("POST", "/session/$sessionId/context"), |
251 | | - Command.FULLSCREEN_WINDOW: ("POST", "/session/$sessionId/window/fullscreen"), |
252 | | - Command.MINIMIZE_WINDOW: ("POST", "/session/$sessionId/window/minimize"), |
253 | | - Command.PRINT_PAGE: ("POST", "/session/$sessionId/print"), |
254 | | - Command.ADD_VIRTUAL_AUTHENTICATOR: ("POST", "/session/$sessionId/webauthn/authenticator"), |
255 | | - Command.REMOVE_VIRTUAL_AUTHENTICATOR: ( |
256 | | - "DELETE", |
257 | | - "/session/$sessionId/webauthn/authenticator/$authenticatorId", |
258 | | - ), |
259 | | - Command.ADD_CREDENTIAL: ("POST", "/session/$sessionId/webauthn/authenticator/$authenticatorId/credential"), |
260 | | - Command.GET_CREDENTIALS: ("GET", "/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials"), |
261 | | - Command.REMOVE_CREDENTIAL: ( |
262 | | - "DELETE", |
263 | | - "/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials/$credentialId", |
264 | | - ), |
265 | | - Command.REMOVE_ALL_CREDENTIALS: ( |
266 | | - "DELETE", |
267 | | - "/session/$sessionId/webauthn/authenticator/$authenticatorId/credentials", |
268 | | - ), |
269 | | - Command.SET_USER_VERIFIED: ("POST", "/session/$sessionId/webauthn/authenticator/$authenticatorId/uv"), |
270 | | - } |
| 271 | + self._commands = remote_commands |
271 | 272 |
|
272 | 273 | def execute(self, command, params): |
273 | 274 | """Send a command to the remote server. |
|
0 commit comments