Skip to content

Commit 25d3feb

Browse files
authored
Merge pull request appium#174 from KazuCocoa/add_tests_for_class_chain
add tests for ios class chain and rename find_elements_by_class_chain method
2 parents dc0c359 + a9bceb7 commit 25d3feb

File tree

4 files changed

+50
-8
lines changed

4 files changed

+50
-8
lines changed

appium/webdriver/webdriver.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,18 @@ def find_element_by_ios_class_chain(self, class_chain_string):
129129
- class_chain_string - The class chain string
130130
131131
:Usage:
132-
driver.find_element_by_class_chain('XCUIElementTypeWindow/XCUIElementTypeButton[3]')
132+
driver.find_element_by_ios_class_chain('XCUIElementTypeWindow/XCUIElementTypeButton[3]')
133133
"""
134134
return self.find_element(by=By.IOS_CLASS_CHAIN, value=class_chain_string)
135135

136-
def find_elements_by_class_chain(self, class_chain_string):
136+
def find_elements_by_ios_class_chain(self, class_chain_string):
137137
"""Finds elements by ios class chain string.
138138
139139
:Args:
140140
- class_chain_string - The class chain string
141141
142142
:Usage:
143-
driver.find_elements_by_class_chain('XCUIElementTypeWindow[2]/XCUIElementTypeAny[-2]')
143+
driver.find_elements_by_ios_class_chain('XCUIElementTypeWindow[2]/XCUIElementTypeAny[-2]')
144144
"""
145145
return self.find_elements(by=By.IOS_CLASS_CHAIN, value=class_chain_string)
146146

appium/webdriver/webelement.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,18 +70,18 @@ def find_element_by_ios_class_chain(self, class_chain_string):
7070
- class_chain_string - The class chain string
7171
7272
:Usage:
73-
driver.find_element_by_class_chain('XCUIElementTypeWindow/XCUIElementTypeButton[3]')
73+
driver.find_element_by_ios_class_chain('XCUIElementTypeWindow/XCUIElementTypeButton[3]')
7474
"""
7575
return self.find_element(by=By.IOS_CLASS_CHAIN, value=class_chain_string)
7676

77-
def find_elements_by_class_chain(self, class_chain_string):
77+
def find_elements_by_ios_class_chain(self, class_chain_string):
7878
"""Finds elements by ios class chain string.
7979
8080
:Args:
8181
- class_chain_string - The class chain string
8282
8383
:Usage:
84-
driver.find_elements_by_class_chain('XCUIElementTypeWindow[2]/XCUIElementTypeAny[-2]')
84+
driver.find_elements_by_ios_class_chain('XCUIElementTypeWindow[2]/XCUIElementTypeAny[-2]')
8585
"""
8686
return self.find_elements(by=By.IOS_CLASS_CHAIN, value=class_chain_string)
8787

test/functional/ios/desired_capabilities.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121

2222
def get_desired_capabilities(app):
2323
desired_caps = {
24-
'deviceName': 'iPhone 5s',
24+
'deviceName': 'iPhone 6s',
2525
'platformName': 'iOS',
26-
'platformVersion': '10.2',
26+
'platformVersion': '10.3',
2727
'app': PATH('../../apps/' + app),
2828
'automationName': 'XCUITest',
2929
'allowTouchIdEnroll': True
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env python
2+
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
import unittest
16+
17+
from appium import webdriver
18+
import desired_capabilities
19+
20+
class FindByIOClassChainTests(unittest.TestCase):
21+
@classmethod
22+
def setUpClass(self):
23+
desired_caps = desired_capabilities.get_desired_capabilities('UICatalog.app.zip')
24+
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
25+
26+
@classmethod
27+
def tearDownClass(self):
28+
self.driver.quit()
29+
30+
def test_find_element_by_path(self):
31+
el = self.driver.find_element_by_ios_class_chain('XCUIElementTypeWindow/*/*/XCUIElementTypeStaticText')
32+
self.assertEqual('UICatalog', el.get_attribute('name'))
33+
34+
def test_find_multiple_elements_by_path(self):
35+
el = self.driver.find_elements_by_ios_class_chain('XCUIElementTypeWindow/*/*')
36+
self.assertEqual(len(el), 2)
37+
self.assertEqual('UICatalog', el[0].get_attribute('name'))
38+
self.assertEqual(None, el[1].get_attribute('name'))
39+
40+
if __name__ == "__main__":
41+
suite = unittest.TestLoader().loadTestsFromTestCase(FindByIOClassChainTests)
42+
unittest.TextTestRunner(verbosity=2).run(suite)

0 commit comments

Comments
 (0)