既然已经开始了appium的学习,那么当然少不了元素定位,这里我会持续更新在实际使用过程中定位遇到的问题与解决办法,共勉
我根据手机自带的计算器来解释
一:通过id定位
通过工具获取到按钮的 resource-id
driver.find_element_by_id('resource-id')
实例: driver.find_element_by_id(' com.android.bbkcalculator:id/clear')
二:通过class定位
通过工具获取到按钮的class
driver.find_element_by_class_name('class')
实例: driver.find_element_by_class_name(' android.widget.ImageButton ')
三:通过text定位(这个没有text我就随便举一个例子了)
appium1.5及之后的版本废弃了name属性(如name=百度一下,需要使用uiautomator的定位方式,使用text的内容)
driver.find_element_by_android_uiautomator("text(\中文\)")
实例:driver.find_element_by_android_uiautomator ("text(\"百度一下\")")
备注:需要确认这个中文是当前页面唯一值,否则还是定位不到,注意写法,不是直接把中文复制进去
四:通过xpath定位
driver.find_element_by_xpath("xpath内容 ")
实例:driver.find_element_by_xpath("//android.widget.FrameLayout/android.widget.ImageButton[4]")
以下方式暂时没有用到,如果有问题以后会更改,欢迎大家留言指正
五:通过accessibility_id
在UI Automator Viewer界面上并没有找到这个字段,这个对应的字段是content-desc
driver.find_element_by_accessibility_id("accessibility_id")
没有找到实例,要是自己写自动化的APP碰到了,可以用用
一、通过css_selector定位(webview)
只适用于webview的html页面,继承自webdriver,与pc版本的UI测试一致
driver.find_element_by_css_selector()
二、通过link_text定位(webview)
只适用于webview容器中的html页面,继承自webdriver,与pc版本的UI测试一致
driver.find_element_by_link_text()
三、通过name定位
只适用于webview容器中的html页面,继承自webdriver,与pc版本的UI测试一致
driver.find_element_by_name()
欢迎关注微信公众号: