欢迎访问
这是个实用的Python网站

阿里开源框架:不用写代码的自动化工具Soloπ

pk哥阅读(188)

什么是 Soloπ

Soloπ 是阿里在移动端上一个无线化、非侵入式的 Android 自动化工具,公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。本文 pk哥给大家介绍下 Soloπ 的主要功能基本用法,让大家学会不用写脚本就能轻松自动化操作手机上的 APP。

adb 环境搭建

电脑端要操作 Android 系统,需要搭建 adb 环境,搭建教程见这篇文章:adb环境搭建

手机连接电脑

我们需要将手机用数据线连接电脑,验证方法就用上面安装好的 adb 命令验证,输入 adb devices 命令,出现设备信息,则表示连接成功。

我以华为手机为例,说下怎么连接电脑。

1、数据线把手机被电脑连接后,手机消息通知栏出现 USB 连接方式,默认的是仅充电模式,我们选择传输文件模式。

2、开启设置中的开发者模式,开发者模式已开启的忽略,没有这选项的话,华为手机是在关于手机里快速点击版本号 7、8 下,就可以开启开发者模式。

3、开发者模式开启后,进入开发人员选项里,开启 USB 调试功能。

这时,手机和电脑就能完全连上了,用 adb devices 验证下就可以了。

APK 包下载地址

下载打包好的Soloπ APK(Soloπ.apk文件)Soloπ APK 下载地址:


有更新的话,阿里大佬会把新版本发在这个链接

权限开启

第一次启动 Soloπ 时,会申请读写权限,获取读写权限后,Soloπ 会将运行过程中获取到的各项数据存储到 /sdcard/solopi 目录下。

当我们点击录制回放时,Soloπ 会申请 ADB 权限,需要在电脑终端窗口输入命令 adb tcpip 5555 后点击确定进行连接。

需要开启容许 USB 调试权限。

开启悬浮窗权限,点击确定按钮跳转到开启权限页面,开启完后点击「我已授权」。

第三个权限是将 Soloπ 添加到后台白名单中。因为 Soloπ 需要长时间在后台运行以监控应用的性能或者执行操作,为防止 Android 系统将 Soloπ 进程回收,需要用户手动将 Soloπ 添加到后台白名单中。不同 Android 机型设置方法不同,大家可自行搜索引擎搜索设置方法。

下面介绍下这个开源工具三项主要功能:录制回放、一机多控、性能测试。

录制回放

点击录制回放功能,我们可以点击右上角选择切换手机上的任一 APP 进行测试,点击开始执行后,还会让我们开启辅助功能的权限,点击确定去开启。

开启后点击我已开启,就会进入到你刚选择的应用。

录制功能

上方的悬浮窗有三个按钮,绿色按钮:启动录制,黄色按钮:回到 Soloπ首页,红色按钮:隐藏 Soloπ 图标。

点击绿色按钮启动录制功能,比如我现在要录制爱奇艺签到的脚本,点击我的,点击签到按钮。录制过程中,每次点击按钮时,Soloπ 会对用户的操作进行拦截,会弹出选择框,我们需要选择对应的操作。

录制完成后,我们需要点击右边 π 图标的悬浮窗,选择红旗 Tab,点击结束按钮。

回放功能

回到 Soloπ 录制页面,下方最近录制列表里,我们点击录制的记录,点击绿色按钮进行回放。

回放结束后,我们可以看到回放结果,包括回放结果,用例步骤,运行日志,用例截图等。

案例管理

录制回放首页,点击下方录制记录的查看全部按钮,在案例列表里,我们长按案例,可以对案例进行删除、导出、重复播放的操作。

1 删除用例,从数据库中删除该条用例。 2 导出用例,Soloπ 会将该条用例导出到 /sdcard/solopi/export 文件夹下,用户可自行将该用例拷贝到其他设备的/sdcard/solopi/import 文件夹内,在设置中进行导入。 3 重复播放,Soloπ会重复执行该条用例,可以配置回放次数与是否在每次用例执行前重启应用。

比如我选择重复 3 次数后,点击开始执行,再点击上方绿色回放按钮,录制的脚本会循环执行 3 次,执行完后会重启 APP 再执行下一次。

执行结果会给出 3 次的执行状态,点进去可以看到执行的详细情况。

编辑案例

点击录制记录右边的编辑按钮可以对步骤进行增删改操作,增加步骤,比如我在后面添加一个返回按钮的步骤。

点击步骤可修改步骤,修改的部分有 xpath 和 resourceid。

一机多控

选择一机多控功能,一台 Android 选择主机模式,点击开始执行。

点击开始执行后,会进入目标应用,上面弹窗会显示已连接的设备数。

这时我们需要第二台 Android 手机设置从机模式,点击开始执行,会弹出二维码。

我们用刚才设置主机模式的手机弹窗左边点击扫码添加从机。

添加成功后,主机模式的手机弹出右边会显示已连接的设备数是 1。

我们可以添加多个从机,我因为设备的关系,只添加了一台,这时我们操作主机,所有的从机会复制主机的操作,我录了个简单的操作步骤。

