appium+python自动化56-微信小程序自动化(摩拜为例)
前言
最近微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化测试?
本篇以摩拜小程序为例,介绍如何定位小程序里面的元素
运行环境:
android 7.0
appium v1.7.1
webview进程
1.小程序和微信公众号还不太一样,基本思路差不多,先配置:chromeOptions
'chromeOptions': {'androidProcess': 'com.tencent.mm:appbrand0'}
2.androidProcess进程可以通过adb shell去查看,先点开摩拜小程序,然后进adb shell
C:\Users\admin>adb shell
HWBND-H:/ $ dumpsys activity top | grep ACTIVITY
ACTIVITY com.tencent.mm/.plugin.appbrand.ui.AppBrandUI d0f2ff4 pid=9104
HWBND-H:/ $ ps 9104
USER PID PPID VSIZE RSS WCHAN PC NAME
u0_a119 9104 495 2706272 283720 0 0000000000 S com.tencent.mm:appbrand0
HWBND-H:/ $

3.com.tencent.mm:appbrand0 这个就是我们要找到的了
摩拜小程序
1.先点开微信首页,下滑页面,出现小程序菜单后点击‘摩拜’

2.代码实现:
def swipeDown(driver, t=500, n=1):
'''向下滑动屏幕'''
l = driver.get_window_size()
x1 = l['width'] * 0.5 # x坐标
y1 = l['height'] * 0.25 # 起始y坐标
y2 = l['height'] * 0.75 # 终点y坐标
for i in range(n):
driver.swipe(x1, y1, x1, y2,t)
# 向下滑动
swipeDown(driver)
小程序操作
1.进入小程序后点右下角的头像,这里可以通过坐标去点击
由于每个手机分辨率不一样,这里可以直接去计算下图标在屏幕的比例

2.接着点击“发红包赚赏金”

# 注意,这里是不需要切换的,别踩坑了!!!!!!
# driver.switch_to.context('WEBVIEW_com.tencent.mm:tools') # 不要加这行
time.sleep(3)
# tap触摸右下角那个菜单坐标 [873,1654], [1080,1861]
driver.tap([(873, 1654), (1080, 1861)], 500)
# 点发红包赚赏金
driver.find_element_by_accessibility_id("发红包赚赏金").click()
参考代码
# coding:utf-8
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time
# 作者:上海-悠悠 QQ交流群:512200893
desired_caps = {
'platformName': 'Android',
'platformVersion': '7.0',
'deviceName': 'A5RNW18316011440',
'appPackage': 'com.tencent.mm',
'appActivity': '.ui.LauncherUI',
'automationName': 'Appium',
# 'unicodeKeyboard': True,
# 'resetKeyboard': True,
'noReset': True,
'chromeOptions': {'androidProcess': 'com.tencent.mm:appbrand0'}
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(10)
def swipeDown(driver, t=500, n=1):
'''向下滑动屏幕'''
l = driver.get_window_size()
x1 = l['width'] * 0.5 # x坐标
y1 = l['height'] * 0.25 # 起始y坐标
y2 = l['height'] * 0.75 # 终点y坐标
for i in range(n):
driver.swipe(x1, y1, x1, y2,t)
# 向下滑动
swipeDown(driver)
time.sleep(2)
# 点开小程序
driver.find_elements_by_id("com.tencent.mm:id/r9")[0].click()
time.sleep(4)
print(driver.contexts)
# 注意,这里是不需要切换的,别踩坑了!!!!!!
# driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
time.sleep(3)
# tap触摸右下角那个菜单坐标 [873,1654], [1080,1861]
driver.tap([(873, 1654), (1080, 1861)], 500)
# 点发红包赚赏金
driver.find_element_by_accessibility_id("发红包赚赏金").click()
上海-悠悠 QQ交流群:330467341
appium+python自动化56-微信小程序自动化(摩拜为例)的更多相关文章
- python 微信小程序自动化
微信小程序自动化 https://www.cnblogs.com/yyoba/python27 - FautoTesthttps://www.cnblogs.com/yyoba/p/9973731.h ...
- Python flask构建微信小程序订餐系统
第1章 <Python Flask构建微信小程序订餐系统>课程简介 本章内容会带领大家通览整体架构,功能模块,及学习建议.让大家在一个清晰的开发思路下,进行后续的学习.同时领着大家登陆ht ...
- Python flask构建微信小程序订餐系统☝☝☝
Python flask构建微信小程序订餐系统☝☝☝ 一.Flask MVC框架结构 1.1实际项目结构 1.2application.py 项目配置文件 Flask之flask-script模块使 ...
- Python flask构建微信小程序订餐系统✍✍✍
Python flask构建微信小程序订餐系统 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题, ...
- python爬取微信小程序(实战篇)
python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...
- Python爬取微信小程序(Charles)
Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...
- 微信小程序自动化,记录趟过的坑!
项目思想:关键字+数据驱动混合测试 基于Android-微信小程序自动化的关键是:webview的切换 对于微信App来说如何从NATIVE切换到webview的过程 测试版本信息 1.微信版本:7. ...
- 微信小程序自动化
解析微信小程序 注意:若上面方法不行就使用下面的 小程序对应的chrome驱动版本包,2.4版本的
- python flask豆瓣微信小程序案例
项目步骤 定义首页模板index.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- 在微信小程序中使用 echarts 图片-例 折线图
首先进入echarts官方[https://echarts.apache.org/handbook/zh/get-started/].这边只需要在小程序中简单应用一下echarts折线图 所以不需要把 ...
随机推荐
- js内置对象-Object
1)Object构造函数的方法 返回指定对象的原型对象 Object.getPrototypeOf(mymap); /*{featureStyle: {…}, selfLayersCount: nul ...
- (网页)html中页面传递参数不用cookie不用缓存,js方法搞定
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- gitolite的部署
gitolite服务部署: 1,在git服务器端安装git并创建git用户. yum install -y git useradd git 2,生成gitolite的管理账户,这个账户也可以在git服 ...
- MyBatis笔记----MyBatis 入门经典的两个例子: XML 定义与注解定义
----致敬MyBatis官方开放文档让大家翻译,不用看书直接看文档就行了,mybatis的中文文档还需要完备的地方 简介 什么是 MyBatis ? MyBatis 是支持定制化 SQL.存储过程以 ...
- 通过http上下文判断是否是Ajax请求
using System; namespace System.Web.Mvc { /// <summary>Represents a class that extends the < ...
- python多线程与多进程--存活主机ping扫描以及爬取股票价格
python多线程与多进程 多线程: 案例:扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活) 普通版本: #扫描给定网络中存活的主机(通过ping来测试,有响应则说明主机存活)im ...
- IO测试工具之fio详解
目前主流的第三方IO测试工具有fio.iometer和Orion,这三种工具各有千秋. fio在Linux系统下使用比较方便,iometer在window系统下使用比较方便,Orion是oracle的 ...
- IDEA: Call Hierarchy
在日常开发中,查看某个方法.字段可能被用在哪些地方.这个是个很常见的操作. 例如,在使用Eclipse时,选择方法后,右键菜单里选择 show call hierarchy,即可查看有哪些地方调用了这 ...
- mysql 中的内置函数
一.字符串函数 select concat(name,"age is",age) from users; insert(str,x,y,insert)//将字符串x位置开始y个位 ...
- LeetCode算法题-Number of Segments in a String(Java实现)
这是悦乐书的第226次更新,第239篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第93题(顺位题号是434).计算字符串中的段数,其中段定义为非空格字符的连续序列.请注 ...