app、appium UI自动化之高级定位技巧
1.xpath定位进阶
层级定位
- 父节点定位子节点
- 子节点定位父节点
- 子节点定位兄弟节点
- 爷爷节点定位孙子节点
具体参考该网站:
1.打开雪球app
2.点击搜索输入框
3.想搜索框中输入“aliababa”
4.在搜索结果里面查找,阿里巴巴【香港股票】的价格
def test_price(self):
self.driver.find_element_by_id('com.xueqiu.android:id/tv_search').click()
self.driver.find_element_by_id('com.xueqiu.android:id/search_input_text').send_keys('阿里巴巴')
# 这里必须要添加双引号,因为里面有单引号
self.driver.find_element_by_xpath("//*[@resource-id='com.xueqiu.android:id/name' and @text='阿里巴巴']").click()
lacator = (MobileBy.XPATH, "//*[@text=09988]/../../..//*[@resource-id='com.xueqiu.android:id/current_price']")
# 显式等待
# WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(lacator))
ele = WebDriverWait(self.driver, 10).until(lambda x: x.find_element(*lacator))
# ele = self.driver.find_element(*lacator)
print(ele.text)
current_price = float(ele.text)
# current_price = self.driver.find_element_by_xpath(
# "//*[@text=09988]/../../..//*[@resource-id='com.xueqiu.android:id/current_price']").text
# 这里是float类型不要用int,因为是价格
assert float(current_price) > 150
2.uiautomator定位表达式
它在appium里集成了android和ios的工作引擎
因为缺点较明显,所以平时工作中也不怎么使用该方式 , 可以看出是以字符串的形式定位的,IDE没有提示,容易出错,但是使用此方法速度极佳
定位方式:可以实现模糊匹配
组合定位
父子关系定位
由于这个比较常用,但是又比较长,将代码贴出来可以进行复制粘贴使用
'new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("雪盈福利").instance(0))'
雪球app登录,以及滑动点击关注案例:
def test_login(self):
self.driver.find_element_by_android_uiautomator('new UiSelector().text("我的")').click()
self.driver.find_element_by_android_uiautomator('new UiSelector().text("登录雪球")').click()
def test_scroll(self):
self.driver.find_element_by_android_uiautomator('new UiSelector().text("关注")').click()
self.driver.find_element_by_android_uiautomator(
'new UiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text("雪盈福利").instance(0))').click()
3.滑动定位
浙公网安备 33010602011771号