性能测试

随着现在用户对 APP 的体验要求越来越高,为了能让用户体验到「如丝般顺滑」的流畅度,性能测试已是必不可少的一个环节。

在 Soloπ 中,我们可以对基本的性能数据进行测试,包括 CPU、内存、响应耗时、帧率、游戏帧率、电池、网络,选中这些数据后,上方浮窗就会显示实时的性能数据。

实时数据图

选中测试的应用后,比如我测试的是微信,我们可以点击绿色三角按钮,进行性能数据录制,录制开始后,我随意操作微信,结束录制后,我们可以查看测试结果,在性能测试页面点击「录制数据查看」查看结果。

Soloπ 的主要设置和功能就介绍到这里了,如需了解更多,请访问 Soloπ 的 GitHub 地址。


adb环境搭建及adb常用命令详解

pk哥阅读(124)

我们知道 Android 系统 是一种基于 Linux 的自由及开放源代码的操作系统,它的爸爸是 Google。既然是开源的,那我们就可以对它进行开发和调试了。adb 命令就是常见的一种命令行调试工具。

Android 手机自动化测试也是会经常用到 adb 命令。

之前写过 adb 常见的操作命令:adb常见命令用法详解,但是,经常有朋友问我,pk 哥啊,我输入 adb 命令,电脑傻傻的告诉我「’adb’ 不是内部或外部命令,也不是可运行的程序」,这是怎么回事呢?

670b60200e992a55580b1577340094f2.png

我的大兄弟啊,你的 adb 环境没有安装好啊。今天就写一篇文章来说说怎么搭建 adb 环境吧。

sdk 环境搭建

我们知道,adb 命令是 Android 系统和 pc 端的桥梁,所以我们的 pc 端需要安装好 Android 的环境,也就是下载安装好 sdk。

下载sdk

下载地址:

 

e8eb3ce43d4189769669ee99c85a68e8.png

支持跨平台,三个平台都可以下载安装,我以 Windows 为例,所以下载第一个并安装好。

6db9f9b6ee0274671af3b436867ea95b.png

下载platform-tools

上面的安装目录下,我们没有看到 platform-tools 这个文件夹,这个文件夹里是包含 adb 等文件的,这时,我们需要双击启动安装目录下的 SDK Manager.exe 可执行文件。

379d2b57f7028d21fa7f810080b52109.png

我们发现 SDK Manager 里面,默认勾选了 platform-tools,点击右下角的安装按钮即可下载包含 platform-tools 的文件。

安装完成后,我们再来看安装目录,发现有了 platform-tools 文件夹,而且里面有 adb.exe 等文件。

2b33abce5cd0163281fc4c72049f8c0e.png

sdk环境变量配置

为了能让系统找到它,我们得为 sdk 配置好环境变量,选中计算机–>点击右键–>选择【属性】–>【高级系统设置】–>【环境变量】。

我们先新建一个固定的变量:ANDROID_HOME,变量值填你的 sdk 安装目录,比如我的是:D:\install\sdk

d3579b9eeb7c47b9cb6466a3c2f7fcbe.png

然后我们需要在变量名 path 后加入必须的三个变量值。

 

b331814cd2de3cbbb217587d9bda8440.png

这是 win10 系统的,path 里面的变量值都是单元格隔开的,如果是 win7 系统,path 的变量值是一长串的,这三个变量值你需要写在一起,并用英文分号隔开。

验证安装情况

环境变量设置完成后,重启 cmd 终端,输入 android-h,检验是否安装成功,没有报错就表示安装和配置成功。

eccfc5aaf347a9219f27d768397369c6.png

输入 adb 命令,会显示 adb 版本和基本命令,表示 adb 环境搭建成功。

27a5b628f4f0dc345d7078d9953ba276.png

adb 环境搭建好了,接下来,你就可以愉快的使用 adb 命令操作 Android 系统了,常见的 adb 操作命令请参考之前的这篇文章:adb常见命令用法详解

 

Android 自动化测试截图详解,保存在电脑或者adb保存在手机中

pk哥阅读(83)

我们在做APP的自动化测试的时候,通常需要截图。截图通常有两种形式,一种是把截图保存在自己的电脑中。另一种就是把截图保存在手机内存里面。

保存在电脑本地

把截图保存在电脑中的需求比较常见,实现也比较简单,直接调用的 get_screenshot_as_file 方法直接可以保存在 PC 本地。

括号里给的是图片保存的路径和图片的命名。

保存在手机内存

如何把截图保存在手机内存里呢?

adb 推送到手机

第一种方法是先用上面的 get_screenshot_as_file 方法保存到本地,然后用 adb 命令 push 到手机内存里。

push 命令的格式如下:

前面的路径是电脑中的路径,后面的路径是你需要推送到手机内存中的路径,我写的是手机中所有截图的路径目录。

这是 adb 命令,我们在 Python 中怎么调用呢?

引号里写入上面的 adb 命令即可

直接用 adb 中的截图方法

直接用 adb 命令中的截图方法,格式如下。

