python实现微信小程序的接口自动化_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:/ $

1070438-20180606144649514-36202146.png

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

摩拜小程序

1.先点开微信首页,下滑页面,出现小程序菜单后点击‘摩拜’

1070438-20180606142059359-670057787.png

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.进入小程序后点右下角的头像,这里可以通过坐标去点击

由于每个手机分辨率不一样,这里可以直接去计算下图标在屏幕的比例

1070438-20180606142336118-354208870.png

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

1070438-20180606143245247-674686643.png

# 注意,这里是不需要切换的,别踩坑了!!!!!!

# 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

swingworker_使用SwingWorker的Java Swing中的多线程

swingworker如果要使用Swing用J​​ava编写桌面或Java Web Start程序,您可能会觉得需要通过创建自己的线程在后台运行某些程序。 没有什么可以阻止您在Swing中使用标准的多线程技术,并且需要遵循通常的注意事项。 如果有多个线程访问相同的变量&#xf…

指定端口传输_一段话告诉你什么是端口

1、端口的含义端口是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。电脑运行的系统程序,其实就像一个闭合的圆圈,但是电脑是为人服务的&#x…

loop在python中什么意思_python中迭代什么意思

1、迭代: 迭代是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。例如:…

使用Spring Data的Apache Ignite

Spring Data提供了一种统一而简单的方法来访问不同类型的持久性存储,关系数据库系统和NoSQL数据存储。 它位于JPA之上,添加了另一层抽象并定义了基于标准的设计以在Spring上下文中支持持久层。 Apache Ignite IgniteRepository实现了Spring Data CrudR…

js hover图片放大不遮挡_CSS3+JS 实现放大镜

注意:看懂本文需要:懂中文 :)学习过 JavaScript 和 css代码较长,框框可左右滑动哦您的观看和点赞是对本公众号最大力的支持 ~~原文链接:https://blog.csdn.net/qq_43624878/article/details/110197749 CSS3JS完美实现放…

python装饰器class_Python中的各种装饰器详解

Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义。 一、函数式装饰器:装饰器本身是一个函数。 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: &g…

odoo controller 继承

方式一: 继承基类,直接重写方法 from odoo.addons.web.controllers.main import Exportclass PsExport(Export): http.route(/web/export/get_fields, typejson, auth"user") def get_fields(self, model, prefix, parent_name , import_co…

python字符串startswith_Python 字符串 startswith() 使用方法及示例

Python 字符串 startswith() 使用方法及示例如果字符串以指定的前缀(字符串)开头,则startswith()方法将返回True。如果不是,则返回False。startswith()的语法为:str.startswith(prefix[, start[, end]])startswith()参数startswith()方法最多…

odoo连接外部数据库

odoo框架默认的访问时Postgres数据库,但在实际的应用场景中,不可避免的使用到其他数据库,所以有必要研究如何连接其他第三方数据库,这里分享下OCA的相关模块,具体的源代码在这里。 我将第三方的数据库需要连接的情况汇…

整型和bcd的对应关系_微信与多闪之争背后,好友关系链到底是如何窃取的?

这几天从发布到全面推广,多闪已经快速的超越100万用户,迅速占领了appsotre榜首,在七麦数据中也是蝉联第一。但因多闪包括头条产品登录采取都支持【微信第三方登录】。很多用户都反馈是否自己的关系链被多闪、甚至是抖音窃取,并且腾…

线程同步,线程不同步_同步多线程集成测试

线程同步,线程不同步测试线程非常困难,这使得为被测多线程系统编写良好的集成测试非常困难。 这是因为在JUnit中,测试代码,被测对象和任何线程之间没有内置的同步。 这意味着,当您必须为创建并运行线程的方法编写测试时&#xff0…

ehcache 默认大小_简单的使用ehcache

ehcache是一个用Java实现的使用简单,高速,实现线程安全的缓存管理类库,ehcache提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案。同时ehcache作为开放源代码项目,采用限制比较宽松…

JS定时器使用,定时定点,固定时刻,循环执行

本文概述:本文主要介绍通过JS实现定时定点执行,在某一个固定时刻执行某个函数的方法。比如说在下一个整点执行,在每一个整点执行,每隔10分钟定时执行的方法。 JavaScript中有两个定时器方法:setTimeout(&am…

axios 跨域_当遇到跨域开发时,我们如何处理好前后端配置和请求库封装

我们知道很多大型项目都或多或少的采用跨域的模式开发, 以达到服务和资源的解耦和高效利用. 在大前端盛行的今天更为如此, 前端工程师可以通过nodejs或者Nginx轻松搭建起web服务器.这个时候我们只需要请求后端服务器的接口即可实现系统的业务功能开发.这个过程中会涉及到web页面…

Java数据类型和标识符

在本教程中,我们将了解Java中的数据类型和标识符。 Java语言具有丰富的数据类型实现。 数据类型指定大小和可以存储在标识符中的值的类型。 Java数据类型分为两类: 原始数据类型 非原始数据类型 原始类型 Java定义了八种原始数据类型:字…

哈罗顺风车送到终点吗_没有了顺风车,滴滴“特惠拼车”来了!比拼车更低价,比顺风车更安全吗?...

近日,有网友表示,滴滴出行App内出现了“特惠拼车”功能,据悉,该功能主要给乘客提供长距离拼车出行的优惠折扣。如果拼车价格为44.8元,那“特惠拼车”的价格为30.7元。但是该功能目前还未在上海出现。近日,有…

管理角色认知-工程师到管理者角色发生了哪些变化?

背景 不同等级的管理者需求不同; 管理者需求说明新经理提供管理相关的工具和方法能力层面,术高级经理提升角色认知认知和理解,道,系统通过认知上的改变达到能力和行为上的改善一个人的行为,能力,价值观都源…

axure 小程序 lib_小程序定制开发的步骤有哪些?

经过两年多的微信小程序开发,各种功能应用变得越来越成熟,越来越多的企业和企业正在开发微信小程序用于在线营销。如果您的公司尚未开发成都小程序,它将变得越来越凶猛。在竞争激烈的市场环境中,将失去许多获得和营销客户的机会。…

java 检查打印机状态_爱普生打印机常见故障有哪些 爱普生打印机故障解决方法【详解】...

任何设备在使用一段时间后都会出现一些小问题,打印机也不例外,那么爱普生打印机常见的故障有哪些 ,出现问题该怎么解决呢?下面小编就来分享2018爱普生打印机故障解决方法 ,一起来看看吧!一、故障现象 &a…

eureka 之前的服务如何关闭_干货分享 | 服务注册中心Spring Cloud Eureka部分源码分析...

友情提示:全文13000多文字,预计阅读时间10-15分钟Spring Cloud Eureka作为常用的服务注册中心,我们有必要去了解其内在实现机制,这样出现问题的时候我们可以快速去定位问题。当我们搭建好Eureka Server服务注册中心并启动后&#…