Skip to content

Commit 3a53f40

Browse files
committed
Fixed Press Keys to send multiple keys correctly
Fixes robotframework#1489
1 parent 45ac40a commit 3a53f40

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

src/SeleniumLibrary/keywords/element.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -898,37 +898,39 @@ def press_keys(self, locator=None, *keys):
898898

899899
def _press_keys(self, locator, parsed_keys):
900900
element = self.find_element(locator) if is_truthy(locator) else None
901+
if element:
902+
ActionChains(self.driver).click(element).perform()
901903
for parsed_key in parsed_keys:
902904
actions = ActionChains(self.driver)
903905
for key in parsed_key:
904906
if key.special:
905907
self._press_keys_special_keys(actions, element, parsed_key, key)
906908
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)
912911
actions.perform()
913912

914-
def _press_keys_normal_keys(self, actions, element, key):
913+
def _press_keys_normal_keys(self, actions, key):
915914
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)
920916

921917
def _press_keys_special_keys(self, actions, element, parsed_key, key):
922918
if len(parsed_key) == 1 and element:
923919
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)
925921
elif len(parsed_key) == 1 and not element:
926922
self.info('Pressing special key %s to browser.' % key.original)
927923
actions.send_keys(key.converted)
928924
else:
929925
self.info('Pressing special key %s down.' % key.original)
930926
actions.key_down(key.converted)
931927

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+
932934
@keyword
933935
def get_all_links(self):
934936
"""Returns a list containing ids of all links found in current page.

0 commit comments

Comments
 (0)