-p 后写的是保存在手机的路径。

这两种方法有什么区别?第 1 种分了两步,先保存在电脑,再推送到自己 sdcard 手机内存。如果你现在要用这张截图,比如你要将这张图用微信发给一个好友。你会发现在手机相册里暂时找不到这张截图。手机内存和相册同步有时间上的延迟,等待时间不确定。我的 Android 手机是这样,大家可以试试自己的手机。

第2种用 adb 命令直接截图放在手机里的,我们可以直接在相册中找到,而且是显示在最新的位置,这样就很方便了。

其他截图方法探索

其实我还在探索另外一种方法。就是用安卓手机的模拟按键方法。

比如上面中的 4 表示手机中的返回按键,安卓中截图用的是 音量- 键加电源键,音量-键对应的 keyevent 是 25,电源键对应的 keyevent 是 26,把这两个放一起能到达效果吗?

 

这样不行,25 和 26 调个头也不行,keyevent 源码中看了下,也没写支持这种同时按键的,所以这种方法放弃。

keyevent 源码:

 

APP自动化测试-Appium环境搭建

pk哥阅读(128)

之前给大家分享过实战中怎么用 Python 自动化来测试渠道包或者自动化测试应用于冒烟测试或者回归测试:Python自动化测试实战-Appium测试渠道包-Jenkins发邮件。但是,很多小伙伴很不知道 APP 自动化测试的环境搭建,APP 自动化测试环境相对于 Web 来说,相对来说繁琐一些。

今天的主角是 Appium,它的官网地址如下。

什么是Appium

我们看下官网的介绍。

简单翻译一下:Appium 是一个开源的 app 自动化测试框架,适用于 native 原生 App、hybrid 混合 App 和手机 Web,它使用 Webdriver 协议来驱动 Android、IOS、Windows app。

Appium 是由 node.js 的 express 框架写的 HTTP Server。

Appium安装

Appium 安装情况我们也看下官网的介绍。

安装 node.js

第一个就是安装 node.js,因为上面说过,Appium 是由 node.js 框架写的,按照图中的命令安装 node.js。

Appium服务器安装

通过 npm 命令来安装  Appium 的服务器。

由于 npm 的镜像是国外的,可能会导致很多包下载失败,我们可以使用 taobao 的镜像先安装 cnpm,再通过 cnpm 来安装 Appium。

我们还需要安装 appium-doctor。

安装完成后把 cnpm 下的 .bin 安装路径添加到环境变量 path 中。

验证安装情况

在 cmd 中输入 appium-doctor,出现 appium-doctor 的版本信息和其他信息表示安装成功。

安装Appium客户端

接下来安装客户端,方面可视化界面操作 Appium,使用命令安装或者在官网下载客户端的包手动安装都可以。下载地址:appium-desktop

我们启动桌面版的 Appium。

host 和 port 没有其他要求的话默认就好,点击下方的 start server 来启动 Appium 服务。

Appium工作原理

Appium 的工作原理是怎么样的呢?在 Android 端,App自动化脚本把命令发送给Appium 服务端,Appium 服务端通过基于WebDriver协议,利用 Bootstrap.jar,通过调用 UiAutomator 的命令,实现 App 的自动化测试。

启动 APP

如果需要启动 APP,就 Android 端而言,我们还需要安装一个连接 App 的工具,也就是 SDK,它是 Android 自带的管理 Android App 的工具 adb。可以在官网下载:sdk-tools

下载后我们就可以用 adb 命令来操作 Android 设备了,关于 adb 的命令,上次有篇文章,专门讲到过:adb常见命令用法详解,比如我启动了模拟器,在 cmd 下输入 adb devices 命令,检查是否连接成功。

一个小例子

参数解释

上图中代码就可以通过 Appium 来启动一个 App了,我们来解释下他的参数。

这里说下怎么获取 App 的 appPackage 和 appActivity,我们先启动我们要测试的 App,然后在 cmd 命令下输入下面命令。

比如我启动了模拟器里自带的通讯录 App,输入命令后得到以下信息。

图中的 1 就是 appPackage,2 就是 appActivity。

这样,App 自动化测试环境就搭建好了,App 元素的定位方法下次在分享。

 

Python自动化测试实战-Appium测试渠道包-Jenkins发邮件

pk哥阅读(783)

什么是渠道包

我们平时如果需要下载一个 Android 的 APP,我们首先想到的是去市场平台上下载,这个平台就很多了,一般品牌的手机都有自己自带的市场,比如小米市场,华为应用市场,还有应用宝,360手机助手等很多渠道。产品上线前,为了确保各个渠道的包发布后,用户下载后功能正常,所以发布前,我们需要对各个渠道的包进行测试,渠道包怎么打此文不做讲解。比如下面的 7 个渠道的包,我们需要做的是对其进行安装后主要的功能测试。

假如你手上手机多,渠道包也不多的情况下,每台手机安装一个渠道包去人工测试是可行的,但是在手机资源不多,渠道包很多的情况下,我们就需要借助自动化去帮我们操作了。

自动化项目环境

