appium+python 微信小程序的自动化
版权声明:本文为博主原创文章,遵循 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
-
C:\Users\admin>adb shell
-
HWBND- H:/ $ dumpsys activity top | grep ACTIVITY
-
ACTIVITY com.tencent.mm/.plugin.appbrand.ui.AppBrandUI d0f2ff4 pid=7332
此时可以看到pid
然后输入:ps 7332
-
HWBND-H:/ $ ps 7332
-
USER PID PPID VSIZE RSS WCHAN PC NAME
-
u0_a119 7332 495 2706272 283720 0 0000000000 S com.tencent.mm:appbrand0
-
HWBND-H:/ $
3.com.tencent.mm:appbrand0 这个就是我们要找的东西
正式开始:
1. 下拉为微信聊天页面,出现摩拜小程序(显示最近使用的哦,你的可能是别的小程序)
怎样实现下拉滑动呢?使用driver的swipe方法,我这里用的是我封装好的滑动方法
-
#向下滑动
-
def swipe_down(driver,t=500,n=1):
-
s = driver.get_window_size()
-
x1 = s[ 'width'] * 0.5 # x坐标
-
y1 = s[ 'height'] * 0.25 # 起点y坐标
-
y2 = s[ 'height'] * 0.75 # 终点y坐标
-
for i in range(n):
-
driver.swipe(x1,y1,x1,y2,t)
2. 点击摩拜小程序图标
-
# 点击膜拜单车
-
driver.find_element_by_id( 'com.tencent.mm:id/ij').click()
-
time.sleep( 4)
-
print(driver.contexts)
3.点击右下角的小头像
由于这个页面是view.view属性所以不好用常用定位方法定位,只好用坐标来定位了!
-
# tap触摸右下角那个人头坐标
-
driver.tap([( 972, 1613), (1034, 1622)], 1000) #tap的点必须是tuple类型,一个点是一个tuple
-
time.sleep( 5)
-
print( '进入我的页面')
4.点击钱包,这里也是利用坐标定位
-
# 点击我的钱包
-
driver.tap([( 267, 907)], 500)
-
time.sleep( 4)
-
print( '进入钱包')
5.点击余额,这里利用xpath定位
-
# 点击余额
-
driver.find_element_by_xpath( '//*[@text="余额"]').click()
-
time.sleep( 4)
6.点击充值,利用xpath定位
-
# 点击充值
-
driver.find_element_by_xpath( '//*[@text="充值"]').click()
-
time.sleep( 2)
我就不充值了,因为太穷,这里基本就是一个进入小程序完成充值过程的一个自动化操作了,下面是完整的代码:
-
#coding:utf-8
-
from appium import webdriver
-
import time,os
-
from common.My_swipe import swipe_down
-
-
-
desired_caps = {
-
'platformName': 'Android',
-
'platformVersion': '8.0',
-
'deviceName': '740dc3d1',
-
'appPackage': 'com.tencent.mm',
-
'appActivity': '.ui.LauncherUI',
-
'automationName': 'Uiautomator2',
-
# 'unicodeKeyboard': True,
-
# 'resetKeyboard': True,
-
'noReset': True,
-
'chromeOptions': {'androidProcess': 'com.tencent.mm:appbrand0'}
-
}
-
driver = webdriver.Remote( r'http://127.0.0.1:4723/wd/hub', desired_caps)
-
time.sleep( 3)
-
# 向下滑动
-
swipe_down(driver)
-
time.sleep( 2)
-
-
# 点击膜拜单车
-
driver.find_element_by_id( 'com.tencent.mm:id/ij').click()
-
time.sleep( 4)
-
print(driver.contexts)
-
-
# tap触摸右下角那个人头坐标
-
driver.tap([( 972, 1613), (1034, 1622)], 1000) #tap的点必须是tuple类型,一个点是一个tuple
-
time.sleep( 5)
-
print( '进入我的页面')
-
# 点击我的钱包
-
driver.tap([( 267, 907)], 500)
-
time.sleep( 4)
-
print( '进入钱包')
-
# 点击余额
-
driver.find_element_by_xpath( '//*[@text="余额"]').click()
-
time.sleep( 4)
-
-
# 点击充值
-
driver.find_element_by_xpath( '//*[@text="充值"]').click()
-
time.sleep( 2)
-
#接下来就是摩拜的充值页面了,由于我太穷充不起,所以就介绍到这里
总结:其实这里只是介绍一个小程序自动化的大概思路吧,有疑问的可以加我qq 970185127 ,未完待续.....