From 76e19e2ec36d383818acd8b2ab62f72e81584778 Mon Sep 17 00:00:00 2001 From: Payman Delshad Date: Wed, 3 Sep 2014 10:37:23 +0200 Subject: [PATCH] Added 'keyevent' since it is needed for Selendroid. --- appium/webdriver/mobilecommand.py | 1 + appium/webdriver/webdriver.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/appium/webdriver/mobilecommand.py b/appium/webdriver/mobilecommand.py index 8afd03a7..edd79526 100644 --- a/appium/webdriver/mobilecommand.py +++ b/appium/webdriver/mobilecommand.py @@ -31,6 +31,7 @@ class MobileCommand(object): # Appium Commands GET_APP_STRINGS = 'getAppStrings' PRESS_KEYCODE = 'pressKeyCode' + KEY_EVENT = 'keyEvent' # Needed for Selendroid LONG_PRESS_KEYCODE = 'longPressKeyCode' GET_CURRENT_ACTIVITY = 'getCurrentActivity' SET_IMMEDIATE_VALUE = 'setImmediateValue' diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 5adeb3b3..6e39b45a 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -350,6 +350,23 @@ def hide_keyboard(self, key_name=None, key=None, strategy=None): self.execute(Command.HIDE_KEYBOARD, data) return self + # Needed for Selendroid + def keyevent(self, keycode, metastate=None): + """Sends a keycode to the device. Android only. Possible keycodes can be + found in http://developer.android.com/reference/android/view/KeyEvent.html. + + :Args: + - keycode - the keycode to be sent to the device + - metastate - meta information about the keycode being sent + """ + data = { + 'keycode': keycode, + } + if metastate is not None: + data['metastate'] = metastate + self.execute(Command.KEY_EVENT, data) + return self + def press_keycode(self, keycode, metastate=None): """Sends a keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html. @@ -640,6 +657,9 @@ def _addCommands(self): ('POST', '/session/$sessionId/touch/multi/perform') self.command_executor._commands[Command.GET_APP_STRINGS] = \ ('POST', '/session/$sessionId/appium/app/strings') + # Needed for Selendroid + self.command_executor._commands[Command.KEY_EVENT] = \ + ('POST', '/session/$sessionId/appium/device/keyevent') self.command_executor._commands[Command.PRESS_KEYCODE] = \ ('POST', '/session/$sessionId/appium/device/press_keycode') self.command_executor._commands[Command.LONG_PRESS_KEYCODE] = \