在做渠道包验证前,我们先来看看这次项目的主要环境。

  • adb 环境
  • Appium 环境
  • 模拟器环境

adb 环境主要是操作 Android 设备的,adb 连接 Android 设备,还需要对 APP 进行安装卸载的操作。adb 是 sdk 包中的命令。

Appium 环境,我们通过 Appium 服务通过去操作 Android 系统达到自动化的目的,本文对 Appium 环境搭建不做展开,这些环境搭建以后单独写一篇 App 自动化环境搭建的文章分享,欢迎大家持续关注。

模拟器,有真机的情况也可以用真机,本文用的是夜神模拟器。用下面命令检查是否连接上设备。

如果没有连接上,可以用命令连接上。

自动化安装包并验证主功能

以上环境好了后,我们就可以对各个渠道包进行安装、验证主要功能、卸载操作。

我们把所有需要测试的取到包放在一个目录下,然后用es库里面的方法去获取这个目录下所有的文件的名称。

我们把它全部打印出来看一下效果。

用 adb 对包进行安装卸载

包名我们获取到了,接下来我们需要对包进行安装卸载操作。安装 apk 包我们用的 Appium 自带的 install_app 方法,卸载我们用 remove_app 方法。

我们先定义好启动 app 的必要参数。

然后对所有的取到包进行安装卸载的操作。

我们看到模拟器上,会有 app 不断的在安装卸载。

验证渠道包主功能

当然,我们的目的不是做安装卸载,而是安装后进行主要功能的验证,验证完后再卸载,再去安装另一个渠道包进行验证。所以,我们需要在安装之后插入验证的渠道包主功能的脚本。

验证功能的脚本大家需要根据自己的 app 写相应的脚本了。

生成报告

验证功能也完成后,我们需要生成报告。

我们需要下载生成中文报告的库:HTMLTestRunnerCN,下载后放在 Python 的安装路径下。然后导入即可。

为了让项目看起来更完整,我们用上 unittest 框架,在框架中调用生成报告的库。

unittest 框架写脚本

unittest框架做自动化测试的用法详见之前分享的文章:自动化测试-Python中unittest框架 ,我们把上面的 caps参数和 driver 放在 setUpClass 方法里。把安装、验证主功能、卸载脚本放在 test 开头的方法里。

然后我们调用刚才的 HTMLTestRunner 库生成中文报告。

这样在同级目录下就会生成一个 report.html 的报告打开,打开就可以看到自动化案例的执行情况。

发送报告邮件

接下来我们把脚本集成到 Jenkins 上面并执行完后自动把报告通过邮件形式发出来。

关于发邮件的方法,之前也分享过一篇文章:30行Python代码实现自动收发邮件,这篇文章里没有加入发送附件的功能,只能发送文本,所以我们需要在发送文本的地方略作修改。

我们需要导入可以发送附件的库:MIMEMultipart。

开头我们加入发送附件的方法,传入附件的名称做参数。

中间代码和那边文章一样,最后调用时加入刚才生成的报告的绝对路径参数。

发送邮件的方法写好后,我们在刚才的 unittest 脚本中调用此方法发送邮件。

这样,每次执行完脚本后,就把发邮件到你邮箱。

测试脚本上传到Git仓库

由于测试脚本后期维护时会有变动,我们把脚本提交到git仓库,这样使用集成工具 Jenkins 每次执行前先拉取最新的测试脚本,然后执行代码。

Git 环境的安装大家自行搜索,我是安装 Git 命令操作和可视化界面操作。

GitHub 仓库

我们先在 GitHub 上新建一个仓库,我建了一个 ChannelTest 的仓库。

Git克隆

上图中红框中是仓库的地址,我们通过可视化 git 界面这个仓库克隆到空的文件夹里。

Git文件提交

克隆后里面除了 .git 文件外没有其他文件,我们把自动化测试的脚本复制进来,然后在文件夹上右键-Git 提交-推送,Github 仓库里就会出现刚才提交的自动化测试脚本文件了。

然后,我们再把脚本集成到 Jenkins 本地服务上。

Jenkins集成

Jenkins 环境的搭建之前文章分享过:自动化测试-Jenkins本地服务环境搭建 ,这边文章用的 Jenkins war 包启动 Jenkins 服务的,每次都要 cmd 中输入命令才能启动服务。

其实还有一种启动方式,war 包启动是因为之前没有对 jenkins.msi 文件安装在本地,只是下载了 war 包,把 jenkins.msi 安装在本地,就不用每次都用命令启动了,jenkins.msi 安装包下载地址如下。

安装后直接打开默认的地址即可访问 Jenkins 了。

第一次需要安装插件之类的,这些步骤和上面文章的步骤一模一样的,请直接参照,这里不做赘述。

新建的 Jenkins 任务里我们把源码管理改成 Git,填入刚才的仓库地址。

 

构建命令中输入执行命令,先执行拉取最新代码的操作,再通过命令启动appium服务,最后执行自动化测试代码。

当然你还可以设置定时操作,参考上面那篇文章。

