appium之元素定位(uiautomatorviewer)

阳光穿透心脏的1/2处 2023-06-08 06:09 103阅读 0赞

本文使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的操作。

环境

Java : 8

appium : 1.14.2

Android :9.0 (Genymotion模拟器)

遇到的问题

uiautomatorviewer 无法定位页面元素

运行uiautomator.bat之后报错

  1. Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!

针对问题讨论的地址:https://testerhome.com/topics/1988

我的解决方案

因为我用的Genymotion模拟器,我选择降低Android的版本;如果是真机则安装uiautomator2 也能解决。

安装uiautomator2可以使用pip安装(必须有Python环境)

具体用法

  1. # coding=utf-8
  2. from appium import webdriver
  3. import time
  4. # 初始化appium
  5. def init_caps():
  6. desired_caps = {
  7. #自动化测试服务,如果出现界面跳转后定位不到元素的情况,可尝试改成uiautomator2或Selendroid
  8. #'automationName': 'uiautomator2'
  9. #系统类型 Android|IOS
  10. 'platformName': 'Android',
  11. #设备名称 备注:如果您使用的模拟器,就是模拟器中虚拟机的名称
  12. 'deviceName': 'Samsung Galaxy S9',
  13. #系统版本
  14. 'platformVersion': '9.0',
  15. #指向模拟器的IP端口
  16. 'udid': '192.168.34.xx:5555',
  17. # apk包名
  18. 'appPackage': 'com.taobao.taobao',
  19. # apk的launcherActivity
  20. 'appActivity': 'com.taobao.tao.welcome.Welcome',
  21. #等待超时,服务端没接收到命令将关闭appium
  22. 'newCommandTimeout': '180',
  23. #等待元素出现超时时间
  24. 'implicitlyWait': '30'
  25. }
  26. return webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
  27. ############################### 获取app的应用权限
  28. def get_apks(driver):
  29. # 点击 "去授权"
  30. driver.find_element_by_android_uiautomator('text(\"去授权\")').click()
  31. # 休眠2秒等待页面加载完成
  32. time.sleep(2)
  33. for i in range(1,6):
  34. # 点击 "允许"
  35. driver.find_element_by_android_uiautomator('text(\"允许\")').click()
  36. # 方法的入口
  37. if __name__ == "__main__":
  38. driver = init_caps()
  39. # 休眠五秒等待页面加载完成
  40. time.sleep(5)
  41. get_apks(driver)
  42. # 休眠10秒等待页面加载完成
  43. time.sleep(10)
  44. # 退出
  45. driver.quit()

参考地址:Appium+python自动化4-元素定位uiautomatorviewer

发表评论

表情:
评论列表 (有 0 条评论,103人围观)

还没有评论,来说两句吧...

相关阅读

    相关 appium元素定位(12)

    自动化测试来说,核心技能就是对象的定位。不管是 web 页面上的一个 按钮或输入框,还是移动 app 上的一个按钮或输框,我们要想对其进行点击或输入操作,前提是要先找到这

    相关 Appium定位

    ID Android Android的resource-id 对应ID定位方式,可能存在重复的情况,可以通过下标的方式来获取需要的元素。(从0开始查找dom树种的同名res