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.滑动定位