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. 下拉为微信聊天页面,出现摩拜小程序(显示最近使用的哦,你的可能是别的小程序)

怎样实现下拉滑动呢?使用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属性所以不好用常用定位方法定位,只好用坐标来定位了!

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

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

appium+python 微信小程序的自动化的更多相关文章

  1. 使用Appium 测试微信小程序和微信公众号方法

    由于腾讯系QQ.微信等都是基于腾讯自研X5内核,不是google原生webview,需要打开TBS内核Inspector调试功能才能用Chrome浏览器查看页面元素,并实现Appium自动化测试微信小 ...

  2. python 微信小程序自动化

    微信小程序自动化 https://www.cnblogs.com/yyoba/python27 - FautoTesthttps://www.cnblogs.com/yyoba/p/9973731.h ...

  3. 【腾讯优测干货分享】微信小程序之自动化亲密接触

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/HcPakz5CV1SHnu-U8n85pw 导语 山雨欲来风满楼,最 ...

  4. Appium 测试微信小程序 Webview

    通过微信打开debugx5.qq.com,或者直接扫下面二维码   勾选[打开TBS内核Inspector调试功能]   Chrome查看页面元素 手机连接电脑,查看是否连接成功.如下展示设备号则为连 ...

  5. 使用 Appium 测试微信小程序 Webview

    打开调试功能 通过微信打开debugx5.qq.com,或者直接扫下面二维码   勾选[打开TBS内核Inspector调试功能]   Chrome查看页面元素 手机连接电脑,查看是否连接成功.如下展 ...

  6. 微信小程序UI自动化:实践之后的记录01-选择工具/框架

    目录 1. 前言 2. 工具/框架/库选择 2.1 miniprogram-automator官方介绍(摘自官方哈) 小程序自动化 特性 2.2 minium官方介绍 特性 3. 如何选择 4. 对应 ...

  7. 微信小程序UI自动化: minium文档部署

    目录 参考资料 1. 在线文档(临时) 2. 本地部署 参考资料 https://git.weixin.qq.com/minitest/minium-doc 1. 在线文档(临时) 其实上面的链接里面 ...

  8. 【Appium + Python + WebviewH5】之微信小程序自动化测试

    进行调试,打开X5: http://debugmm.qq.com/?forcex5=true http://debugx5.qq.com http://debugtbs.qq.com 一般前两个就可以 ...

  9. 『与善仁』Appium基础 — 30、操作微信小程序

    目录 1.测试微信小程序前提 2.获取微信小程序的进程 3.代码示例 4.补充:(了解) 微信小程序和微信公众号的测试方式基本上是一样的. 微信的小程序越来越多了,随之带来的问题是:小程序如何做自动化 ...

随机推荐

  1. 详解iOS的presentViewController(转)

    一.用途和相关概念iOS中显示ViewController的方式有两种push和modal,modal也叫模态,模态显示VC是iOS的重要特性之一,其主要用于有以下场景: - 收集用户输入信息- 临时 ...

  2. Python——迭代器&可迭代对象

    可迭代对象 什么是对象: Python中,一切皆对象.一个变量,一个列表,一个字符串,文件句柄,函数等等都可称为一个对象.一个对象就是一个实例,就是实实在在的东西. 什么是迭代 迭代就是一个重复的过程 ...

  3. web中cookie和session_转

    转自:Python爬虫番外篇之Cookie和Session  python修行路 关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可 ...

  4. Java List<String> list=new ArrayList<String>();为什么要声明为List,而不是ArrayList<String>

    例如:代码List list = new ArrayList(); 下面通过list来操作集合.假如代码编写后却发现集合使用的不准确,应该使用LinkedList,那么只要修改一行代码List lis ...

  5. 使用Cloudera Manager搭建Hive服务

      使用Cloudera Manager搭建Hive服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装Hive环境 1>.进入CM服务安装向导 2>.选择需要 ...

  6. JavaSE字符串日期与时间拼接小列子与JSON小列子

    1.在对象中有个字段为Timestamp类型,需要将数据库的开始日期字段和开始时间字段拼接成一个字段开始字段 private static Timestamp getDateTime(String d ...

  7. 如何使用MCUXpresso IDE创建一个Cortex-M工程

    拿到Cortex-M开发板之后,就可以开始使用MCUXpresso IDE上手入门.在这个教程中,我们将详细介绍如何基于CMSIS(Cortex微控制器软件接口标准)在MCUXpresso IDE中为 ...

  8. java基础(13)---集合框架

    一.集合框架 Java的集合类是一些非常实用的工具类,主要用于存储和装载数据 (包括对象),因此,Java的集合类也被成为容器.在Java中,所有的集合类都位于java.util包下,这些集合类主要是 ...

  9. 《奋斗吧!菜鸟》 第九次作业:Beta冲刺 Scrum meeting 1

    项目 内容 这个作业属于哪个课程 任课教师链接 作业要求 https://www.cnblogs.com/nwnu-daizh/p/11056511.html 团队名称 奋斗吧!菜鸟 作业学习目标 掌 ...

  10. SQl Server 数据库多表连接

    [缘由] 为了防止数据的冗余,我们会将数据库中表进行拆分,这样就产生了多张表,表与表之间通过主外键关联,但这样又造成了我们查找和修改的困难,如何进行多表之间的查找呢? 我们将一个查询同时设计两个或两个 ...