Skip to content

Commit 249dd23

Browse files
committed
Merge pull request #32 from appium/isaac-hidekeyboard
Add strategy to hide_keyboard
2 parents 8ee7b0b + 3a2baaa commit 249dd23

File tree

3 files changed

+33
-6
lines changed

3 files changed

+33
-6
lines changed

appium/webdriver/webdriver.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,14 +329,23 @@ def reset(self):
329329
self.execute(Command.RESET)
330330
return self
331331

332-
def hide_keyboard(self, key_name=None):
333-
"""Hides the software keyboard on the device, using the specified key to
334-
press. If no key name is given, the keyboard is closed by moving focus
335-
from the text field. iOS only.
332+
def hide_keyboard(self, key_name=None, key=None, strategy=None):
333+
"""Hides the software keyboard on the device. In iOS, use `key_name` to press
334+
a particular key, or `strategy`. In Android, no parameters are used.
335+
336+
:Args:
337+
- key_name - key to press
338+
- strategy - strategy for closing the keyboard (e.g., `tapOutside`)
336339
"""
337340
data = {}
338341
if key_name is not None:
339342
data['keyName'] = key_name
343+
elif key is not None:
344+
data['key'] = key
345+
else:
346+
# defaults to `tapOutside` strategy
347+
strategy = 'tapOutside'
348+
data['strategy'] = strategy
340349
self.execute(Command.HIDE_KEYBOARD, data)
341350
return self
342351

test/functional/ios/appium_tests.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,22 @@ def test_hide_keyboard(self):
5555
el = self.driver.find_element_by_class_name('UIAKeyboard')
5656
self.assertTrue(el.is_displayed())
5757

58-
self.driver.hide_keyboard('Done')
58+
self.driver.hide_keyboard(key_name='Done')
59+
60+
self.assertFalse(el.is_displayed())
61+
62+
def test_hide_keyboard_presskey_strategy(self):
63+
el = self.driver.find_element_by_name('TextFields, Uses of UITextField')
64+
el.click()
65+
66+
# get focus on text field, so keyboard comes up
67+
el = self.driver.find_element_by_class_name('UIATextField')
68+
el.set_value('Testing')
69+
70+
el = self.driver.find_element_by_class_name('UIAKeyboard')
71+
self.assertTrue(el.is_displayed())
72+
73+
self.driver.hide_keyboard(strategy='pressKey', key='Done')
5974

6075
self.assertFalse(el.is_displayed())
6176

@@ -78,4 +93,5 @@ def test_hide_keyboard_no_key_name(self):
7893

7994

8095
if __name__ == "__main__":
81-
unittest.main()
96+
suite = unittest.TestLoader().loadTestsFromTestCase(AppiumTests)
97+
unittest.TextTestRunner(verbosity=2).run(suite)

test/functional/ios/desired_capabilities.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222

2323
def get_desired_capabilities(app):
2424
desired_caps = {
25+
'deviceName': 'iPhone Simulator',
26+
'platformName': 'iOS',
2527
'app': PATH('../../apps/' + app),
2628
}
2729

0 commit comments

Comments
 (0)