From fa97062d5a0e3b29c4b1b8427dfac43e2af13111 Mon Sep 17 00:00:00 2001 From: Aleksey Kuznetsov Date: Wed, 17 Oct 2018 12:00:27 +0300 Subject: [PATCH] Add an endpoint for pressing buttons --- appium/webdriver/webdriver.py | 14 ++++++++++++++ test/functional/ios/appium_tests.py | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/appium/webdriver/webdriver.py b/appium/webdriver/webdriver.py index 79d9ff68..86b02338 100644 --- a/appium/webdriver/webdriver.py +++ b/appium/webdriver/webdriver.py @@ -717,6 +717,20 @@ def long_press_keycode(self, keycode, metastate=None, flags=None): self.execute(Command.LONG_PRESS_KEYCODE, data) return self + def press_button(self, button_name): + """Sends a physical button name to the device to simulate the user pressing. iOS only. + Possible button names can be found in + https://github.com/appium/WebDriverAgent/blob/master/WebDriverAgentLib/Categories/XCUIDevice%2BFBHelpers.h + + :Args: + - button_name - the button name to be sent to the device + """ + data = { + 'name': button_name + } + self.execute_script('mobile: pressButton', data) + return self + @property def current_activity(self): """Retrieves the current activity running on the device. diff --git a/test/functional/ios/appium_tests.py b/test/functional/ios/appium_tests.py index 6721df9f..ce7e608a 100644 --- a/test/functional/ios/appium_tests.py +++ b/test/functional/ios/appium_tests.py @@ -146,6 +146,14 @@ def test_clear(self): text = self.driver.find_element_by_accessibility_id('Normal').get_attribute('value') self.assertEqual(text, def_text) + def test_press_button(self): + self.driver.press_button("Home") + if float(desired_capabilities.get_desired_capabilities( + desired_capabilities.BUNDLE_ID)['platformVersion']) < 11: + return + self.assertEqual(self.driver.query_app_state(desired_capabilities.BUNDLE_ID), + ApplicationState.RUNNING_IN_FOREGROUND) + if __name__ == "__main__": suite = unittest.TestLoader().loadTestsFromTestCase(AppiumTests)