本文只是拿渠道包的自动化验证举例,当然,这个思路同样适用于冒烟测试和回归测试,修改相应的脚本即可。

 

自动化测试-Python读取YAML配置文件

pk哥阅读(95)

YAML是什么?

YAML是一种简洁的非标记语言。使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。YAML 是专门用来写配置文件的语言,非常简洁和强大。

更相信的解读请看百度百科:YAML

今天我们要做的就是怎么用 YAML 书写配置文件并调用。

新建 YAML文件

新建 yaml 文件很简单,在目录或者编辑器中新建一个文件,把文件的后缀改成 .yaml 就行了。

YAML 格式

yaml 格式很简单,变量名后面加一个英文冒号,冒号后赋值。

YAML 语法特点

•大小写敏感
•使用缩进表示层级关系
•缩进时不允许使用Tab键,只允许使用空格。
•缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
•冒号后面至少有一个空格
•键值包含非英文字母和数字,需用引号引起来

YAML 安装导入

要使用 YAML,我们在 Python 中先要安装它。

安装完成后导入即可。

YAML 使用

把我们的变量卸载配置文件里而不是直接写在脚本里就是为了方便后期的维护,假如说脚本里有10个地方都写了这个变量值,如果这个变量值有改动的话,那么我们需要在脚本里改动10个地方,这样很消耗人力和时间,那如果我们写在 yaml 配置文件里面,那么我们只需要改动一次配置文件的值就可以了。

简单调用

比如我们做 APP 自动化,需要填写 APP 的相关信息,我们把他写在配置文件里。

我们用 with open 先读取配置文件在输入变量名就能取到其变量值了。

层级调用

前面语法特点里说的,通过缩进来表示层级关系,而且缩进的时候不能用 Tab 键,只能用空格。比如我又多了一台设备,deviceName 下面层级关系多了一台设备名称。

要用的时候后面多一个中括号加入层级的变量名就行。

好了,以上就是 yaml 配置文件的使用,还有另一种 ini 配置文件的用法,下次再和大家分享。

 

Android自动化测试-Monkey测试

pk哥阅读(143)

什么是monkey测试

Monkey测试是Android自动化测试的一种手段,主要用于测试系统的稳定性和兼容性。

详见百度百科的解释:Monkeytest

Monkey是Google提供的一个命令行工具,可以运行在模拟器或者实际设备中。

Monkey路径

Monkey程序是Android系统自带的
路径: /system/framework/Monkey.jar
启动脚本路径:/system/bin/monkey

启动前提条件

Monkey是由adb命令启动,故需要配置adb环境(windows环境为例)
下载Android SDK,解压将SDK目录下的 platform-tools 和 tools 目录配置到系统环境变量中
打开cmd窗口,输入adb,有adb帮助信息则配置成功。

Monkey如何运行

命令格式

1、直接启动

adb shell monkey [option] <count>

2、shell 端启动

adb shell

monkey [option] <count>

保存运行log

1、保存在PC端

adb shell monkey [option] <count> > D:\monkey.txt

2、保存在手机中

monkey [option] <count> > /mnt/sdcard/monkey.txt

3、标准日志和错误日志分开保存

monkey [option] <count> 1> /mnt/sdcard/monkey.txt  2> /mnt/sdcard/error.txt

4、显示日志等级

用 -v 表示日志等级,三个 -v 是最详细的日志等级。

adb shell monkey -v -v -v 100 >f:\monkey.txt

Monkey测试详细介绍

 

Monkey 基本参数与事件参数

 

Monkey 基本参数

adb shell monkey –help

help用于打印帮助信息

adb shell monkey -v -v -v 100

-v 级别1,打印执行时的一些信息,如发送事件。

-v -v 级别2,打印详细的信息。

-v -v -v 级别2,打印最详细的信息。

Monkey 事件参数

主要事件动作参数如下:

 

Monkey发送事件频率

主要事件频率如下:

Monkey 调试参数

1、–ignore-crashes 通常,当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。

2、–ignore-timeouts 应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成

 

adb常见命令用法详解

pk哥阅读(84)

adb 命令是什么

Android 调试桥接 Android Debug Bridge,是一个 C/S 架构的命令行工具
作用:PC通过adb来操作手机,还可以进行很多手机操作,如安装软件、系统升级、运行shell 命令等。

Android 开发或者需要做自动化的测试对 adb 应该不陌生了,我们需要熟悉 adb 常见命令并用它操作手机。

adb 基本命令格式

前面三个参数什么意思呢?看下图

子命令有哪些呢?通过子命令,我们可以做复制文件到手机或者从手机复制文件到电脑,常见的安装、卸载程序的操作。

Android adb shell常用命令

通过 adb shell 进入远程 shell 端。

日常用到最常见的是打开设备上的一个 app,通过命令查看 app 的 appPackage 和appActivity,命令如下:

 

前半部分就是 appPackage,后半部分就是 appActivity。

文件操作的基础命令

 

 

文件权限相关命令与其他文件命令

学会了以上常见的 adb 命令,我们的工作效率就会大大增加了。

 

Fiddler抓包APP教程

