appium+python 微信小程序的自动化

时间:2023-03-09 17:12:47
appium+python 微信小程序的自动化

sudo kill -9 $(lsof -i:8889 -t)

mitmweb -p 8889 -s addons.py

mitmdump -q  -p 8889 -s addons.py

http://appium.io/docs/en/writing-running-appium/caps/

adb logcat -v time  | grep `adb shell ps | grep com.tencent.mm.appbrand0 | cut -c10-15`   >/home/androidlog.txt

uiautomatorviewer

!!!! WARNING: You are on OS X 10.11 El Capitan or greater, you may need to add the

!!!! WARNING:   `--unsafe-perm=true` flag when running `npm install`

!!!! WARNING:   or else it will fail.

===

安装macna问题

npm i -g macaca-ios --unsafe-perm=true

appium

appium+python 微信小程序的自动化

2019年01月08日 15:13:58 xgh1951 阅读数 1973更多
分类专栏: Appium
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

前言

最近微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化测试?
今天写一篇小程序该如何做自动化测试,如何定位,具体以膜拜为例子

webview进程

1.小程序和微信公众号还不太一样,基本思路差不多,先配置:chromeOptions

'chromeOptions': {'androidProcess': 'com.tencent.mm:appbrand0'}

2.androidProcess进程可以通过adb shell去查看,先点开摩拜小程序,然后进adb shell

进入shell后输入:dumpsys activity top | grep ACTIVITY

  1. C:\Users\admin>adb shell
  2. HWBND-H:/ $ dumpsys activity top | grep ACTIVITY
  3. ACTIVITY com.tencent.mm/.plugin.appbrand.ui.AppBrandUI d0f2ff4 pid=7332

此时可以看到pid

然后输入:ps 7332

  1. HWBND-H:/ $ ps 7332
  2. USER PID PPID VSIZE RSS WCHAN PC NAME
  3. u0_a119 7332 495 2706272 283720 0 0000000000 S com.tencent.mm:appbrand0
  4. HWBND-H:/ $

3.com.tencent.mm:appbrand0 这个就是我们要找的东西

正式开始:

1. 下拉为微信聊天页面,出现摩拜小程序(显示最近使用的哦,你的可能是别的小程序)

appium+python 微信小程序的自动化

怎样实现下拉滑动呢?使用driver的swipe方法,我这里用的是我封装好的滑动方法

  1. #向下滑动
  2. def swipe_down(driver,t=500,n=1):
  3. s = driver.get_window_size()
  4. x1 = s['width'] * 0.5 # x坐标
  5. y1 = s['height'] * 0.25 # 起点y坐标
  6. y2 = s['height'] * 0.75 # 终点y坐标
  7. for i in range(n):
  8. driver.swipe(x1,y1,x1,y2,t)

2. 点击摩拜小程序图标

  1. # 点击膜拜单车
  2. driver.find_element_by_id('com.tencent.mm:id/ij').click()
  3. time.sleep(4)
  4. print(driver.contexts)

3.点击右下角的小头像

由于这个页面是view.view属性所以不好用常用定位方法定位,只好用坐标来定位了!

appium+python 微信小程序的自动化

  1. # tap触摸右下角那个人头坐标
  2. driver.tap([(972, 1613), (1034, 1622)], 1000) #tap的点必须是tuple类型,一个点是一个tuple
  3. time.sleep(5)
  4. print('进入我的页面')

4.点击钱包,这里也是利用坐标定位

  1. # 点击我的钱包
  2. driver.tap([(267, 907)], 500)
  3. time.sleep(4)
  4. print('进入钱包')

5.点击余额,这里利用xpath定位

  1. # 点击余额
  2. driver.find_element_by_xpath('//*[@text="余额"]').click()
  3. time.sleep(4)

6.点击充值,利用xpath定位

  1. # 点击充值
  2. driver.find_element_by_xpath('//*[@text="充值"]').click()
  3. time.sleep(2)

我就不充值了,因为太穷,这里基本就是一个进入小程序完成充值过程的一个自动化操作了,下面是完整的代码:

  1. #coding:utf-8
  2. from appium import webdriver
  3. import time,os
  4. from common.My_swipe import swipe_down
  5. desired_caps = {
  6. 'platformName': 'Android',
  7. 'platformVersion': '8.0',
  8. 'deviceName': '740dc3d1',
  9. 'appPackage': 'com.tencent.mm',
  10. 'appActivity': '.ui.LauncherUI',
  11. 'automationName': 'Uiautomator2',
  12. # 'unicodeKeyboard': True,
  13. # 'resetKeyboard': True,
  14. 'noReset': True,
  15. 'chromeOptions': {'androidProcess': 'com.tencent.mm:appbrand0'}
  16. }
  17. driver = webdriver.Remote(r'http://127.0.0.1:4723/wd/hub', desired_caps)
  18. time.sleep(3)
  19. # 向下滑动
  20. swipe_down(driver)
  21. time.sleep(2)
  22. # 点击膜拜单车
  23. driver.find_element_by_id('com.tencent.mm:id/ij').click()
  24. time.sleep(4)
  25. print(driver.contexts)
  26. # tap触摸右下角那个人头坐标
  27. driver.tap([(972, 1613), (1034, 1622)], 1000) #tap的点必须是tuple类型,一个点是一个tuple
  28. time.sleep(5)
  29. print('进入我的页面')
  30. # 点击我的钱包
  31. driver.tap([(267, 907)], 500)
  32. time.sleep(4)
  33. print('进入钱包')
  34. # 点击余额
  35. driver.find_element_by_xpath('//*[@text="余额"]').click()
  36. time.sleep(4)
  37. # 点击充值
  38. driver.find_element_by_xpath('//*[@text="充值"]').click()
  39. time.sleep(2)
  40. #接下来就是摩拜的充值页面了,由于我太穷充不起,所以就介绍到这里

总结:其实这里只是介绍一个小程序自动化的大概思路吧,有疑问的可以加我qq 970185127   ,未完待续.....