IOS元素定位对应关系

resource-id也称为id,resource-id是唯一的

元素定位

agree_continue_id = "com.baidu.searchbox:id/positive_button"

WebDriverWait(driver, 10, 1).until(EC.visibility_of_element_located((MobileBy.ID, agree_continue_id)))

driver.find_element_by_id(agree_continue_id).click(

AccessibilityId也称为content-desc

元素定位

tiku_AccessibilityId = "题库"

WebDriverWait(driver, 10, 1).until(EC.visibility_of_all_elements_located((MobileBy.ACCESSIBILITY_ID, tiku_AccessibilityId)))

driver.find_element_by_accessibility_id(tiku_AccessibilityId).click()

比如xpath中同时包含class和text两个属性

元素定位

agree_continue_xpath = "//*@class='android.widget.Button' and @text='同意并继续'"

WebDriverWait(driver, 10, 1).until(EC.visibility_of_element_located((MobileBy.XPATH, agree_continue_xpath)))

driver.find_element_by_xpath(agree_continue_xpath).click()

根据text属性为"请输入手机号"查找元素。

  1. ele = self.driver.find_element_by_android_uiautomator('new UiSelector().text("请输入手机号")')

  2. ele.send_keys("123")

5.3 textStartsWith定位

以text什么开始

driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("请输入")')

5.4 textMatches 正则匹配查找

textMatches故名思义就是通过正则的来进行查找定位,他也是通过text的属性来进行正则匹配,我们直接看代码:

ele = self.driver.find_element_by_android_uiautomator('new UiSelector().textMatches("^请输入手.*")')

ele.send_keys("123")

5.5 resourceID定位

resourceId定位和appium封装好的id定位是一样的,只是这里将写法变成了uiautomator的写法而已,看下面代码

ele = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("cn.com.open.mooc:id/et_phone_edit")')

ele.send_keys('234')

5.6 resourceIDMatches 定位

通过id进行正则匹配定位

ele = self.driver.find_element_by_android_uiautomator('new UiSelector().resourceIdMatches(".+et_phone_edit")')

ele.send_keys('234')

5.7 className定位

通过调用android uiautomator使用className进行定位

ele = self.driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")')

ele.send_keys('234')

5.8 classNameMatches定位

通过className正则匹配进行定位

ele = self.driver.find_element_by_android_uiautomator('new UiSelector().classNameMatches (".*EditText")')

ele.send_keys('234')

5.9 组合定位

#组合定位

self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.xueqiu.android:id/tab_name").text("我的")').click()

或者

组合定位,一般组合用id,class,text这三个属性会比较好一点

id+class 属性组合

id_class = 'resourceId("com.xyh.commerce:id/ll_personal").className("android.widget.LinearLayout")'

driver.find_element_by_android_uiautomator(id_class).click()

5.10 父子关系、兄弟关系定位

#父子关系定位

self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.xueqiu.android:id/title_container").childSelector(text("股票"))')

#兄弟关系定位

self.driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.xueqiu.android:id/title_container").fromParent(text("股票"))')

5.11 滚动查找

#滚动查找#滚动查找
self.driver.find_element_by_android_uiautomator('new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("查找的元素文本").instance(0));')

相关推荐
终端安全笔记1 小时前
描述文件、企业证书、MDM 不是三个名字,是三层
android·ios·智能手机
传奇开心果编程2 小时前
【SwiftUI入门练中学】第1课 从零开始
学习·ui·ios·swiftui·swift
丿Wayne7 小时前
iOS Token 刷新实战(Actor 避免并发重复刷新)
ios·swift·token·actor·swift并发
终端安全笔记1 天前
iOS 27 给了租赁一个新工具,但它只认受监督的设备
android·网络·安全·ios
大熊猫侯佩1 天前
独立 App 首发完成 iPhone Duo 展开态适配
ios·swiftui·swift
光影少年1 天前
setImmediate 和 setTimeout(0) 的区别
android·前端·react.js·ios·前端框架
2501_916008891 天前
SSE 和 gRPC 流式接口如何抓包,调试 SSE 与 gRPC 流式接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
HouWan2 天前
Flutter: MediaQuery.of(context) 为什么可能拖慢页面?
android·flutter·ios
用户38034165882972 天前
Broadcast Extension 里的 Live Activity:一次跨进程妥协
ios·音视频开发
匠测AI说2 天前
XCUITest 自动化全解:同进程白盒、XCTest 架构、自动同步机制与 iOS 端选型指南
测试工具·ios·自动化