key_actions.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # Licensed to the Software Freedom Conservancy (SFC) under one
  2. # or more contributor license agreements. See the NOTICE file
  3. # distributed with this work for additional information
  4. # regarding copyright ownership. The SFC licenses this file
  5. # to you under the Apache License, Version 2.0 (the
  6. # "License"); you may not use this file except in compliance
  7. # with the License. You may obtain a copy of the License at
  8. #
  9. # http://www.apache.org/licenses/LICENSE-2.0
  10. #
  11. # Unless required by applicable law or agreed to in writing,
  12. # software distributed under the License is distributed on an
  13. # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  14. # KIND, either express or implied. See the License for the
  15. # specific language governing permissions and limitations
  16. # under the License.
  17. from .interaction import Interaction
  18. from .key_input import KeyInput
  19. from ..utils import keys_to_typing
  20. class KeyActions(Interaction):
  21. def __init__(self, source=None):
  22. if source is None:
  23. source = KeyInput()
  24. self.source = source
  25. super(KeyActions, self).__init__(source)
  26. def key_down(self, letter, element=None):
  27. return self._key_action("create_key_down",
  28. letter, element)
  29. def key_up(self, letter, element=None):
  30. return self._key_action("create_key_up",
  31. letter, element)
  32. def pause(self, duration=0):
  33. return self._key_action("create_pause", duration)
  34. def send_keys(self, text, element=None):
  35. if not isinstance(text, list):
  36. text = keys_to_typing(text)
  37. for letter in text:
  38. self.key_down(letter, element)
  39. self.key_up(letter, element)
  40. return self
  41. def _key_action(self, action, letter, element=None):
  42. meth = getattr(self.source, action)
  43. meth(letter)
  44. return self