当前位置: 首页 > news >正文

从零开始学习软件测试-第45天笔记

monkey事件

  • 事件:对app进行的操作,比如触摸事件,滑动事件...
  • 动作:构成一个事件所需要的步骤。

调整事件的百分比

  • adb shell monkey -p 包名 -v -v --pct-xxx 百分比 次数>输出文件的路径

分析日志有没有报错

  • 到日志中去找crash、anr,如果找不到,就代表没有问题,如果找到了就代表有bug。
  • crash代表程序崩溃了,一定是bug。
  • anr代表程序无响应,不一定是bug,有可能是机型老旧导致的。

可能导致程序崩溃的原因

  • 内存溢出(oom out of memory)
    • 内存不足,无法启动当前的程序。
  • 内存泄漏(memory leak)
    • 不用的变量没有被及时的释放,导致其他数据不能使用此空间。
  • 下标越界(ArraryIndexOutOfBoundsException)
    • 下标超过了列表的总长度。
  • 空指针(NullPointerException)
    • 变量值为空的情况下调用方法,变量没有初始化情况下调用方法。

忽略异常

  • app的crash(崩溃)异常
    • adb shell monkey -p 包名 --ignore-crashes -v -v 次数 > 输出文件的路径
  • app的anr(无响应)异常
    • adb shell monkey -p 包名 --ignore-timeouts -v -v 次数 >输出文件的路径

app自动化-环境搭建

  • 下载第三方包 appium
    • pip install Appium-Python-Client == 1.3.0
  • 下载驱动
    • appium

app自动化报错点

  • 没有启动appium驱动
  • 电脑用户名是中文的,会报错,必须运行一次你写的自动化代码,如果代码报错了,再去修改。
    • 进入安卓Linux系统 adb shell
    • cd data
    • cd local
    • cd tmp
    • ls 查看目录
    • 有个AppiumBootstrap.jar 文件,如果名称是不全的,需要手动将文件名改全
    • mv 不全的文件名 AppiumBootstrap.jar

获取元素的源代码

  • 通过android -sdk中的tools文件夹中的bin目录下的uiautomatorviewer.bat工具来获取元素的源代码。
  • 注意:uiautomatorviewer.bat不支持java-jdk-8版本以上的版本。

app的输入框中,输入中文

  • 在参数中添加两个参数即可。
    • 变量名['unicodeKeyboard'] = True
    • 变量名['resetKeyboard'] = True

不重置应用(取消引导页)

  • 变量名['noReset'] = True

元素的操作

app自动化的元素操作方法和web自动化的元素操作方法大部分都是通用的。

  • 点击 click()
  • 输入 send_keys()
  • 清空 clear()
  • 获取文本 text
  • 获取位置 location
  • 根据属性名获取属性值get_attribute()
    • 获取id是resourceId
    • 获取class是className
    • 获取text是text或name
    • 获取content-desc是name
      • 注意:以上名称仅仅是用于根据属性名获取属性值,且API>=18,即Android版本>=4.3

web定位和app定位的区别

  • id定位的区别
    • web的id类似于身份证号,独一无二,有的话可以直接使用。
    • app的id类似于web中的class,用来定义样式的,可以重复的,当元素样式一样的情况下,大概率id是一样的。
  • class定位的区别
    • web中的class是用来添加样式的
    • app的class类似于web中的tag_name,是元素的标签名,大概率是重复的

如何判断id是否是重复的

  • 看当前页面有没有和指定元素相同样式的元素,如果没有大概率是没有重复的
  • 看id和元素有没有密切的关联

如何判断class是否有重复

  • 判断当前页面有没有和指定元素相同类型的元素
http://www.lryc.cn/news/167604.html

相关文章:

  • visual studio常用快捷键
  • 数据变换:数据挖掘的准备工作之一
  • Go语言实践案例之简单字典
  • 笔试面试相关记录(3)
  • 第6章_瑞萨MCU零基础入门系列教程之串行通信接口(SCI)
  • 开源免费的流程图软件draw.io
  • Python绘图系统19:添加时间轴以实现动态绘图
  • 深度解析shell脚本的命令的原理之rm
  • RPA机器人流程自动化专题培训大纲(供大家参考使用)
  • Python用若干列的数据多条件筛选、去除Excel数据并批量绘制直方图
  • 驱动开发,IO多路复用实现过程,epoll方式
  • java在mysql中查询内容无法塞入实体类中,报错 all elements are null
  • Linux 挂载
  • [面试] 15道最典型的k8s面试题
  • lintcode 552 · 创建最大数 【算法 数组 贪心 hard】
  • ModbusTCP服务端
  • Middleware ❀ Hadoop功能与使用详解(HDFS+YARN)
  • Matlab图像处理-从RGB转换为HSV
  • iOS Error Domain=PHPhotosErrorDomain Code=3300
  • LeetCode(力扣)435. 无重叠区间Python
  • opencv c++实现鼠标框选区域并显示选择的图片区域
  • Python实现自主售卖机
  • 任务复杂度与人机
  • Windows关闭zookeeper、rocketmq日志输出以及修改rocketmq的JVM内存占用大小
  • Convai:让虚拟游戏角色更智能的对话AI人工智能平台
  • 【送书活动】大模型赛道如何实现华丽的弯道超车
  • opencv dnn模块 示例(16) 目标检测 object_detection 之 yolov4
  • Python提取JSON数据中的键值对并保存为.csv文件
  • 使用IDEA开发Servlet
  • 腾讯mini项目-【指标监控服务重构】2023-07-21