版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
此文章来源于项目官方公众号:“AirtestProject”

前言

今天我们将完成1个实操,来实现APP自动登录和退出的流程。

示例APP为:网易新闻APP;
所用IDE版本为:1.2.3。

要求

① 报告中所有图片要有较高的精度

② 登录成功和退出成功必须有断言

③ 在报告中显示出哪部分步骤用于登录,哪部分步骤用于退出

完成登录流程

① 打开网易新闻APP

② 在底部菜单 “我” 点击登录

③ 清除历史账号信息

④ 输入账号密码

⑤ 点击 “开始使用” 完成登陆操作

⑥ 利用出现头像图片来断言登录成功

# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *# 设置全局图片精度为75
ST.SNAPSHOT_QUALITY = 75from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
auto_setup(__file__)log("以下步骤完成登录操作")# 利用包名打开网易云新闻
start_app("com.netease.newsreader.activity")
sleep(2.0)# 点击底部菜单“我”
poco("android.widget.LinearLayout").offspring("android:id/tabs").child("android.widget.LinearLayout")[4].offspring("com.netease.newsreader.activity:id/h6").click()
# 点击“注册/登录”
poco("com.netease.newsreader.activity:id/ans").click()# 点击并清空账号输入框
poco("com.netease.newsreader.activity:id/af_").click()
sleep(1.0)
poco("com.netease.newsreader.activity:id/af_").set_text(" ")
sleep(1.0)# 输入账号
poco("com.netease.newsreader.activity:id/af_").set_text("1882610xxxx")
# 选择第一种邮箱格式
touch((411,560))
sleep(1.0)# 输入邮箱密码并点击“开始使用”
poco("com.netease.newsreader.activity:id/ag5").set_text("1111")
poco("com.netease.newsreader.activity:id/ag7").click()
sleep(2.0)# 存在头像图片则断言登录成功
assert_exists(Template(r"tpl1585550255116.png", record_pos=(-0.337, -0.55), resolution=(1080, 1920)), "登录成功")
知识点

① 设置图片精度

当 Airtest版本≥1.1.2 时,我们可以自定义截图压缩精度。Airtest默认取 10 ,如果希望获得更高精度的图片可以将值改为 75 :

# 设置全局的截图压缩精度
import airtest.core.api import *
ST.SNAPSHOT_QUALITY = xxx  # [1, 99]# 设置单张截图的压缩精度
snapshot(quality=my_quality)

② 用 start_app("包名") 打开APP

当我们想要打开某个APP时,除了可以使用 icon点击 或者 Poco的点击 之外,我们还可以使用 start_app("包名") 非常便捷地打开1个APP。获取应用包名的方式在网上有很多,甚至直接搜索“xx应用的包名”也很容易获取到。

③ 使用坐标点击

在上述示例中,我们输入邮箱账号的前缀以后,系统给我们提供了多种邮箱格式以供选择,但写脚本的时候你会发现,使用poco无法很好地识别到这些控件;使用图像识别,又因为几乎是纯文字,很有可能识别效果并不好;这时候可以考虑使用坐标点击,脚本简洁,效果还好。

完成退出流程

① 点击 “设置” ,在 “设置” 中定位到 “退出登录”

② 点击 “退出登录” ,并点击 “确认退出” 的弹窗

③ 利用出现 “登录” 按钮来断言退出成功

log("以下步骤完成退出登录操作")
# 点击设置
poco(text="设置").click()# 下滑找到“退出登录”按钮并点击
swipe(Template(r"tpl1585549988205.png", record_pos=(-0.252, -0.12), resolution=(1080, 1920)), vector=[-0.0957, -0.2859])
poco("com.netease.newsreader.activity:id/bn4").click()# 点击弹窗中的“确认退出”
poco("com.netease.newsreader.activity:id/apz").click()# 存在登录按钮则断言退出成功
assert_exists(Template(r"tpl1585550042580.png", record_pos=(-0.003, -0.414), resolution=(1080, 1920)), "退出成功")
知识点

① 使用 log(str_msg) 在报告显示信息

我们想在报告中区分,哪部分步骤是用于登录,哪部分步骤是用于退出的,这时候可以利用 log(str_msg) 来完成,只需要在 log() 方法里面传入你想表达的字符串即可。

② 混合使用Airtest和Poco脚本

有些同学提问:脚本里面可不可以混用Airtest和Poco脚本?答案当然是可以的,因为Airtest和Poco都是基于python的测试框架,只要运行环境中存在这俩个库,都是可以根据实际需要随意混用的。

