干货| app自动化测试之Andriod微信小程序的自动化测试

news2024/11/27 23:42:03

随着微信小程序的功能和生态日益完善,很多公司的小程序项目页面结构越来越多,业务逻辑也越来越复杂。如何做好小程序的自动化测试就成为测试同学普遍面临的一大痛点难题。

微信小程序

小程序内嵌于微信内部,页面包含 Native 原生元素和 Web 元素,相当于混合应用。并且,小程序 Web 部分是基于腾讯的 X5 内核开发的,也是特殊的 WebView。那么,对微信小程序进行自动化测试,包括操作原生应用、WebView、基于微信官方自动化 SDK。

WebView页面元素获取

使用元素定位工具:

  • weditor

weditor安装方式

pip install weditor

参考文档:https://github.com/alibaba/web-editor

使用 chrome inspect 定位时,解析元素是把页面解析为了 html 页面,使用 weditor,则会把页面解析为原生页面,而 Appium 在操作元素时,也是把页面解析成了原生去操作的(切换 webview 除外)

获取小程序进行号(打开小程序)

Mac:

adb shell dumpsys activity top| grep ACTIVITY

Windows:

adb shell dumpsys activity top| findstr ACTIVITY

获取androidProcess

实战源码

from time import sleepfrom appium import webdriverclassTestDemo:    defsetup(self):        self.desire_cap= {            'automationName': "uiautomator2",            "platformName": "Android",            "deviceName": "wechat",            "appPackage": "com.tencent.mm",            "appActivity": ".ui.LauncherUI",            "noReset": "true",            'chromeOptions': {'androidProcess': 'com.tencent.mm:appbrand0'}        }        # androidProcess:webview是独立进程的,导致无法获取,需要在 chromeOptions 添加 androidProcess 即可        self.driver=webdriver.Remote("http://127.0.0.1:4723/wd/hub",self.desire_cap)        self.driver.implicitly_wait(20)    defteardown(self):        self.driver.quit()    deftest_demo(self):        # 刚打开微信时,页面加载时间未知,        # 需要通过find_element触发隐式等待,防止后续操作失败        self.driver.find_element_by_xpath("//*[@text='通讯录']")        size = self.driver.get_window_size()        # 获取当前屏幕的宽、高        width = size.get("width")        height = size.get("height")        # 滑动打开小程序页面        self.driver.swipe((width / 2), int((height * 0.2)), (width / 2), (height * 0.8), 2000)        self.driver.find_element_by_xpath("//*[@resource-id='com.tencent.mm:id/gam' and @text='雪球']").click()        sleep(5)        print(self.driver.contexts,'第一次打印')        self.driver.find_element_by_xpath("//*[@content-desc='搜索股票信息/代码']/..").click()        self.driver.find_element_by_xpath('//*[@text="请输入股票名称/代码"]').send_keys("阿里巴巴")        text = self.driver.find_element_by_xpath('//*[@content-desc="阿里巴巴"]')        assert text

软件版本

  • 模拟器:Genymotion

  • 系统版本:8.1

  • 微信版本:7.0.15

  • 小程序:雪球

参考链接

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

  • https://sites.google.com/a/chromium.org/chromedriver/capabilities

  • https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-started---android

扩展

小程序的测试方法有很多种,因为微信版本经常升级,webview的设置也会发生变化,所以可用的测试方法可能会因为每个版本而不同。更多可用测试方法可参考测试人论坛:https://ceshiren.com/t/topic/12403

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

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

相关文章

华为防火墙与二层交换机对接配置VLAN上网设置

拓扑图 一、防火墙设置 1、G1/0/0接口设置IP&#xff0c;G1/0/1接口切换二层口设置VLAN&#xff0c;G1/0/0 桥接了本地无线网卡来模拟公网地址 <USG6000V1>sys [USG6000V1]sys FW1 [FW1]un in en# 设置公网IP [FW1]int g1/0/0 [FW1-GigabitEthernet1/0/0]ip addr 192.1…

