@@ -898,37 +898,39 @@ def press_keys(self, locator=None, *keys):
898
898
899
899
def _press_keys (self , locator , parsed_keys ):
900
900
element = self .find_element (locator ) if is_truthy (locator ) else None
901
+ if element :
902
+ ActionChains (self .driver ).click (element ).perform ()
901
903
for parsed_key in parsed_keys :
902
904
actions = ActionChains (self .driver )
903
905
for key in parsed_key :
904
906
if key .special :
905
907
self ._press_keys_special_keys (actions , element , parsed_key , key )
906
908
else :
907
- self ._press_keys_normal_keys (actions , element , key )
908
- for key in parsed_key :
909
- if key .special :
910
- self .info ('Releasing special key %s.' % key .original )
911
- actions .key_up (key .converted )
909
+ self ._press_keys_normal_keys (actions , key )
910
+ self ._special_key_up (actions , parsed_key )
912
911
actions .perform ()
913
912
914
- def _press_keys_normal_keys (self , actions , element , key ):
913
+ def _press_keys_normal_keys (self , actions , key ):
915
914
self .info ('Sending key%s %s' % (plural_or_not (key .converted ), key .converted ))
916
- if element :
917
- actions .send_keys_to_element (element , key .converted )
918
- else :
919
- actions .send_keys (key .converted )
915
+ actions .send_keys (key .converted )
920
916
921
917
def _press_keys_special_keys (self , actions , element , parsed_key , key ):
922
918
if len (parsed_key ) == 1 and element :
923
919
self .info ('Pressing special key %s to element.' % key .original )
924
- actions .send_keys_to_element ( element , key .converted )
920
+ actions .send_keys ( key .converted )
925
921
elif len (parsed_key ) == 1 and not element :
926
922
self .info ('Pressing special key %s to browser.' % key .original )
927
923
actions .send_keys (key .converted )
928
924
else :
929
925
self .info ('Pressing special key %s down.' % key .original )
930
926
actions .key_down (key .converted )
931
927
928
+ def _special_key_up (self , actions , parsed_key ):
929
+ for key in parsed_key :
930
+ if key .special :
931
+ self .info ('Releasing special key %s.' % key .original )
932
+ actions .key_up (key .converted )
933
+
932
934
@keyword
933
935
def get_all_links (self ):
934
936
"""Returns a list containing ids of all links found in current page.
0 commit comments