如何使用Python版Appium查找数组中元素的同级元素?
问题解决:查找Appium中元素的同级元素
你通过以下代码获取了按钮数组:
checkboxes = self.driver.find_elements(AppiumBy.XPATH, '//XCUIElementTypeButton[@name="Square"]')
尝试用following-sibling查找第一个元素的同级文本时失败,报错NoSuchElementError,核心原因是XCUITest驱动对XPath轴的支持存在兼容性问题,以下是几种可行的解决方法:
方法1:通过父节点定位子元素
修改相对XPath,先回到父节点再选取目标文本元素,这种方式更适配XCUITest的解析逻辑:
if checkboxes: # 先确保数组非空 siblingElement = checkboxes[0].find_element(AppiumBy.XPATH, '../XCUIElementTypeStaticText[1]')
方法2:直接使用全局关联XPath
跳过元素数组,直接在全局XPath中定位第一个按钮的同级文本:
siblingElement = self.driver.find_element(AppiumBy.XPATH, '//XCUIElementTypeButton[@name="Square"][1]/following-sibling::XCUIElementTypeStaticText[1]')
方法3:利用布局位置匹配
观察UI结构,每个按钮和对应文本的y坐标一致,可通过位置关联:
if checkboxes: first_checkbox = checkboxes[0] target_y = first_checkbox.location['y'] siblingElement = self.driver.find_element(AppiumBy.XPATH, f'//XCUIElementTypeStaticText[@y="{target_y}"]')
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