package.json配置解读之入门

文章目录前言一、描述配置nameversionrepositorydescriptionkeywordslicenseauthor二、文件配置filestypemainbrowsermoduleexportsworkspaces三、脚本配置scriptsconfig四、结语前言 package.json是每个前端项目都会有的json文件&#xff0c;位于项目的根目录中。很多脚手架在…

RHCE(chrony服务器)

chrony服务器 chrony服务器是一个开源自由的网络时间协议NTP的客户端和服务器的软件&#xff0c;他能让计算机保持系统时钟和时钟服务器保持同步&#xff0c;让计算机保持精确的时间&#xff0c;chrony也可以作为服务端软件为其他计算机提供时间同步服务 chrony由两部分组成&…

openAI--十拳剑助你做AI时代的弄潮儿

AI它厉害&#xff08;diao&#xff09;吗&#xff1f; 最近大家玩chatgpt还好吗&#xff1f; 有被它的恋爱情商暴击到吗&#xff1f; 有没有觉得那在leetcode上所向无敌的技巧都是浮云吗&#xff1f; 今天&#xff0c;我为大家带来十个很好的AI平台。这一篇先介绍一下&…

【远程桌面】nomachine下载安装使用教程、zerotier下载安装使用教程超详细

文章目录一、软件介绍二、NoMachine远程桌面1.Windows下载安装使用2.Linux下载安装使用3.Android下载安装使用4.ARM下载安装使用&#xff08;未实践&#xff09;三、ZeroTier内网穿透0.官网注册账户1.Windows下载安装使用2.Linux下载安装使用3.Android下载安装使用4.ARM下载安装…

Android 学习 - 不完善

SharedPreference 共享参数用法 SharedPreference 是 Android 的一个轻量级存储工具, 采用的存储结构是Key-Value的键值对方式. 共享参数的存储介质是符合XML规范的配置文件. 保存路径是: /data/data/应用包名/shared_prefs/文件名.xml 利用元数据配置快捷菜单 (1)元数据的met…

【阶段二】Python数据分析Pandas工具使用11篇:探索性数据分析:数据的检验:卡方检验与t检验

本篇的思维导图: 探索性数据分析:数据的检验 卡方检验 在实际的学习或工作中,也会碰到关于离散型变量之间的探索性分析,如两个离散变量之间是否相互独立。对于该问题的解答,就需要运用统计学中的卡方检验了。卡方检验属于非参数的检验方法,其原假设是两个离散变…

Spring——最全Spring目录

&#x1f4eb;作者简介&#xff1a;zhz小白 公众号&#xff1a;小白的Java进阶之路 专业技能&#xff1a; 1、Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理 2、熟悉Java基础&#xff0c;并精通多线程的开发&#xff0c;熟悉JVM原理&#xff0c;具备⼀定的线…

2022 IoTDB Summit:IoTDB PMC侯昊男《Apache IoTDB首创时序顺乱序分离存储引擎 IoTLSM》...

12 月 3 日、4日&#xff0c;2022 Apache IoTDB 物联网生态大会在线上圆满落幕。大会上发布 Apache IoTDB 的分布式 1.0 版本&#xff0c;并分享 Apache IoTDB 实现的数据管理技术与物联网场景实践案例&#xff0c;深入探讨了 Apache IoTDB 与物联网企业如何共建活跃生态&#…

Flutter项目中添加Webview(八)使用JavaScript渠道

借助JavascriptChannel&#xff0c;您的应用可以在WebView的JavaScript上下文中注册回调处理程序&#xff0c;可以调用这些回调处理程序将值传递回应用的Dart代码。在此步骤中&#xff0c;您将注册一个使用 SMLHttpRequest的结果调用SnackBar。 将WebViewStack类更新如下所示&…

Mysql的锁(自用笔记)

