当前位置:   article > 正文

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

ui automator viewer

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,最后返回
代码:

  1. from appium import webdriver
  2. import time
  3. desired_caps = dict()
  4. desired_caps['platformName'] = 'Android'
  5. desired_caps['platformVersion'] = '5.1'
  6. desired_caps['deviceName'] = '192.168.56.101:5555'
  7. desired_caps['appPackage'] = 'com.android.settings'
  8. desired_caps['appActivity'] = '.Settings'
  9. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  10. # time.sleep(10)
  11. driver.find_element_by_id("com.android.settings:id/search").click()
  12. time.sleep(10)
  13. driver.find_element_by_class_name("android.widget.EditText").send_keys("hello")
  14. time.sleep(10)
  15. driver.find_element_by_xpath("//*[@content-desc = '收起']").click()
  16. time.sleep(5)
  17. 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 的形式,获取所有包含 ”设“ 的元素,并打印其文字内容
代码,并进入退出

代码:

  1. from appium import webdriver
  2. import time
  3. desired_caps = dict()
  4. desired_caps['platformName'] = 'Android'
  5. desired_caps['platformVersion'] = '5.1'
  6. desired_caps['deviceName'] = '192.168.56.101:5555'
  7. desired_caps['appPackage'] = 'com.android.settings'
  8. desired_caps['appActivity'] = '.Settings'
  9. driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  10. # 定位一组元素
  11. # 使用id定位一组元素
  12. # eles = driver.find_elements_by_id("com.android.settings:id/title")
  13. # i = []
  14. # for ele in eles:
  15. # print(ele.text)
  16. # i.append(ele)
  17. # i[1].click()
  18. # driver.find_element_by_xpath("//*[@content-desc = '向上导航']").click()
  19. # 使用class定位一组元素
  20. # eles = driver.find_elements_by_class_name("android.widget.TextView")
  21. # i = []
  22. # for ele in eles:
  23. # print(ele.text)
  24. # i.append(ele)
  25. # i[4].click()
  26. # driver.find_element_by_xpath("//*[@content-desc = '向上导航']").click()
  27. # 使用xpath定位一组元素
  28. eles = driver.find_elements_by_xpath("//*[contains(@text , '示')]")
  29. i = []
  30. for ele in eles:
  31. print(ele.text)
  32. i.append(ele)
  33. i[1].click()
  34. driver.find_element_by_xpath("//*[@content-desc = '向上导航']").click()
  35. time.sleep(5)
  36. driver.quit()

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/602322
推荐阅读
相关标签
  

闽ICP备14008679号