软件测试/测试开发丨App自动化—CSS 定位与原生定位
点此获取更多相关资料
本文为霍格沃兹测试开发学社学员学习笔记分享
原文链接:https://ceshiren.com/t/topic/27684
一、原生定位
- 元素属性定位
- 组合定位
# ID 定位
driver.find_element_by_android_uiautomator('
new UiSelector().resourceId("<element-ID>")')
# 组合定位
driver.find_element_by_android_uiautomator('
new UiSelector().resourceId("com.xueqiu.android:id/tab_name").
text("我的")')
二、css selector 定位
- Android: Appium Server 版本 >= 1.19.0
- iOS:Appium Server>= 1.21.0
代码:
driver.find_element(AppiumBy.CSS_SELECTOR,
"#com.xueqiu.android:id/tv_search")
解析前:
{"using":"css selector",
"value":"#com.xueqiu.android:id/tv_search"}
解析后:
{"strategy":"-android uiautomator",
"selector":"new UiSelector().resourceId
("com.xueqiu.android:id/tv_search")",...}
2.1、css selector 用法
# 通过 id
elementById("someResourceID")`
-> `elementsByCss("#someResourceID")
# 通过 class
elementsByClassName("android.widget.TextView")`
-> `elementsByCss("android.widget.TextView")
# 通过 accessibility id
elementsByAccessibilityId("Some Content Description")`
-> `elementsByCss('*[description="Some Content Description"]')
# 通过 xpath
elementsByXpath("//android.widget.TextView[@description='Accessibility']")`
-> `elementsByCss("android.widget.TextView[description='Accessibility']")
2.2、示例
- 打开【雪球】应用首页
- 点击搜索框
- 向搜索框输入:alibaba
- 判断【阿里巴巴】可见
def test_search1(self):
# 点击搜索框
element = self.driver.find_element(
AppiumBy.CSS_SELECTOR,"#com.xueqiu.android:id/tv_search")
element.click()
# 向搜索框输入:alibaba
self.driver.find_element(AppiumBy.CSS_SELECTOR,
"#com.xueqiu.android:id/search_input_text").
send_keys("alibaba")
alibaba_element = self.driver.find_element(
AppiumBy.CSS_SELECTOR, "*[text='阿里巴巴']")
displayed = alibaba_element.get_attribute("displayed")
print(displayed)
# 判断【阿里巴巴】可见
assert displayed == "true"
print(f"结束时间:{self.get_time()}")
2.3、iOS css selector 定位
- Appium Server 版本>=1.21.0
- 官网:Release v1.21.0 · appium/appium · GitHub
三、总结
- Appium Server 版本>=1.21.0
- css selector 会转化为 Android/iOS 原生定位的定位策略
- Android 转为 Android Uiautomator 定位方式
- iOS 转为 class chain 定位方式