报告

最后我们来查看下运行报告,可以看到登录和退出流程都是成功的,步骤标注点显示也很清晰:


Airtest官网:http://airtest.netease.com/
Airtest教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b

用Airtest和poco实现APP自动登录和退出相关推荐

  1. iOS App 自动登录的安全性分析

    转自http://bobao.360.cn/learning/detail/324.html 引子 Cookie 有时也用其复数形式Cookies, 指某些网站为了辨别用户身份.进行session跟踪 ...

  2. 【Android】基于Airtest实现大麦网app自动抢票程序

    0x01 缘起 疫情结束的2023年5月,大家对出去玩都有点疯狂,歌手们也扎堆开演唱会.但演唱会多,票一点也不好抢,抢五月天的门票难度不亚于买五一的高铁票.所以想尝试找一些脚本来辅助抢票,之前经常用s ...

  3. 使用token实现在有效期内APP自动登录功能

    实现此功能的场景是在当下用户对手机APP体验要求高,并且相对安全前提的推动下诞生:当你下载了一个QQ,微信第一次进行了账号和密码的登录,你从此以后打开应用免去了你每日打开应用都要输入账号跟密码的痛苦过 ...

  4. android app 自动登录,Android APP首次登录和之后自动登录流程

    Android APP首次登录和之后自动登录流程 Android APP首次登录和之后自动登录流程 App登陆保存数据流程 App因为要实现自动登陆功能,所以必然要保存一些凭据,所以比较复杂. App ...

  5. 移动端APP第一次登录和自动登录流程

    App登陆保存数据流程 App因为要实现自动登陆功能,所以必然要保存一些凭据,所以比较复杂. App登陆要实现的功能: 密码不会明文存储,并且不能反编绎解密: 在服务器端可以控制App端的登陆有效性, ...

  6. airtest adb 远程连接_使用Airtest超快速开发App爬虫

    想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你就能抓到,最快只需要2分钟,兼容 Unity3D.Cocos2 ...

  7. 一篇文章带你快速上手Airtest和Poco

    前言 本文档将演示使用AirtestProject专用的编辑器AirtestIDE,编写Airtest+Poco自动化脚本的全流程.强烈建议新手从本文档开始阅读,并使用AirtestIDE上手脚本编写 ...

  8. python快速开发app_python 使用Airtest超快速开发App爬虫

    使用Airtest超快速开发App爬虫 想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你就能抓到,最快只需要2 ...

  9. 全面超越Appium,使用Airtest超快速开发App爬虫,你会吗?

    全面超越Appium,使用Airtest超快速开发App爬虫 想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你 ...

最新文章

  1. max_semi_space_size 设置值与实际值不一致的原因分析
  2. Log4cplus 1.0.3 Android版本编译
  3. Leetcode周赛复盘——第 276 场力扣周赛
  4. 《VMware虚拟机实用宝典》繁体中文版封面
  5. C#笔记16 多线程和同步
  6. 设计模式(三)结构型模式
  7. Day9--Python--函数入门
  8. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 09课
  9. 踩坑日记(二):记一次线上业务—Redis 的缓存雪崩
  10. Strusts2笔记6--拦截器
  11. eoe android Studio 安装使用教程
  12. 测试远程服务器udp端口,udp端口怎么测试 - 全文
  13. win7装matlab教程,win7系统怎么安装matlab软件(图文教程)
  14. Python学习之道-烤机测试日志Log分析统计
  15. 杭州电子科技大学计算机考研复试分数线,2021年杭州电子科技大学考研分数线及复试名单公布...
  16. Java黑皮书课后题第2章:2.16(几何:六边形面积)编写程序,提示用户输入六边形边长,然后显示它的面积
  17. 职业生涯自我规划五步法
  18. c++成员变量初始化
  19. mysql查看表存不存在
  20. addons软件下载_addons手机正版下载|

热门文章

  1. Backlight 背光
  2. S7-1200数据类型
  3. 集团企业实验室信息化建设必经的之路
  4. 配置 PyCharm for Linux 设置启动图标 pycharm-edu-2021.3.1 Ubuntu 18.04.6 LTS
  5. Linux系统磁盘空间不足解决办法
  6. html阴影 渐变,CSS 阴影 轮廓 渐变详解
  7. BUUCTF-[QCTF2018]X-man-Keyword
  8. VC6.0 project settings
  9. python获得股票数据并画图
  10. flutterdio_强大的Flutter http请求库dio