pk哥阅读(74)

之前的爬虫项目基本上都是爬取网页信息,如今移动信息时代,海量信息移植到移动端的 APP 上面了,而且有些产品只有 APP 版本,没有网页版。要抓取 APP 上的信息,首先我们得学会调试,我们知道调试网页我们一般用浏览器自带的调试工具,APP 调试则需要借助第三方工具,也是本文要分享的工具:抓包工具。

工具选择

比较常用的工具有两个:Charles 和 Fiddler,两个工具功能大致一样。相对而言,Charles 界面更简洁,但是免费版的 Charles 每隔半小时会重启,可以用破解的 jar 包解决此问题。Fiddler 则是免费的,几年前 Fiddler 不支持 OS 系统的,貌似去年开始也支持了,所以 Fiddler 在 Windows、OS 和 Linux 上都可以免费使用,可以抓取网页和 APP信息。

Fiddler 下载安装

因 Fiddler 是免费的,而且功能强大,今天我就讲讲 Fiddler 的安装使用。

在官网选择你对应的系统下载,下载前需要填些资料,填好了点击下载即可。

抓包原理

Fiddler 抓包是在客户端和服务器之间建立一个代理服务器,监听本机发出的请求和服务器返回的响应结果。客户端的所有请求都要先经过 Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过 Fiddler 然后发送到客户端。

Fiddler设置

Fiddler 默认是只能抓取 http 网络格式的,所以我们要先设置下使 Fiddler 可以获取到 https 网络格式。首先菜单栏 Tools→ Options→HTTPS 进去设置。勾选下图中这两项。弹出是否信任的提示直接确认就可以。

然后将允许远程连接打开,菜单栏打开 Tools->Options->Connections,勾选 Allow remote computers to connect 选项,勾选时会有重启 Fiddler 后生效的提示。8888 为默认端口号,可修改,如果这个端口被占用,那就需要修改为其他空闲的端口。配置好后重启 Fiddler。

手机安装证书

要抓取到手机 APP 信息,需要把 Fiddler  证书安装到手机里。手机安装 Fiddler 证书方法有以下几种:

1、下载到电脑,通过数据线传到手机内存,点击进行安装。

2、下载到电脑,通过爱莫助手无线传到手机内存中,点击进行安装。

3、使用手机的浏览器打开 http://PC的ip:Fidder使用的端口号,点 FidderRoot certificate 下载后找到刚下载的证书,安装证书。

手机设置

我们先保证手机和电脑都处于同一个网络,先查看下本机的 ip 地址,可以 cmd 内通过命令 ipconfig 获取 ip 地址,也可以在 Fiddler 右上角,鼠标移动到 online 上查看 ip 地址。

再设置手机,这里我以 Android 手机为例(苹果手机的更简单),打开和电脑连接的同一网络,点击修改网络,勾选显示高级选项,将代理选项设置为手动,输入刚才查到的电脑 ip 和 Fiddler 刚设置的端口号,保存网络。

手机抓包

上面的都设置好后,我在手机上打开了 pk 哥上篇公众号文章,这是 Fiddler 就会抓取到相应的数据,右边上部分显示的是 Request 信息,包括爬虫时用到的请求链接信息,右边下部分显示的是 Response 返回信息,返回显示我切到 WebView 栏直接显示的就是手机上打开的页面。

对于前端开发和测试,还有一个功能会经常用到,这里提一下,就是断点功能,上面讲 Fiddler 的原理中讲到,所以的请求和返回都会经过 Fiddler,所以测试中我们可以修改请求和返回来测试我们需要的场景。在菜单栏 Rules Automatic–>Breakpoint 中设置请求断点或者返回断点。

设置断点后再操作网页时,Fiddler 就会在这个请求或者返回前停留,等待你修改完成后点击提交后才完成整个操作。下图是我设置了请求断点,出现红色标志的图标表示断点成功,等待修改提交的状态。

这个功能对于开发或者测试在调试某些场景的时候很有用,有兴趣的同学可以学习下。

PS:抓包调试完后手机上记得把代理选项由「手动」改成「无」,不然 Fiddler 工具关闭后,手机上会出现网络异常之类的报错。

今天分享的是准备工作,下次就给大家分享一个实战爬虫 APP 的案例。

今天的内容就分享到这里,希望对你有帮助,祝进步!

 

自动化测试-Jenkins本地服务环境搭建

pk哥阅读(130)

目录

  • 前言
  • Jenkins作用
  • 下载安装Jenkins
  • 启动 Jenkins
  • 新建Jenkins任务
  • 配置Jenkins任务
  • 效果展示
  • 后记

前言

上周五快下班的时候,约朋友聚聚,朋友却说晚上要加班执行脚本,白天在开发测试阶段,环境不稳定,晚上稳定些,他还说以前都是这样做的,别人下班他就开始忙起来。我一听就乐了,用工具就可以定时帮你执行啊,执行完后还可以把执行结果通过邮件发给你。你不会用工具,难怪你经常加班。

