appium环境安装包百度网盘地址
链接:https://pan.baidu.com/s/1pvNb5AzYVzIq5tWjoJJhLg
提取码:ghaj
文章目录
monkey、monkeyRuner、Appium、UIAutomator、对比
Monkey (压力测试)
这个是Android提供的系统工具。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
测试的对象仅为应用程序包,有一定的局限性。
Monky测试使用的事件流数据流是随机的,不能进行自定义。
可对MonkeyTest的对象,事件数量,类型,频率等进行设置。
monkeyRuner (功能测试,用户接受度测试,黑盒测试),提供按键或触摸事件的输入数值,通过截屏对比是否是正常的运行。
UIAutomator - 官方 (黑盒测试,功能测试) ,可以测试需要在不同app之间切换的情况。找到UI控件然后进行操作。 UiAutomator对外提供了UiAutomatorTestCase、 UiDevice、UiSelector、UiObject、UiCollection、 UiScrollable等重要的类
Appium是基于UIAutomator框架实现的一个开源、跨平台的测试框架。Appium测试 (功能测试,用户接受度测试,黑盒测试),findElements**(**)方法获取到UI元素,获取信息为主。没有uiautomator的执行速度快。
附录:快捷键
在线数据生成datagenerator
需要全英文状态下操作
https://www.onlinedatagenerator.com/
cmd命令
转到指定盘:D:
回退到根目录:cd\
adb命令
结束adb命令 :ctrl +C
退出adb shell:exit
退出monkeyrunner:ctrl+D
查看端口号占用
Linux
su
netstat -anlp | grep “631”
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 6184/cupsd
-a列出所有端口;-n使用数字,代替主机、端口和用户名显示;-l只显示监听端口;-p显示 PID 和进程名称;kill -9 6184 杀死进程
window
netstat -ano | findstr “4723”
TCP 0.0.0.0:4723 0.0.0.0:0 LISTENING 11128
监听到pid 11128–ctrl+alt+delete任务管理器–详细信息,找到PID11128,右键结束任务,可以关闭已占用端口号
web日志
1.作用:取代print()方法,并且可以在日志文件中回溯。
2.日志类需要配置或者注意:
2.1.项目路径和日志文件路径
这里我配置了项目的路径base_url,并且准备新建一个log文件夹,用来放置log日志文件。
为了不用再手动去创建log文件夹和log日志文件,这里我进行了判断文件夹和日志文件是否存在,如果不存在则创建日志文件夹和文件。
2.2默认level值默认入参中有默认:clevel、Flevel,如果有等级需要可以进行更改
clevel:cmd输出日志界面的日志等级
Flevel:日志文件的日志等级
在创建logger时,也对总的日志等级设置,这里我设置为了debug最低等级。
3.log类代码
# -*-coding:utf-8 -*-
import os
import logging
# 定义了blog_ui项目的绝对路径
base_url = "E:/111test/blog_ui/"
class Logger:
def __init__(self, path=base_url + "/log/autotest.log", clevel=logging.DEBUG, Flevel=logging.INFO):
# 判断log文件夹是否存在,不存在的话创建文件夹以及日志文件
project_dir = os.listdir(base_url)
dir_name = 'log' # log文件夹
if dir_name not in project_dir:
create_path = base_url + '/' + dir_name
os.makedirs(create_path)
file = open(create_path + '/autotest.log', 'w', encoding='gb18030')
file.close()
# 创建logger
self.logger = logging.getLogger(path)
self.logger.setLevel(logging.DEBUG)
# 防止创建多个logger对象
if not self.logger.handlers:
# 设置日志格式
fmt = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
# 设置CMD日志
sh = logging.StreamHandler()
sh.setFormatter(fmt)
sh.setLevel(clevel)
# 设置文件日志
fh = logging.FileHandler(path)
fh.setFormatter(fmt)
fh.setLevel(Flevel)
self.logger.addHandler(sh)
self.logger.addHandler(fh)
def debug(self, message):
self.logger.debug(message)
def info(self, message):
self.logger.info(message)
def war(self, message):
self.logger.warn(message)
def error(self, message):
self.logger.error(message)
def cri(self, message):
self.logger.critical(message)
4.日志类的调用 demo.py
# 导入自定义的log类
from common.log import Logger
# 实例化一个log对象
test_log = Logger()
# 调用log类的方法:
test_log.war("警告信息")
test_log.info("普通信息")
test_log.debug("详细信息")
test_log.error("错误信息")
test_log.cri("严重错误")
接下来加入日志后,就需要将之前的print方法逐个替换为log方法,并且在关键位置,例如:网址、元素定位地址、输入值、断言结果等信息,使用log日志来打印。
andriod日志
1.清理之前的日志缓存,从当前开始显示
adb logcat -c && adb logcat
2.日志加时间
adb logcat time //显示日期,调用时间,优先级/标记,PID
3.logcat命令
adb logcat //显示全部日志
adb logcat > D:\test.log //将日志保存到文件test.log
adb logcat 标记1:I 标记2:D *:S //根据tag标记和级别过滤日志输出
adb logcat *:W //显示所有优先级大于等于“warning”的日志
adb logcat -s 标记1 //显示标记1的日志信息
grep匹配
adb logcat | grep “^E.MyApp”
adb logcat | grep “…MyApp|…MyActivity”
adb logcat | grep -E “…MyApp|…MyActivity” #使用 egrep 无须转义符
Log信息级别
V — 明细 verbose(最低优先级)
D — 调试 debug
I — 信息 info
W — 警告 warn
E — 错误 error
F — 严重错误 fatal
S — 无记载 silent
从上而下级别逐次增加
appium脚本生成步骤
第一步:打开app
第二步:cmd命令行输入,获取包名和主活动,设备端口号
adb shell dumpsys window | findstr mCurrentFocus
mCurrentFocus=Window{3bc2728b u0 com.example.tarena.myappdemo2/com.example.tarena.myappdemo2.MainActivity2}adb devices
List of devices attached
127.0.0.1:62001 device
第三步:
1.右键–以管理员