1313# limitations under the License.
1414
1515from time import sleep
16+ from typing import TYPE_CHECKING
17+
18+ import pytest
19+ from selenium .common .exceptions import NoSuchElementException
1620
1721from test .functional .ios .helper .test_helper import BaseTestCase
1822
23+ if TYPE_CHECKING :
24+ from appium .webdriver .webelement import WebElement
25+
1926
2027class TestKeyboard (BaseTestCase ):
2128 def test_hide_keyboard (self ) -> None :
@@ -25,12 +32,12 @@ def test_hide_keyboard(self) -> None:
2532 el .click ()
2633 el .set_value ('Testing' )
2734
28- el = self .driver .find_element_by_class_name ('UIAKeyboard' )
29- assert el .is_displayed ()
35+ assert self ._get_keyboard_el ().is_displayed ()
3036
3137 self .driver .hide_keyboard (key_name = 'Done' )
3238
33- assert not el .is_displayed ()
39+ with pytest .raises (NoSuchElementException ):
40+ self ._get_keyboard_el ()
3441
3542 def test_hide_keyboard_presskey_strategy (self ) -> None :
3643 self ._move_to_textbox ()
@@ -39,12 +46,12 @@ def test_hide_keyboard_presskey_strategy(self) -> None:
3946 el .click ()
4047 el .set_value ('Testing' )
4148
42- el = self .driver .find_element_by_class_name ('UIAKeyboard' )
43- assert el .is_displayed ()
49+ assert self ._get_keyboard_el ().is_displayed ()
4450
4551 self .driver .hide_keyboard (strategy = 'pressKey' , key = 'Done' )
4652
47- assert not el .is_displayed ()
53+ with pytest .raises (NoSuchElementException ):
54+ self ._get_keyboard_el ()
4855
4956 def test_hide_keyboard_no_key_name (self ) -> None :
5057 self ._move_to_textbox ()
@@ -53,14 +60,12 @@ def test_hide_keyboard_no_key_name(self) -> None:
5360 el .click ()
5461 el .set_value ('Testing' )
5562
56- el = self .driver .find_element_by_class_name ('UIAKeyboard' )
57- assert el .is_displayed ()
63+ assert self ._get_keyboard_el ().is_displayed ()
5864
5965 self .driver .hide_keyboard ()
60- sleep (10 )
6166
62- # currently fails.
63- assert not el . is_displayed ()
67+ with pytest . raises ( NoSuchElementException ):
68+ self . _get_keyboard_el ()
6469
6570 def test_is_keyboard_shown (self ) -> None :
6671 self ._move_to_textbox ()
@@ -70,6 +75,9 @@ def test_is_keyboard_shown(self) -> None:
7075 el .set_value ('Testing' )
7176 assert self .driver .is_keyboard_shown ()
7277
78+ def _get_keyboard_el (self ) -> 'WebElement' :
79+ return self .driver .find_element_by_class_name ('XCUIElementTypeKeyboard' )
80+
7381 def _move_to_textbox (self ) -> None :
7482 el1 = self .driver .find_element_by_accessibility_id ('Sliders' )
7583 el2 = self .driver .find_element_by_accessibility_id ('Buttons' )
0 commit comments