Skip to content

Commit 01042ef

Browse files
committed
add class chain
1 parent 6f52e48 commit 01042ef

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

appium/webdriver/common/mobileby.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@
1818
class MobileBy(By):
1919
IOS_PREDICATE = '-ios predicate string'
2020
IOS_UIAUTOMATION = '-ios uiautomation'
21+
IOS_CLASS_CHAIN = '-ios class chain'
2122
ANDROID_UIAUTOMATOR = '-android uiautomator'
2223
ACCESSIBILITY_ID = 'accessibility id'

appium/webdriver/webdriver.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def __init__(self, command_executor='http://127.0.0.1:4444/wd/hub',
4444
# add new method to the `find_by_*` pantheon
4545
By.IOS_UIAUTOMATION = MobileBy.IOS_UIAUTOMATION
4646
By.IOS_PREDICATE = MobileBy.IOS_PREDICATE
47+
By.IOS_CLASS_CHAIN = MobileBy.IOS_CLASS_CHAIN
4748
By.ANDROID_UIAUTOMATOR = MobileBy.ANDROID_UIAUTOMATOR
4849
By.ACCESSIBILITY_ID = MobileBy.ACCESSIBILITY_ID
4950

@@ -121,6 +122,28 @@ def find_elements_by_ios_predicate(self, predicate_string):
121122
"""
122123
return self.find_elements(by=By.IOS_PREDICATE, value=predicate_string)
123124

125+
def find_element_by_ios_class_chain(self, class_chain_string):
126+
"""Find an element by ios class chain string.
127+
128+
:Args:
129+
- class_chain_string - The class chain string
130+
131+
:Usage:
132+
driver.find_element_by_class_chain('XCUIElementTypeWindow/XCUIElementTypeButton[3]')
133+
"""
134+
return self.find_element(by=By.IOS_CLASS_CHAIN, value=class_chain_string)
135+
136+
def find_elements_by_class_chain(self, class_chain_string):
137+
"""Finds elements by ios class chain string.
138+
139+
:Args:
140+
- class_chain_string - The class chain string
141+
142+
:Usage:
143+
driver.find_elements_by_class_chain('XCUIElementTypeWindow[2]/XCUIElementTypeAny[-2]')
144+
"""
145+
return self.find_elements(by=By.IOS_CLASS_CHAIN, value=class_chain_string)
146+
124147
def find_element_by_android_uiautomator(self, uia_string):
125148
"""Finds element by uiautomator in Android.
126149

appium/webdriver/webelement.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,28 @@ def find_elements_by_ios_predicate(self, predicate_string):
6363
"""
6464
return self.find_elements(by=By.IOS_PREDICATE, value=predicate_string)
6565

66+
def find_element_by_ios_class_chain(self, class_chain_string):
67+
"""Find an element by ios class chain string.
68+
69+
:Args:
70+
- class_chain_string - The class chain string
71+
72+
:Usage:
73+
driver.find_element_by_class_chain('XCUIElementTypeWindow/XCUIElementTypeButton[3]')
74+
"""
75+
return self.find_element(by=By.IOS_CLASS_CHAIN, value=class_chain_string)
76+
77+
def find_elements_by_class_chain(self, class_chain_string):
78+
"""Finds elements by ios class chain string.
79+
80+
:Args:
81+
- class_chain_string - The class chain string
82+
83+
:Usage:
84+
driver.find_elements_by_class_chain('XCUIElementTypeWindow[2]/XCUIElementTypeAny[-2]')
85+
"""
86+
return self.find_elements(by=By.IOS_CLASS_CHAIN, value=class_chain_string)
87+
6688
def find_element_by_android_uiautomator(self, uia_string):
6789
"""Finds element by uiautomator in Android.
6890

0 commit comments

Comments
 (0)