码哥驾到

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1846|回复: 0

Appium_Android自动化_Python3_成都购房助手_appium&xpath定位

[复制链接]

186

主题

218

帖子

1023

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1023

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2022-2-14 18:09:08 | 显示全部楼层 |阅读模式
https://blog.csdn.net/denzeleo/a ... m_relevant_index=17


  1. #!/usr/bin/env/python3
  2. # -*- coding:utf-8 -*-
  3. '''
  4. Author:leo
  5. Date&Time:2019-08-09 and 22:11
  6. FileName:20190809_咖啡小程序.py
  7. Description:...
  8. 小程序:成都购房助手
  9. 如何查看微信webview中的元素
  10. 1、手机打开【开发者模式】
  11. 2、app必须是debug模式。
  12. 3、手机通过USB连接电脑,且能够识别出来手机。
  13. 4、可以科学上网。

  14. 如何配置微信desired_caps环境参数
  15. 1、打开微信,在任意对话框中输入debugx5.qq.com。
  16. 2、点击发送成功的debugx5.qq.com,稍等片刻点击进入设置页面
  17. 3、切换到【seeting】,勾选【是否打开tbs内核】,保存退出
  18. 4、退出设置,重启微信端
  19. 5、开启谷歌浏览器的科学上网模式
  20. 6、打开chrome,地址栏输入chrome://inspect/#devices,可以看到设备介绍
  21. 7、接下来就可以轻松识别元素了,和用f12查看元素没有区别,请开始你的表演

  22. 代码实战(由于我没有安卓手机,只能用模拟器,模拟器没有网络,遂只能做到基础应用):
  23. 上面这些搞定了,在Appium里写代码就简单了,先说下关键的几个点:
  24. 1、#必须加上此句desired_caps['chromeOptions']={'androidProcess': 'com.tencent.mm:tools'}
  25.    #微信的package name=com.tencent.mm,activity=com.tencent.mm.ui.LauncherUI。
  26. 2、#可以通过下面的语句输出webview的名称
  27. contexts=driver.contexts
  28. print('contexts=',contexts)
  29. 3、#使用下面的语句切换到指定的webview里
  30. driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
  31. 4、切换到webview里面,剩下的定位方式和web一模一样,就是上面讲的元素识别方法
  32. 5、#如果想返回原生态的view,可以用下面的语句
  33. '''
  34. from appium import webdriver
  35. from time import sleep
  36. desired_caps = {
  37.     'platformName': 'Android',
  38.     'platformVersion': '5',
  39.     'deviceName': '127.0.0.1:62001',
  40.     # 'app': r'D:\TestFiles\Appium\Apk\sqauto.apk',
  41.     'appPackage': 'com.tencent.mm',
  42.     'appActivity': 'com.tencent.mm.ui.LauncherUI',
  43.     'unicodeKeyboard': True,
  44.     'resetKeyboard':True,
  45.     'noReset': True, # 初始化,True为了避免每次打开APP都提问你是否获取权限
  46.     'newCommandTimeout': 6000,
  47.     'automationName':'uiautomator2'
  48. }
  49. driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)
  50. driver.implicitly_wait(20)
  51. sleep(10)

  52. text1 = driver.contexts
  53. currentText = driver.current_context
  54. print(f"全部上下文:{text1},当前上下文:{currentText}")

  55. # 微信顶部标题栏
  56. title = driver.find_element_by_id("com.tencent.mm:id/qh")
  57. print(f"当前标题栏:{title.text}")
  58. sleep(15)

  59. # 点击搜索按钮
  60. driver.find_element_by_id("com.tencent.mm:id/qi").click()
  61. sleep(10)

  62. # 输入星巴克搜索
  63. driver.find_element_by_id("com.tencent.mm:id/li").send_keys("星巴克\n")
  64. sleep(3)
  65. driver.find_element_by_id("com.tencent.mm:id/c2h").click()
  66. sleep(10)

  67. # 网络异常打印title
  68. print(driver.find_element_by_accessibility_id("当前所在页面,搜一搜").text)
  69. sleep(5)

  70. # 返回主页
  71. driver.find_element_by_accessibility_id("返回").click()
  72. sleep(5)
  73. driver.find_element_by_accessibility_id("返回").click()
  74. sleep(5)

  75. # 初始化坐标
  76. size = driver.get_window_size()
  77. print(size)
  78. startx = size["width"]*0.5
  79. starty = size["height"]*0.2
  80. endy = size["height"]*0.8
  81. sleep(5)

  82. # 下拉显示小程序
  83. driver.swipe(startx, starty, startx, endy, 500)
  84. sleep(5)

  85. # 打印小程序名称
  86. name = driver.find_element_by_xpath("//android.widget.TextView[@text='成都购房顾问']")
  87. print("小程序名称为:%s" %(name.text))

  88. # # 微信底部菜单栏
  89. # wechat = driver.find_element_by_id("com.tencent.mm:id/b9g")
  90. # print(wechat.text)

  91. input("Press anykey to quit...")
  92. driver.quit()
复制代码
全部上下文:['NATIVE_APP'],当前上下文:NATIVE_APP
当前标题栏:微信

当前尺寸:{'width': 1080, 'height': 1920}
小程序名称:成都购房顾问
菜单:微信,通讯录,发现,我

Process finished with exit code 0
————————————————


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|码哥驾到 ( 京ICP备15044914号-1 )

GMT+8, 2022-7-1 19:27 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表