所以今天要分享的是一个可以提高工作效率的集成工具:Jenkins,它是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Jenkins作用

  • 持续的软件版本发布/测试项目。
  • 监控外部调用执行的工作。

下载安装Jenkins

在 Jenkins 官网下载 Jenkins 包,根据系统下载对应 zip 包(我用的是 win10 系统),建议下载 LTS 版本,Weekly 版本每周都会更新 ,更新频率太快。解压后安装,安装完成后,Jenkins 服务就成功安装在本地了。下载地址如下:

启动 Jenkins

上面安装完成后会自动启动 Jenkins,默认地址是:http://localhost:8080/,第一次启动的话,需要根据其步骤解锁 Jenkins,然后安装基本的插件。

插件完成后会让你创建管理员账户等信息,完成后进入 Jenkins 新用户页面。

新建Jenkins任务

点击左侧「新建任务」按钮新建 jenkins 任务,输入任务名称,选择任务类型保存。

配置Jenkins任务

根据自己的需求对任务进行配置,我们先从简单的需求开始,需求:每天的凌晨 3 点 APP 自动签到。这个需求的代码详见上篇文章。

1、源码管理

配置 jenkins 获取源码的方式,有 Git 和 Subversion 管理方式,我今天获取本地路径的源码,所以我选择第一个 None 选项。

2、构建触发器

这里配置触发脚本运行的条件,这里我们选择每天定时执行,选择 Build periodically。

定时构建语法(五颗星,中间用空格隔开)

第一颗 * 表示分钟,取值 0~59;

第二颗 * 表示小时,取值 0~23;

第三颗 * 表示一个月的第几天,取值 1~31;

第四颗 * 表示第几月,取值 1~12;

第五颗 * 表示一周中的第几天,取值 0~7,其中 0 和 7 代表的都是周日。

举几个例说明下:

① 每30分钟构建一次:

② 每2个小时构建一次

③ 每天早上8点构建一次

④ 每天的8点,12点,22点,一天构建3次

我想你应该已经知道每天凌晨 3 点的配置方法了。

3、增加构建步骤

这个步骤需要区分系统,windows 系统和 Linux 系统选项不同,我以 windows 系统举例。

在命令框中输入 pybot 命令,后面的参数是脚本的绝对路径。

配置好后点击应用或者保存,这时是不是就可以了,会每天凌晨 3 点定时执行你的脚本,从而做到在 APP 中自动签到吗?如果是操作浏览器的话到这里就结束了,我们现在要操作的是 APP,上篇文章中讲到过,我们需要借助第三方工具 Appium 来启动,难道我们需要先启动 Appium 客户端才行吗?当然不用,我们可以在命令框用命令来启动 Appium。

启动 Appium 的命令是 @start appium,后面需要带上启动的设备 id 信息,Appium 的 ip 和端口信息等。所以修改后的命令如下图。

效果展示

最后我们确保电脑连接上了模拟器,我们手动启动 Jenkins 任务试试效果。

对于大项目,还是建议把 Jenkins 服务部署在服务器中,这样大家都在同一个 Jenkins 服务环境下,比如说对于公司的测试脚本、运维自动部署脚本、大量批处理脚本。

对于我们自己的薅羊毛的小项目,比如我这次是把 Jenkins 服务放在了本地,为了操作 APP,把安卓模拟器设置成开机自启动文件(如果只是操作浏览器,这一步忽略),上班打开公司电脑或者下班打开家庭电脑,模拟器就会自启动。

这样的话,准备工作就完成了,Jenkins 任务设置好定时执行的时间就可以了。一般公司的项目我设置为中午吃饭时间让 Jenkins 自动执行,家庭电脑设置晚上某个时间点执行,这样就可以「高枕无忧」了,还用得着加班执行代码或者手动薅羊毛么?

后记

用了 jenkins 工具后,你中午吃饭时间你的脚本已经帮你做了很多回归测试和自动化部署工作,这样你就可以早点下班去 happy 了。等等,执行时如果有些案例失败会有报告吗?有的,Jenkins 任务里有构建后设置的选项,可以选择邮件配置,这块配置的内容较多,就放到下次再分享了。

今天的内容就分享到这里,希望对你有帮助,祝进步!

 

APP自动化测试-robotframework框架做APP自动化测试

pk哥阅读(81)

前两篇文章讲到了自动化框架 RF 的搭建和自动化操作你的浏览器。还没上车的戳下面查看。

如今是智能手机的时代,我们工作和生活中的大部分都伴随着 APP,APP 给我们的生活的带来了便利。工作中有些公司的 APP 产品需要自动化测试。生活中,你是不是经常忘记在有些 APP 上签到或者薅羊毛,今天 pk 哥就教你怎么自动化操作你的 APP。

本文教大家用脚本启动了安卓模拟器中的 APP 并进行签到操作。

 

内容概要

  • 初识 adb 命令
  • 安卓模拟器安装
  • Appium 安装和启动
  • 第三方库appiumlibrary安装
  • 自动化打开APP签到

初识 adb 命令

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。

为什么需要用 ADB 命令,因为我们需要知道电脑是否正常连接上了手机或其他移动端设备。

