Appium XCUITest中ACCESSIBILITY_ID本质探究:为何源码无却可定位元素?
Appium XCUITest中ACCESSIBILITY_ID的本质是什么?
我一直有个疑问:在Appium XCUITest里,ACCESSIBILITY_ID的本质到底是什么?它并没有出现在页面源码里,但却能成功定位元素,这让我非常困惑,以下是我的观察和猜想:
Swift代码
项目中的Swift代码设置了元素的自动化标识符:
.automationIdentifier(.developer, .toggle, .custom("Notification Permission"))
页面源码
从页面源码能看到,有程序把Swift代码里的属性拼接成了元素的name属性,目的应该是让这个值保持唯一:
<XCUIElementTypeStaticText name="developer_toggle_custom_notificationpermission" value="Push Notification Permission" label="Push Notification Permission" ...
Appium检查器
Appium检查器显示的信息和页面源码完全一致,没有任何和“accessibility id”相关的内容。
元素定位测试
让我意外的是,用ACCESSIBILITY_ID居然能成功定位这个元素:
d.find_element(AppiumBy.ACCESSIBILITY_ID, 'developer_toggle_custom_notificationpermission') <appium.webdriver.webelement.WebElement (session="48177c66-2837-4b66-9bd9-6e8bab1ff77b", element="E6000000-0000-0000-AE9F-000000000000")>
我的猜想
我认为ACCESSIBILITY_ID并不是像name、size、visible这类硬属性,而是一种软属性。背后应该存在一套判定规则,比如当页面源码中元素的name存在且唯一时,就会被当作该元素的ACCESSIBILITY_ID来使用。希望Appium的开发者能给出权威的解答,解开这个疑惑。
内容的提问来源于stack exchange,提问作者jwallis
相关产品推荐
相关产品推荐