笔记(https://www.bilibili.com/video/BV1Kr4y1i7ru) 什么是锁? mysql中有哪几种锁 表级锁 表级锁-表锁 write lock 写锁, 加锁客户端,可以读写操作, 其他客户端不能 读,写操作 表级锁-元数据锁 一个例子,事务中,增删改查时候,会自动加入元数据锁,不允许对表结构进行修改 …

Keras model.predict输出的概率值转换为类别

问题&#xff1a;使用Keras做分类任务&#xff0c;model.predict预测得到的值为每个类别的概率值&#xff0c;而不是类别。 源码&#xff1a; y_test_pred model.predict(x_test, batch_size256, verbose1)解决&#xff1a; import numpy as np y_test_pred model.predict(…

[ctf.show pwn] 新手杯,七夕杯

闲来无事作练习新手杯pwn1好长的代码&#xff0c;看了十几分钟&#xff0c;发现最后一个函数是后门&#xff0c;而且是不用敲的那种。void __noreturn door() {char s[32]; // [rsp0h] [rbp-50h] BYREFchar command[40]; // [rsp20h] [rbp-30h] BYREFunsigned __int64 v2; // […

【新年心安】新冠感染“阳康”套餐,“阳康”后的你,很有必要

你有没有 在阳康后还伴随 呼吸急促&#xff08;气短&#xff09;、全身乏力、咳嗽、出冷汗等 健康问题阳康健康检查套餐 潍坊正大光明老年病医院为更好的服务患者现推出阳康健康检查套餐&#xff0c;“阳康”后的你&#xff0c;体检先行很有必要&#xff01;详情如下&#xff1…

【LeetCode面试TOP100】力扣打卡第一天!

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【LeetCode面试TOP100】 ✈️✈️本篇内容:力扣Top100——第1,2题&#xff01; &#x1f680;&#x1f680;代码存放仓库gitee&#xff1a;力扣面试Top100题&…

JavaScript刷LeetCode拿offer-js版字典

1. 字典简介 与集合类似&#xff0c;字典也是一种存储唯一值的数据结构&#xff0c;但它是以键值对的形式来存储。 使用 ES6 Map 1.1 字典的常用操作 const m new Map();// 增 m.set(a, aa); m.set(b, bb);// 删 m.delete(b); m.clear();// 改 m.set(a, aaa)// 查 m.get(a…

【JavaScript 逆向】极验三代无感验证码逆向分析

相关文章 【JavaScript 逆向】极验三代滑块验证码逆向分析 【JavaScript 逆向】极验四代无感验证码逆向分析 【JavaScript 逆向】极验四代滑块验证码逆向分析 声明 本文章中所有内容仅供学习交流&#xff0c;相关链接做了脱敏处理&#xff0c;若有侵权&#xff0c;请联系我…

ESP32设备驱动-HDC1008温度传感器驱动

HDC1008温度传感器驱动 1、HDC1008介绍 Texas Instruments 的 HDC1008 是一款带有集成温度传感器的数字湿度传感器,能够以极低的功耗提供出色的测量精度。 该设备基于新型电容传感器测量湿度。 湿度和温度传感器在出厂时已校准。 创新的 WLCSP(晶圆级芯片规模封装)使用超紧…

dubbo源码实践-Exchange 信息交换层例子

1 Exchange 层概述官方定义&#xff1a;exchange 信息交换层&#xff1a;封装请求响应模式&#xff0c;同步转异步&#xff0c;以 Request, Response 为中心&#xff0c;扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer。其中Exchanger是SPI扩展点&…

虹科分享 | 网络流量监控 | 构建大型捕获文件(Ⅰ)——Wireshark过滤器和其他Allegro网络万用表工具

数据包分析是一个复杂的话题。如果在没有设置参数的情况下启动Wireshark&#xff0c;就会开始实时捕获或打开一个预先录制的pcap文件。在很短的时间内&#xff0c;可能有成千上万的数据包等待分析。有一种危险&#xff0c;就是被大量的数据困住了。 然而&#xff0c;如果用户想…