UIAutomatorViewer
1、应用场景
定位元素的时候必须根据元素的相关特征来进行定位,而 UIAutomatorViewer 就是用来获取元素特征的。
如何使用UIAutomatorViewer
1、保证想要查看的元素在当前的频幕上
2、打开UIAutomatorViewer工具
3、点击左上角左数第二个按钮
4、点击想要获取特征的元素
5、查看工具右下角相关的特征信息
使用UIAutomatorViewer注意点
1、命令行窗口不要关闭
2、如果UIAutomatorViewer闪退
更换jdk为1.8以上
3、如果点击左上角左数第二个按钮时报错
重启adb
先退出adb进程:adb kill-server
再开启adb进程:adb start-server
2、元素定位操作api
定位一个元素
1、通过id定位一个元素
id_value:元素的resource-id的属性值
driver.find_element_by_id(id_value)
2、通过class_name定位一个元素
class_name:元素的class的属性值
driver.find_element_by_id(class_name)
3、通过xpath定位一个元素
xpath:定位元素的xpath表达式
格式://*[@元素 = '元素值']
driver.find_element_by_id(xpath)
例子:进入设置界面,点击搜索,输入hello,最后返回
代码:
from appium import webdriver
import time
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# time.sleep(10)
driver.find_element_by_id("com.android.settings:id/search").click()
time.sleep(10)
driver.find_element_by_class_name("android.widget.EditText").send_keys("hello")
time.sleep(10)
driver.find_element_by_xpath("//*[@content-desc = '收起']").click()
time.sleep(5)
driver.quit()
3、定位一组元素
1、通过id定位一组元素
id_value:元素的resource-id的属性值
driver.find_elements_by_id(id_value)
2、通过class_name定位一组元素
class_name:元素的class的属性值
driver.find_elements_by_id(class_name)
3、通过xpath定位一组元素
xpath:定位元素的xpath表达式
格式://*[@元素 = '元素值']
driver.find_elements_by_id(xpath)
概念:如果通过一组的方式进行定位,获取的返回值不再是一个元素。而是一个列表,列表中装着所有符合这个特征的元素
4、定位元素注意点
如果find_element_by_xxx("xxx")传入了一个没有的条件,会报错,NoSuchElementException
如果find_elements_by_xxx("xxx")传入了一个没有的条件,不会报错,返回一个空列表
示例:
通过 id 的形式,获取所有 resource-id 为 ”com.android.settings:id/title“ 的元素,并打印其文字内容,并进入退出
通过 class_name 的形式,获取所有class 为 ”android.widget.TextView“ 的元素,并打印其文字内容,并进入退出
通过 xpath 的形式,获取所有包含 ”设“ 的元素,并打印其文字内容
代码,并进入退出
代码:
from appium import webdriver
import time
desired_caps = dict()
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.56.101:5555'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 定位一组元素
# 使用id定位一组元素
# eles = driver.find_elements_by_id("com.android.settings:id/title")
# i = []
# for ele in eles:
# print(ele.text)
# i.append(ele)
# i[1].click()
# driver.find_element_by_xpath("//*[@content-desc = '向上导航']").click()
# 使用class定位一组元素
# eles = driver.find_elements_by_class_name("android.widget.TextView")
# i = []
# for ele in eles:
# print(ele.text)
# i.append(ele)
# i[4].click()
# driver.find_element_by_xpath("//*[@content-desc = '向上导航']").click()
# 使用xpath定位一组元素
eles = driver.find_elements_by_xpath("//*[contains(@text , '示')]")
i = []
for ele in eles:
print(ele.text)
i.append(ele)
i[1].click()
driver.find_element_by_xpath("//*[@content-desc = '向上导航']").click()
time.sleep(5)
driver.quit()
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。