App自动化测试笔记(四):UIAutomatorViewer与元素定位API

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,里面有各种测试开发资料和技术可以一起交流哦。

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值