Appium基础篇7-元素定位之by_android_uiautomator
2017-09-09 23:13
621 查看
这篇开始陆续介绍各种元素定位方式,如果学习过Selenium的朋友,就很清楚Selenium有八种方式支持元素定位。其实在appium也有多中方式支持元素定位,有些定位方法是共有的,有些定位方式只能在Android,有些定位方法只能在iOS上,当然本系列不讨论iOS的任何东西,只关注安卓。
1.看下面这个图, 如何定位
问题描述:
用UI automator viewer方法,推荐、热点、小说,三个tab都是采用同一个id,所以,这三个元素就不同采用id来定位。之前看过一些相关文档,说text=‘推荐’,这里text相当于selenium中的find_element_by_name,OK,那么我就用by name,结果报错:Locator Strategy 'name' is not supported
for this session。查 阅资料,才发现appium在某一个新版本后就不支 持by name的定位方法,而是by_android_uiautomator方式,具体解决方案参考:https://stackoverflow.com/questions/37487485/selenium-invalid-selector-exception-locator-startegy-name-is-not-supported-f
2.解决办法
import os
import time
from appium import webdriver
apk_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) # 获取当前项目的根路径
desired_caps ={}
desired_caps['platformName'] = 'Android' #设备系统
desired_caps['platformVersion'] = '6.0.1' #设备系统版本
desired_caps['deviceName'] = 'KIW-AL10' #设备名称
# 测试apk包的路径
desired_caps['app'] = apk_path + '\\app\\shoujibaidu.apk'
# 不需要每次都安装apk
desired_caps['noReset'] = True
# 应用程序的包名
desired_caps['appPackage'] = 'com.baidu.searchbox'
desired_caps['appActivity'] = 'com.baidu.searchbox.SplashActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#启动app
time.sleep(5) #app启动后等待5秒,方便元素加载完成
# 根据元素id来定位
# 点击“热点”频道
#hot = driver.find_element_by_id('com.baidu.searchbox:id/tab_indi_title')
hot = driver.find_element_by_android_uiautomator("text(\"热点\")")
hot.click()
# 点击“推荐”频道
rec = driver.find_element_by_android_uiautomator("text(\"推荐\")")
rec.click()
driver.quit()
测试结果,运行成功,当我们遇到上面那种报错,就换成这种元素定位方式。
1.看下面这个图, 如何定位
问题描述:
用UI automator viewer方法,推荐、热点、小说,三个tab都是采用同一个id,所以,这三个元素就不同采用id来定位。之前看过一些相关文档,说text=‘推荐’,这里text相当于selenium中的find_element_by_name,OK,那么我就用by name,结果报错:Locator Strategy 'name' is not supported
for this session。查 阅资料,才发现appium在某一个新版本后就不支 持by name的定位方法,而是by_android_uiautomator方式,具体解决方案参考:https://stackoverflow.com/questions/37487485/selenium-invalid-selector-exception-locator-startegy-name-is-not-supported-f
2.解决办法
import os
import time
from appium import webdriver
apk_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) # 获取当前项目的根路径
desired_caps ={}
desired_caps['platformName'] = 'Android' #设备系统
desired_caps['platformVersion'] = '6.0.1' #设备系统版本
desired_caps['deviceName'] = 'KIW-AL10' #设备名称
# 测试apk包的路径
desired_caps['app'] = apk_path + '\\app\\shoujibaidu.apk'
# 不需要每次都安装apk
desired_caps['noReset'] = True
# 应用程序的包名
desired_caps['appPackage'] = 'com.baidu.searchbox'
desired_caps['appActivity'] = 'com.baidu.searchbox.SplashActivity'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)#启动app
time.sleep(5) #app启动后等待5秒,方便元素加载完成
# 根据元素id来定位
# 点击“热点”频道
#hot = driver.find_element_by_id('com.baidu.searchbox:id/tab_indi_title')
hot = driver.find_element_by_android_uiautomator("text(\"热点\")")
hot.click()
# 点击“推荐”频道
rec = driver.find_element_by_android_uiautomator("text(\"推荐\")")
rec.click()
driver.quit()
测试结果,运行成功,当我们遇到上面那种报错,就换成这种元素定位方式。
相关文章推荐
- appium 使用findElementByAndroidUIAutomator 定位元素示例
- Appium基础篇8-元素定位之by_class_name
- Appium基础篇8-元素定位之by_class_name
- Appium Android 元素定位方法 原生+H5
- UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
- appium 自动化:Android版本7.0以上定位不到元素,解决办法
- android自动化:Uiautomator定位元素小利器
- Appium for Android元素定位方法
- Android自动化-使用interface实现by定位、元素基本操作
- UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
- 【转】UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
- Android自动化-使用interface实现by定位、元素基本操作
- 【appium】根据UIAutomator定位元素等等资料
- Appium-Android元素定位方式
- Appium基础篇9-元素定位之by_xpath
- Appium for Android元素定位方法
- Appium基础篇6-抓元素工具之Android Device Monitor
- Appium基础篇10-元素定位之by_accessibility_id
- UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)
- UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)