19
19
The ActionChains implementation,
20
20
"""
21
21
22
- import time
23
-
24
- from selenium .webdriver .remote .command import Command
25
-
26
22
from .utils import keys_to_typing
27
23
from .actions .action_builder import ActionBuilder
28
24
@@ -69,27 +65,21 @@ def __init__(self, driver):
69
65
"""
70
66
self ._driver = driver
71
67
self ._actions = []
72
- if self ._driver .w3c :
73
- self .w3c_actions = ActionBuilder (driver )
68
+ self .w3c_actions = ActionBuilder (driver )
74
69
75
70
def perform (self ):
76
71
"""
77
72
Performs all stored actions.
78
73
"""
79
- if self ._driver .w3c :
80
- self .w3c_actions .perform ()
81
- else :
82
- for action in self ._actions :
83
- action ()
74
+ self .w3c_actions .perform ()
84
75
85
76
def reset_actions (self ):
86
77
"""
87
78
Clears actions that are already stored locally and on the remote end
88
79
"""
89
- if self ._driver .w3c :
90
- self .w3c_actions .clear_actions ()
91
- for device in self .w3c_actions .devices :
92
- device .clear_actions ()
80
+ self .w3c_actions .clear_actions ()
81
+ for device in self .w3c_actions .devices :
82
+ device .clear_actions ()
93
83
self ._actions = []
94
84
95
85
def click (self , on_element = None ):
@@ -102,13 +92,11 @@ def click(self, on_element=None):
102
92
"""
103
93
if on_element :
104
94
self .move_to_element (on_element )
105
- if self ._driver .w3c :
106
- self .w3c_actions .pointer_action .click ()
107
- self .w3c_actions .key_action .pause ()
108
- self .w3c_actions .key_action .pause ()
109
- else :
110
- self ._actions .append (lambda : self ._driver .execute (
111
- Command .CLICK , {'button' : 0 }))
95
+
96
+ self .w3c_actions .pointer_action .click ()
97
+ self .w3c_actions .key_action .pause ()
98
+ self .w3c_actions .key_action .pause ()
99
+
112
100
return self
113
101
114
102
def click_and_hold (self , on_element = None ):
@@ -121,12 +109,10 @@ def click_and_hold(self, on_element=None):
121
109
"""
122
110
if on_element :
123
111
self .move_to_element (on_element )
124
- if self ._driver .w3c :
125
- self .w3c_actions .pointer_action .click_and_hold ()
126
- self .w3c_actions .key_action .pause ()
127
- else :
128
- self ._actions .append (lambda : self ._driver .execute (
129
- Command .MOUSE_DOWN , {}))
112
+
113
+ self .w3c_actions .pointer_action .click_and_hold ()
114
+ self .w3c_actions .key_action .pause ()
115
+
130
116
return self
131
117
132
118
def context_click (self , on_element = None ):
@@ -139,13 +125,11 @@ def context_click(self, on_element=None):
139
125
"""
140
126
if on_element :
141
127
self .move_to_element (on_element )
142
- if self ._driver .w3c :
143
- self .w3c_actions .pointer_action .context_click ()
144
- self .w3c_actions .key_action .pause ()
145
- self .w3c_actions .key_action .pause ()
146
- else :
147
- self ._actions .append (lambda : self ._driver .execute (
148
- Command .CLICK , {'button' : 2 }))
128
+
129
+ self .w3c_actions .pointer_action .context_click ()
130
+ self .w3c_actions .key_action .pause ()
131
+ self .w3c_actions .key_action .pause ()
132
+
149
133
return self
150
134
151
135
def double_click (self , on_element = None ):
@@ -158,13 +142,11 @@ def double_click(self, on_element=None):
158
142
"""
159
143
if on_element :
160
144
self .move_to_element (on_element )
161
- if self ._driver .w3c :
162
- self .w3c_actions .pointer_action .double_click ()
163
- for _ in range (4 ):
164
- self .w3c_actions .key_action .pause ()
165
- else :
166
- self ._actions .append (lambda : self ._driver .execute (
167
- Command .DOUBLE_CLICK , {}))
145
+
146
+ self .w3c_actions .pointer_action .double_click ()
147
+ for _ in range (4 ):
148
+ self .w3c_actions .key_action .pause ()
149
+
168
150
return self
169
151
170
152
def drag_and_drop (self , source , target ):
@@ -212,13 +194,10 @@ def key_down(self, value, element=None):
212
194
"""
213
195
if element :
214
196
self .click (element )
215
- if self ._driver .w3c :
216
- self .w3c_actions .key_action .key_down (value )
217
- self .w3c_actions .pointer_action .pause ()
218
- else :
219
- self ._actions .append (lambda : self ._driver .execute (
220
- Command .SEND_KEYS_TO_ACTIVE_ELEMENT ,
221
- {"value" : keys_to_typing (value )}))
197
+
198
+ self .w3c_actions .key_action .key_down (value )
199
+ self .w3c_actions .pointer_action .pause ()
200
+
222
201
return self
223
202
224
203
def key_up (self , value , element = None ):
@@ -237,13 +216,10 @@ def key_up(self, value, element=None):
237
216
"""
238
217
if element :
239
218
self .click (element )
240
- if self ._driver .w3c :
241
- self .w3c_actions .key_action .key_up (value )
242
- self .w3c_actions .pointer_action .pause ()
243
- else :
244
- self ._actions .append (lambda : self ._driver .execute (
245
- Command .SEND_KEYS_TO_ACTIVE_ELEMENT ,
246
- {"value" : keys_to_typing (value )}))
219
+
220
+ self .w3c_actions .key_action .key_up (value )
221
+ self .w3c_actions .pointer_action .pause ()
222
+
247
223
return self
248
224
249
225
def move_by_offset (self , xoffset , yoffset ):
@@ -254,14 +230,10 @@ def move_by_offset(self, xoffset, yoffset):
254
230
- xoffset: X offset to move to, as a positive or negative integer.
255
231
- yoffset: Y offset to move to, as a positive or negative integer.
256
232
"""
257
- if self ._driver .w3c :
258
- self .w3c_actions .pointer_action .move_by (xoffset , yoffset )
259
- self .w3c_actions .key_action .pause ()
260
- else :
261
- self ._actions .append (lambda : self ._driver .execute (
262
- Command .MOVE_TO , {
263
- 'xoffset' : int (xoffset ),
264
- 'yoffset' : int (yoffset )}))
233
+
234
+ self .w3c_actions .pointer_action .move_by (xoffset , yoffset )
235
+ self .w3c_actions .key_action .pause ()
236
+
265
237
return self
266
238
267
239
def move_to_element (self , to_element ):
@@ -271,12 +243,10 @@ def move_to_element(self, to_element):
271
243
:Args:
272
244
- to_element: The WebElement to move to.
273
245
"""
274
- if self ._driver .w3c :
275
- self .w3c_actions .pointer_action .move_to (to_element )
276
- self .w3c_actions .key_action .pause ()
277
- else :
278
- self ._actions .append (lambda : self ._driver .execute (
279
- Command .MOVE_TO , {'element' : to_element .id }))
246
+
247
+ self .w3c_actions .pointer_action .move_to (to_element )
248
+ self .w3c_actions .key_action .pause ()
249
+
280
250
return self
281
251
282
252
def move_to_element_with_offset (self , to_element , xoffset , yoffset ):
@@ -289,26 +259,20 @@ def move_to_element_with_offset(self, to_element, xoffset, yoffset):
289
259
- xoffset: X offset to move to.
290
260
- yoffset: Y offset to move to.
291
261
"""
292
- if self ._driver .w3c :
293
- self .w3c_actions .pointer_action .move_to (to_element ,
294
- int (xoffset ),
295
- int (yoffset ))
296
- self .w3c_actions .key_action .pause ()
297
- else :
298
- self ._actions .append (
299
- lambda : self ._driver .execute (Command .MOVE_TO , {
300
- 'element' : to_element .id ,
301
- 'xoffset' : int (xoffset ),
302
- 'yoffset' : int (yoffset )}))
262
+
263
+ self .w3c_actions .pointer_action .move_to (to_element ,
264
+ int (xoffset ),
265
+ int (yoffset ))
266
+ self .w3c_actions .key_action .pause ()
267
+
303
268
return self
304
269
305
270
def pause (self , seconds ):
306
271
""" Pause all inputs for the specified duration in seconds """
307
- if self ._driver .w3c :
308
- self .w3c_actions .pointer_action .pause (seconds )
309
- self .w3c_actions .key_action .pause (seconds )
310
- else :
311
- self ._actions .append (lambda : time .sleep (seconds ))
272
+
273
+ self .w3c_actions .pointer_action .pause (seconds )
274
+ self .w3c_actions .key_action .pause (seconds )
275
+
312
276
return self
313
277
314
278
def release (self , on_element = None ):
@@ -321,11 +285,10 @@ def release(self, on_element=None):
321
285
"""
322
286
if on_element :
323
287
self .move_to_element (on_element )
324
- if self ._driver .w3c :
325
- self .w3c_actions .pointer_action .release ()
326
- self .w3c_actions .key_action .pause ()
327
- else :
328
- self ._actions .append (lambda : self ._driver .execute (Command .MOUSE_UP , {}))
288
+
289
+ self .w3c_actions .pointer_action .release ()
290
+ self .w3c_actions .key_action .pause ()
291
+
329
292
return self
330
293
331
294
def send_keys (self , * keys_to_send ):
@@ -337,13 +300,11 @@ def send_keys(self, *keys_to_send):
337
300
'Keys' class.
338
301
"""
339
302
typing = keys_to_typing (keys_to_send )
340
- if self ._driver .w3c :
341
- for key in typing :
342
- self .key_down (key )
343
- self .key_up (key )
344
- else :
345
- self ._actions .append (lambda : self ._driver .execute (
346
- Command .SEND_KEYS_TO_ACTIVE_ELEMENT , {'value' : typing }))
303
+
304
+ for key in typing :
305
+ self .key_down (key )
306
+ self .key_up (key )
307
+
347
308
return self
348
309
349
310
def send_keys_to_element (self , element , * keys_to_send ):
0 commit comments