Skip to content

Commit e33db04

Browse files
authored
Fix ios functional tests failed (appium#385)
* Fix safari test(iOS) * Fix: find_by_ios_predicate * Delete find_by_uiautomation_tests since uiautomation is deprecated * Move non test files * Replace test app with the latest * Fix tests failed along to replaced test app * review comments
1 parent 5abaaff commit e33db04

13 files changed

+58
-112
lines changed

test/apps/UICatalog.app.zip

18.2 MB
Binary file not shown.

test/functional/android/helper/desired_capabilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def get_desired_capabilities(app):
2626
desired_caps = {
2727
'platformName': 'Android',
2828
'deviceName': 'Android Emulator',
29-
'app': PATH('../../apps/' + app),
29+
'app': PATH('../../apps/{}'.format(app)),
3030
'newCommandTimeout': 240,
3131
'automationName': 'UIAutomator2'
3232
}

test/functional/ios/appium_tests.py

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
import unittest
1616
from time import sleep
1717

18-
import desired_capabilities
1918
from appium import webdriver
2019
from appium.webdriver.applicationstate import ApplicationState
20+
from appium.webdriver.common.mobileby import MobileBy
21+
from helper import desired_capabilities
2122

2223

2324
class AppiumTests(unittest.TestCase):
@@ -38,7 +39,7 @@ def test_lock(self):
3839

3940
def test_screen_record(self):
4041
self.driver.start_recording_screen()
41-
sleep(5)
42+
sleep(10)
4243
result = self.driver.stop_recording_screen()
4344
self.assertTrue(len(result) > 0)
4445

@@ -70,11 +71,9 @@ def test_toggle_touch_id_enrollment(self):
7071
self.driver.toggle_touch_id_enrollment()
7172

7273
def test_hide_keyboard(self):
73-
el = self.driver.find_element_by_name('Uses of UITextField')
74-
el.click()
74+
self._move_to_textbox()
7575

76-
# get focus on text field, so keyboard comes up
77-
el = self.driver.find_element_by_class_name('UIATextField')
76+
el = self.driver.find_elements_by_class_name('XCUIElementTypeTextField')[0]
7877
el.set_value('Testing')
7978

8079
el = self.driver.find_element_by_class_name('UIAKeyboard')
@@ -85,11 +84,9 @@ def test_hide_keyboard(self):
8584
self.assertFalse(el.is_displayed())
8685

8786
def test_hide_keyboard_presskey_strategy(self):
88-
el = self.driver.find_element_by_name('Uses of UITextField')
89-
el.click()
87+
self._move_to_textbox()
9088

91-
# get focus on text field, so keyboard comes up
92-
el = self.driver.find_element_by_class_name('UIATextField')
89+
el = self.driver.find_elements_by_class_name('XCUIElementTypeTextField')[0]
9390
el.set_value('Testing')
9491

9592
el = self.driver.find_element_by_class_name('UIAKeyboard')
@@ -100,11 +97,9 @@ def test_hide_keyboard_presskey_strategy(self):
10097
self.assertFalse(el.is_displayed())
10198

10299
def test_hide_keyboard_no_key_name(self):
103-
el = self.driver.find_element_by_name('Uses of UITextField')
104-
el.click()
100+
self._move_to_textbox()
105101

106-
# get focus on text field, so keyboard comes up
107-
el = self.driver.find_element_by_class_name('UIATextField')
102+
el = self.driver.find_elements_by_class_name('XCUIElementTypeTextField')[0]
108103
el.set_value('Testing')
109104

110105
el = self.driver.find_element_by_class_name('UIAKeyboard')
@@ -117,33 +112,31 @@ def test_hide_keyboard_no_key_name(self):
117112
self.assertFalse(el.is_displayed())
118113

119114
def test_is_keyboard_shown(self):
120-
self.assertFalse(self.driver.is_keyboard_shown())
121-
el = self.driver.find_element_by_name('Uses of UITextField')
122-
el.click()
115+
self._move_to_textbox()
123116

124-
# get focus on text field, so keyboard comes up
125-
el = self.driver.find_element_by_class_name('UIATextField')
117+
el = self.driver.find_elements_by_class_name('XCUIElementTypeTextField')[0]
126118
el.set_value('Testing')
127119
self.assertTrue(self.driver.is_keyboard_shown())
128120

129121
def test_clear(self):
130-
# Click text fields
131-
self.driver.find_element_by_accessibility_id('TextFields').click()
122+
self._move_to_textbox()
123+
124+
el = self.driver.find_elements_by_class_name('XCUIElementTypeTextField')[0]
132125

133126
# Verify default text
134-
def_text = '<enter text>'
135-
text = self.driver.find_element_by_accessibility_id('Normal').get_attribute('value')
127+
def_text = 'Placeholder text'
128+
text = el.get_attribute('value')
136129
self.assertEqual(text, def_text)
137130

138131
# Input some text, verify
139132
input_text = 'blah'
140-
self.driver.find_element_by_accessibility_id('Normal').send_keys(input_text)
141-
text = self.driver.find_element_by_accessibility_id('Normal').get_attribute('value')
133+
el.send_keys(input_text)
134+
text = el.get_attribute('value')
142135
self.assertEqual(text, input_text)
143136

144137
# Clear text, verify
145-
self.driver.find_element_by_accessibility_id('Normal').clear()
146-
text = self.driver.find_element_by_accessibility_id('Normal').get_attribute('value')
138+
el.clear()
139+
text = el.get_attribute('value')
147140
self.assertEqual(text, def_text)
148141

149142
def test_press_button(self):
@@ -154,7 +147,15 @@ def test_press_button(self):
154147
self.assertEqual(self.driver.query_app_state(desired_capabilities.BUNDLE_ID),
155148
ApplicationState.RUNNING_IN_FOREGROUND)
156149

150+
def _move_to_textbox(self):
151+
el1 = self.driver.find_element_by_accessibility_id('Sliders')
152+
el2 = self.driver.find_element_by_accessibility_id('Buttons')
153+
self.driver.scroll(el1, el2)
154+
155+
# Click text fields
156+
self.driver.find_element_by_accessibility_id('Text Fields').click()
157+
157158

158-
if __name__ == "__main__":
159+
if __name__ == '__main__':
159160
suite = unittest.TestLoader().loadTestsFromTestCase(AppiumTests)
160161
unittest.TextTestRunner(verbosity=2).run(suite)
File renamed without changes.
File renamed without changes.

test/functional/ios/find_by_element_webelement_tests.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
import unittest
1616

17-
import desired_capabilities
1817
from appium import webdriver
18+
from helper import desired_capabilities
1919

2020

2121
class FindByElementWebelementTests(unittest.TestCase):
@@ -33,16 +33,16 @@ def test_find_element_by_path(self):
3333
el = self.driver.find_element_by_ios_predicate('wdName == "UICatalog"')
3434
self.assertEqual('UICatalog', el.get_attribute('name'))
3535

36-
c_el = el.find_elements_by_ios_predicate('label == "TextFields"')
37-
self.assertEqual('TextFields', c_el[0].get_attribute('name'))
36+
c_el = el.find_elements_by_ios_predicate('label == "Action Sheets"')
37+
self.assertEqual('Action Sheets', c_el[0].get_attribute('name'))
3838

3939
c_el = el.find_elements_by_ios_class_chain('**/XCUIElementTypeStaticText')
40-
self.assertEqual('UICatalog', c_el[0].get_attribute('name'))
40+
self.assertEqual('Action Sheets', c_el[0].get_attribute('name'))
4141

4242
c_el = el.find_elements_by_accessibility_id('UICatalog')
4343
self.assertEqual('UICatalog', c_el[0].get_attribute('name'))
4444

4545

46-
if __name__ == "__main__":
46+
if __name__ == '__main__':
4747
suite = unittest.TestLoader().loadTestsFromTestCase(FindByElementWebelementTests)
4848
unittest.TextTestRunner(verbosity=2).run(suite)

test/functional/ios/find_by_ios_class_chain_tests.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
import unittest
1616

17-
import desired_capabilities
1817
from appium import webdriver
18+
from helper import desired_capabilities
1919

2020

2121
class FindByIOClassChainTests(unittest.TestCase):
@@ -30,7 +30,7 @@ def tearDownClass(self):
3030

3131
def test_find_element_by_path(self):
3232
el = self.driver.find_element_by_ios_class_chain('XCUIElementTypeWindow/**/XCUIElementTypeStaticText')
33-
self.assertEqual('UICatalog', el.get_attribute('name'))
33+
self.assertEqual('Action Sheets', el.get_attribute('name'))
3434

3535
def test_find_multiple_elements_by_path(self):
3636
el = self.driver.find_elements_by_ios_class_chain('XCUIElementTypeWindow/*/*/*')
@@ -39,6 +39,6 @@ def test_find_multiple_elements_by_path(self):
3939
self.assertEqual(None, el[1].get_attribute('name'))
4040

4141

42-
if __name__ == "__main__":
42+
if __name__ == '__main__':
4343
suite = unittest.TestLoader().loadTestsFromTestCase(FindByIOClassChainTests)
4444
unittest.TextTestRunner(verbosity=2).run(suite)

test/functional/ios/find_by_ios_predicate_tests.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
import unittest
1616

17-
import desired_capabilities
1817
from appium import webdriver
18+
from helper import desired_capabilities
1919

2020

2121
class FindByIOSPredicateTests(unittest.TestCase):
@@ -38,29 +38,29 @@ def test_find_multiple_element_by_type(self):
3838

3939
def test_find_element_by_label(self):
4040
# Will throw exception if element is not found
41-
self.driver.find_element_by_ios_predicate('label == "TextFields"')
41+
self.driver.find_element_by_ios_predicate('label == "Buttons"')
4242

4343
def test_find_element_by_value(self):
4444
# Will throw exception if element is not found
45-
self.driver.find_element_by_ios_predicate('wdValue == "Controls"')
45+
self.driver.find_element_by_ios_predicate('wdValue == "Buttons"')
4646

4747
def test_find_element_by_isvisible(self):
4848
# Will throw exception if element is not found
49-
self.driver.find_element_by_ios_predicate('wdValue == "SearchBar" AND isWDVisible == 1')
49+
self.driver.find_element_by_ios_predicate('wdValue == "Buttons" AND visible == 1')
5050

5151
# Should not find any elements
52-
e = self.driver.find_elements_by_ios_predicate('wdValue == "SearchBar" AND isWDVisible == 0')
52+
e = self.driver.find_elements_by_ios_predicate('wdValue == "Buttons" AND visible == 0')
5353
self.assertEqual(len(e), 0)
5454

5555
def test_find_element_by_isenabled(self):
5656
# Will throw exception if element is not found
57-
self.driver.find_element_by_ios_predicate('wdValue == "SearchBar" AND isWDEnabled == 1')
57+
self.driver.find_element_by_ios_predicate('wdValue == "Buttons" AND enabled == 1')
5858

5959
# Should not find any elements
60-
e = self.driver.find_elements_by_ios_predicate('wdValue == "SearchBar" AND isWDEnabled == 0')
60+
e = self.driver.find_elements_by_ios_predicate('wdValue == "Buttons" AND enabled == 0')
6161
self.assertEqual(len(e), 0)
6262

6363

64-
if __name__ == "__main__":
64+
if __name__ == '__main__':
6565
suite = unittest.TestLoader().loadTestsFromTestCase(FindByIOSPredicateTests)
6666
unittest.TextTestRunner(verbosity=2).run(suite)

test/functional/ios/find_by_uiautomation_tests.py

Lines changed: 0 additions & 56 deletions
This file was deleted.

test/functional/ios/helper/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)