本次需要用到的简单命令如下:

1、查询已连接设备/模拟器命令:

2、启动 adb server 命令:

一般无需手动执行此命令,在运行 adb 命令时若发现 adb server 没有启动会自动调起。

3、停止 adb server 命令:

adb 命令安装包下载地址:

下载 ADB Kits (525 KB) 并把 adb.exe 路径配置到环境变量 path 中。

通过命令来验证 adb 是否安装成功,显示 adb 的版本表示 adb 命令正常可用。

安卓模拟器安装

为了方便,这次我选择的安卓模拟器,安卓模拟器可以让手机应用程序运行在电脑上的软件,它能在电脑上模拟安卓手机系统。对于安卓移动端的自动化,在没有真机的情况下,用模拟器还是比较好的。当然你也可以通过数据线连接你的真实移动设备。

模拟器连接电脑步骤如下:

1、右键桌面模拟器图标,选择属性,查看模拟器安装路径并复制该路径。

2、cmd 窗口或者 mac 的 Terminal 下输入以下命令,如显示 already connected to 127.0.0.1:62001表示连接成功,命令中的端口是可以变的,不要和其他的冲突就行了。(左右滑动查看全部)

3、输入adb devices 命令检查下,如果连接的列表中有刚才的设备表示已连接成功。(左右滑动查看全部)

Appium 安装和启动

操作移动端 APP,我们得需要安装一个工具,这个工具叫 Appium,什么是 Appium 呢?

Appium 是一个自动化测试开源工具,支持 iOS 和 android 平台上的移动原生应用、移动 Web 应用和混合应用。Appium 是一个跨平台工具,它允许测试人员使用同样的接口、基于不同的平台写自动化测试代码,大大增加了测试套件间代码的复用性。

1、在 Appium 官网下载并安装 appium。

2、打开 appium 进行相应配置,安卓设备设置和基本设置两个页面,配置内容见图中圈起来的部分。

设置完成后点击右上角启动按钮启动 Appium。

出现 debug 信息表示启动成功,启动失败的话会有报错信息。

安装 SDK

已安装 SDK 的可以跳过,安装前确认电脑有 Java 环境,否则先安装 Java,Java 环境安装好后,如果忘记了 SDK 的位置,可以通过下面命令来查看。

在路径中找到 SDK Manager 可执行文件,双击打开后进行如下配置。

1、在 SDK Manager 最上方的工具条中找到 tools 打开进入 options。(左右滑动查看全部)

2、在 SDK Manager 中勾选 tools 下的 android SDK tools 和 Android SDK Platform-tools 这两个选项,点击下方 Install xx packages。等待安装。

3、添加环境变量,path 的末尾添加  SDK 安装路径和 SDK 安装路径 /platform-tools,这两个路径都添加好。

第三方库appiumlibrary安装

安装第三方库 appiumlibrary,用 pip 命令进行安装。

在 Pycharm 解释器中安装这个包,在 Library 导入这个库。

库名书写注意大小写,不然会报错。

自动化打开APP签到

为了方便,这次我选择的移动端是安卓模拟器,我在「夜神」安卓模拟器上装了「有道云笔记的」APP。

我们先要获取我们需要启动的 APP 的信息,包括 appPackage 和 appActivity,我们打开这个 app 的同时,终端下输入以下命令定位当前的 Activity 即可查看,以下是我打开模拟器上 app 输入命令时获取的信息。(左右滑动查看全部)

以上信息前部分 com.youdao.note 为 appPackage,整个部分但是需要去掉「/」为 appActivity:com.youdao.note.activity2.SplashActivity。

信息获取了,我们就用 AppiumLibrary 库中的启动 APP 的方法 Open Application 来打开对应的 APP。

我来解释下这个关键字的后面的主要参数的含义:

  • http://localhost:4723/wd/hub:Appium所在的url路径(这里appium搭建在本机,所以url格式固定不变)
  • platformName:被测的平台名称,Android或ios。
  • deviceName:设备名称,即运行得模拟器或真机的设备型号。
  • appPackage:app 的包名。
  • appActivity:app 的 activity 名。

启动之后我们需要定位 APP 中元素的属性,上篇文章中浏览器可以用自带的工具,定位 APP 我们可以用 SDK 中自带的 uiautomatorviewer 工具,这个工具我的部分路径是 Android\android-sdk\tools\uiautomatorviewer.bat。

启动之后点击捕捉页面按钮就可以获取页面元素属性了。

我们还是和之前说的原则一样,有 id 属性就用 id 来定位。点击元素还是用的 上篇文章讲到的  Click Element 方法。这样你的 APP 就会在你的脚本操作下进行指定的操作了。

如果,你真要做到凌晨三点自动签到的话,你需要借助集成工具 jenkins,这个集成工具可以设置自动执行脚本的时间。这个工具下次再给大家详细讲解。

今天的内容配置项比较多,demo 的脚本不多,如需要脚本的话,在公众号后台回复「app」获得脚本

今天的内容就分享到这里,希望对你有帮助,祝进步!