toast提示信息获取和Monkey笔记
获取toast
toast提示信息出现场景:用户输入用户名和密码后,提示的'登录成功', 用之前的定位方法获取不了,需要Uiautomator2来获取
安装node.js (使用 npm 或 node 验证)
node-v8.11.3-x64.msi(windows) 或 node-v8.10.0.pkg(mac) 进行安装
安装cnpm (使用cnpm验证)
npm install -g cnpm --registry=https://registry.npm.taobao.org
下载 appium-uiautomator2-driver
cnpm install appium-uiautomator2-driver
前置代码添加
desired_caps['automationName'] = 'Uiautomator2'
使用driverWait的方式寻找
def find_toast(driver, message, timeout=3):
"""
# message: 预期要获取的toast的部分消息
"""
message = "//*[contains(@text,'" + message + "')]" # 使用包含的方式定位
element = WebDriverWait(driver, timeout, 0.1).until(lambda x: x.find_element(By.XPATH, message))
return element.text
monkey环境
同Android环境
什么是Monkey
顾名思义,Monkey就是猴子, Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。 猴子什么都不懂, 只知道乱敲
通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常
Monkey用来做什么
Monkey 主要用于Android 的压力测试 自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash.
Monkey程序介绍
Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;
Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
Monkey 命令启动方式:
可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试
在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试
在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器 (Terminal Emulator for Android)
Monkey输出日志
adb shell monkey -p cn.goapk.market 100 > 路径/log.txt
Monkey基本参数介绍
-p <允许的包名列表>
用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果指定包列表, monkey将允许系统启动设备中的所有app。
指定一个包:adb shell monkey -p cn.goapk.market 100
指定多个包:adb shell monkey -p fishjoy.control.menu –p cn.goapk.market 100
100:相当于点了100次动作, 包含动作和事件, 很多动作(按下,抬起,滑动等)构成事件,
-v
用亍指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示:
Level 0 : adb shell monkey -p cn.goapk.market -v 100 // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息
Level 1 : adb shell monkey -p cn.goapk.market -v -v 100 // 提供较为详细的日志,包括每个发送到Activity的事件信息
Level 2 : adb shell monkey -p cn.goapk.market -v -v -v 100 // 最详细的日志,包括了测试中选中/未选中的Activity信息
-s(随机数种子) 重现操作步骤
用亍指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。 示例:
monkey测试1:adb shell monkey -p cn.goapk.market –s 10 100
monkey测试2:adb shell monkey -p cn.goapk.market –s 10 100
如果app发生崩溃,可用利用-s 加上顶部的seed值进行复原步骤操作. 但是可能由于网络等原因,执行的效果不一样,比如之前点击了图片能加载出来文章,第二次在测试时候,点击了图片后,文章却加载不出来.
--throttle <毫秒>
用亍指定用户操作(即事件)间的时延,单位是毫秒;如果指定这个参数,monkey会尽可能快的 生成和发送消息。 示例:adb shell monkey -p cn.goapk.market --throttle 3000 100
一个事件由多个动作构成,
Monkey日志分析
--pct-touch <percent>
调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一 位置)。
--pct-motion <percent>
调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事 件和一个up事件组成)。
--pct-trackball <percent>
调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。
--pct-pinchzoom <percent>
缩放事件百分比
--pct-nav <percent>
调整“基本”导航事件的百分比(导航事件由来自方向输入 设备的up/down/left/right组成)。
--pct-majornav <percent>
调整“主要”导航事件的百分比(这些导航事件通常引发图 形界面中的动作,如:回退按键、菜单按键)
--pct-syskeys <percent>
调整“系统”按键事件的百分比(这些按键通常被保留,由 系统使用,如Home、Back、Start Call、End Call及音量控制键)。
--pct-appswitch <percent>
调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调 用,作为最大程度覆盖包中全部Activity的一种方法。
--pct-flip <percent>
键盘翻转事件百分比
--pct-anyevent <percent>
调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。
正常情况
如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成
异常情况
Monkey 测试出现错误后,一般的分析步骤看Monkey的日志 (注意第一个swith以及异常信息等)\1. 程序无响应的问题: 在日志中搜索 “ANR”\2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bugMonkey 执行中断, 在log最后也能看到当前执行次数
monkey只能测试崩溃与否,不能测试业务逻辑
toast提示信息获取和Monkey笔记的更多相关文章
- Appium常用操作之「Toast提示信息获取」
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:Oschina.云+社区.知乎等各大平台都有. 目录 一.什么是 Toast 二.获取 Toast 提示信息的前提 1.针对这种元素,有的时候我们需要 ...
- toast提示信息获取
toast获取的前提条件 1.desired_caps["automationName"]="UiAutomator2"2.要求安装jdk1.8 64位及以上. ...
- Toast提示信息
用Toast来作为操作成功以及用户误操作等等的提示,非常的简单.直接上代码: 创建方式一: ps: 此处没有设置toast的其他属性,均使用默认的风格(个人觉得默认的风格除了字体比较小之外 还是挺好看 ...
- Android开发系列(二十三):实现带图片提示的Toast提示信息框
Android中的Toast是非经常见的一个消息提示框.可是默认的消息提示框就是一行纯文本.所以我们能够为它设置一些其它的诸如是带上图片的消息提示. 实现这个非常easy: 就是定义一个Layout视 ...
- app自动化toast信息获取
移动端测试比较常遇到toast类型的提示信息,那么对于这类信息我们要怎么获取呢,让我细细道来: 首先,获取toast信息要注意以下几点: 必须是Uiautomator2框架,设备配置参数中设置 &qu ...
- Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用
一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了,它的复杂度远远大于纯粹的应用开发.首先必须要考虑的就是集成第三方SDK,支付这块渠道商已经帮你我们做好了,只需要按照文档对 ...
- TODO monkey笔记,PC端执行和手机端执行
微博不给力啊 吞我笔记,还好我有txt... 1.环境准备:安装Android sdk, 配置环境变量:platfrom_tools,tools,aapt;java:2.查询当前apk信息: aapt ...
- 漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃monkey日志
漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃日志 1.APP崩溃率标准 开发或测试app的同学,对于app崩溃肯定非常熟悉,频繁的线上崩溃属 ...
- Mvc Model 模板的获取【学习笔记】
MVC的Model模板有两种:一种编辑模式(@Html.EditorFor()).一种显示模式(Html.DisplayFor()). 模板的获取与执行(以下转自这里): 当我们调用HtmlHelpe ...
随机推荐
- Luogu P1062 数列
Luogu P1062 数列 题目说: 把所有$k$的方幂及所有有限个互不相等的$k$的方幂之和构成一个递增的序列. 这就是说,每一个$k$的方幂只能有或没有. 有为$0$,没有为$1$. 所以这些数 ...
- PYTHON 爬虫 baidu美女图片
from urllib import requestimport re import osdef main(): #page=request.urlopen("http://image.ba ...
- HMM 模型输入数据处理的优雅做法 来自实际项目
实际项目我是这样做的: def mining_ue_procedures_behavior(seq, lengths, imsi_list): print("seq 3:", se ...
- golang 时间的比较,time.Time的初始值?
参考: https://golangcode.com/checking-if-date-has-been-set/ https://stackoverflow.com/questions/209243 ...
- Git----拉取远程分支,git pull,git rebase,git pull --rebase的区别
git pull 相当于自动的 fetch 和 merge 操作,会试图自动将远程库合并入本地库,在有冲突时再要求手动合并. git rebase 可以确保生产分支commit是一个线性结构,方便ro ...
- MySQL之JDBC插入、修改、删除封装集于一个方法
1. 先建四个包 ① com.tz.entity 实体包 ② com.tz.dao 数据访问层包 -> com.tz.dao.impl 实现包 ③ com.tz.util 工具类包 ④ com. ...
- VIM--保存和退出等命令
在 Linux 中使用 vim 时,输入 vim xxx.file 按 ESC,左下角就可以进行输入 :w 保存但不退出 :wq 保存并退出 :q 退出 :q! 强制退出,不保存 :e! 放弃所有修改 ...
- 用免费的webservice查询天气
亲测能用URL地址:https://blog.csdn.net/qq_37171353/article/details/79415960 wsimport -s . file:///D:weath.w ...
- leetcode 198 动态规划
题目意思是:给一组数组,要使选取的子数组和(不用连续)最大,但不能同时选取相邻. 我的思路: 对于a[i]来说,要么选取,要么不选取.假设选取a[i],那么肯定不能选取a[i-1],只能看前0~i-2 ...
- 2019暑期金华集训 Day2 线性代数
自闭集训 Day2 线性代数 高斯消元 做实数时,需要找绝对值最大的作为主元,以获取更高精度. 在欧几里得环(简单例子是模合数)意义下也是对的.比如模合数意义下可以使用辗转相除法消元. 欧几里得环:对 ...