airtest.py高阶运用

简单源码

# -*- encoding=utf8 -*-
# -*- encoding=utf8 -*-
__author__ = "zhouzongxin"""""""import random
import osfrom airtest.core.api import *
from airtest.cli.parser import cli_setup
from poco.drivers.android.uiautomation import AndroidUiautomationPocox = os.popen("adb devices").readlines()
if len(x) == 3:device_id = x[1].split(" ")[0].split("\t")[0]print(device_id)poco = AndroidUiautomationPoco(force_restart=False, use_airtest_input=True, screenshot_each_action=False)poco.device.wake()init_device(platform="Android",uuid=device_id)while True:poco('com.twitter.android:id/room_action_react').click()choice = random.choice(["爱心", "拍手"])print(choice)poco(choice).click()

一、安装依赖包


pip install -U airtest # airtest测试框架
pip install pocoui # poco测试框架

二、相关操作


1、安装卸载apk
install("path/to/your/apk") # 安装APK
uninstall("package_name_of_your_apk") # 卸载APK2、链接设备
init_device(platform="Android",uuid="9be9e722") # 连接android设备9be9e722
init_device(platform="Windows",uuid="9be9e722")  # uuid表示Android设备的序列号,Windows的句柄,iOS的uuid
connect_device('Android:///') # 本地android设备
connect_device('Android:///9be9e722') # 9be9e722为手机序列号,可通过adb devices命令查看
connect_device("Android://127.0.0.1:7555")
connect_device("Windows:///")  # 连接到windows桌面
connect_device("Windows:///9be9e722")  # 连接到句柄9be9e722的windows应用
connect_device("iOS:///127.0.0.1:8100")  # 连接iOS 设备3、打开APP
start_app(package, activity=None)4、停止APP
stop_app(package)

三、poco基础操作


1、poco初始化
from poco.drivers.android.uiautomation import AndroidUiautomationPocopoco = AndroidUiautomationPoco(force_restart=False,use_airtest_input=True, screenshot_each_action=False)
poco.device.wake() # 执行唤醒:进入主页,启动Yosemite2、UI元素定位、基本选择器
poco('node_name') # 默认第一个参数为节点名# 也可以通过name 或者其它属性定位
poco(text='行情', type='android.widget.TextView')3、子节点和子孙节点定位:
# select by direct child/offspring
poco("android:id/tabs").child("android.widget.RelativeLayout")[1].offspring(text="行情").click() # 具有多个元素的情况下,可以使用索引,索引从0开始。4、UI 元素操作--点击UI元素
poco('name').click() # 默认点击UI元素锚点(左上角)
poco('name').click('center') # 点击中心点
poco('name').click([0.5, 0.5])    # 点击中心点
poco('name').focus([0.5, 0.5]).click()  # 点击中心点5、点击坐标
poco.click([0.5, 0.5])  # 点击屏幕中心点
poco.long_click([0.5, 0.5], duration=3) # 长按6、set_text文本输入
text = 'test'
poco('name').set_text(text) # 相文本框name输入文本

相关文档:https://poco-chinese.readthedocs.io/zh_CN/latest/source/README.html#example

airtest框架运用

Airtest官网:https://airtest.doc.io.netease.com/

1、Airtest页面

(1)手机连接USB,点击刷新ADB按钮,点击connect进行连接,右侧会出现连接的手机的画面。


(2)点击poco辅助窗,选择Android(手机安装两个文件“Yosemite”“pocoservice”),然后脚本编辑窗会出现poco mode has changed…positon?yes no 。此时选择yes

(3)出现下方两行代码即可录制自动化了
#安卓实例
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
#poco实例化
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

2、Airtest辅助窗
touch()通过截图来 点击某个位置(截图后图片会存储在当前跟目录下)

wait ()等待某个指定的图片元素出现
swipe() 从一个位置滑动到另外一个位置

exists()执行之前提前判断对应图片是否存在

text ()调用输入法输入指定内容

keyevent ()输入某个系统按钮键的操作

snapshot ()对当前画面截一张图
sleep()延迟时间(s),也可以用python内的“time.sleep(10)”

assert_exists()来断言一张图片存在当前画面中

assert_not_exists()来断言不存在于当前画面中。
assert_equal()断言传入的两个值相等
assert_not_equal()断言传入的两个值不相等。

Airtest--基本使用(简易描述)相关推荐

  1. 018圆锥运动的简易描述

    设在任意t时刻,动坐标系b系绕参考坐标系r系 o x r y r ox_ry_r oxr​yr​平面上的单位转轴 u ( t ) = [ c o s Ω t s i n Ω t 0 ] u(t)= \ ...

  2. 李宏毅强化学习完整笔记!开源项目《LeeDeepRL-Notes》发布

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale开源 核心贡献者:王琦.杨毅远.江季 提起李宏毅老师,熟悉强化学习的读者朋友一 ...

  3. Java中的队列同步器AQS

    一.AQS概念 1.队列同步器是用来构建锁或者其他同步组件的基础框架,使用一个int型变量代表同步状态,通过内置的队列来完成线程的排队工作. 2.下面是JDK8文档中对于AQS的部分介绍 public ...

  4. 27 网络通信协议 udp tcp

    四 网络通信协议(互联网协议) 第二天再讲这里,大家第二天再看这里把~~~ 网络通信协议是网络传输的灵魂,非常重要,协议即准则,准则是传输消息的格式要求,那么我们从电脑上发出一个消息,到底是以什么样的 ...

  5. 万级K8s集群背后etcd稳定性及性能优化实践

    作者:唐聪, 腾讯 CSIG 后台开发工程师 本文旨在帮助大家了解 etcd集群场景下稳定性与性能优化经验引的容量,避免给后面留坑. 背景与挑战 随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云 ...

  6. NEO改进协议提案9(NEP-9)

    文章目录 摘要 动机 详述 原生资产转移URI URI键 可用URI 键 映射 NEO 交易属性键 参考原生资产地址 例子 智能合约调用URI NEP-5 token 转移 URI Keys 例子 原 ...

  7. IPv6下DHCPv6协议(RFC3315)详细介绍

    DHCPv6 详细介绍 前言 一.基础部分 二.DHCPv6的进阶 1.相关术语/概念(Term) 2.几个相关的算法/规则 3.Message交换过程详述 4.基础的几个option介绍(RFC33 ...

  8. SpringBoot发送Http请求-RestTemplate

    SpringBoot发送Http请求 [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 大数据代码案例地址: https://git ...

  9. 抖音素材哪里收集_抖音短视频的内容素材从哪里来,抖音内容素材哪里收集

    抖音短视频APP上的短视频,实在可以统分为两类:常规视频,以及爆款视频.常规视频保证账号的活跃,爆款视频决定账号的高度. 如何才能持续产出爆款视频,带动账号增粉呢? 今天就带给大家一个十分实用的方法- ...

最新文章

  1. P1209 修理牛棚
  2. [Z]图灵奖获得者Richard Karp讲述Berkeley CS的发展史
  3. wsl 或者window terminal 下出现Java 14 switch expressions unrecognized解决方法:升级java jdk到14 or later
  4. QInputDialog Multiple Inputs 输入多个变量的对话框
  5. C++异常(exception)第一篇--综合讲解
  6. 【APICloud系列|33】通过程序循环数据集合的时候闭包加入imageCache方法
  7. 汉语语法分析的重点是_语法特定句式 |现代汉语专题研讨(15)
  8. [Python] Different ways to test multiple flags at once in Python
  9. jmeter之自定义java请求性能测试
  10. LeetCode题目Java代码解答 (详细解释!!!)
  11. 解决SQLPLUS无法使用上下箭头
  12. Python异方差的检验与修正
  13. 电脑运行MATLAB直接关机,Matlab相关-----matlab跑完程序后自动关机
  14. java中使用javac编译时报错:未报告的异常 必须对其进行捕捉或声明以便抛出
  15. skp与卫星地图和倾斜摄影模型相结合,让SKP模型在地图上活起来 !
  16. matlab MAM1算法和FPGA实现
  17. 养兔场 网站上的个人介绍
  18. MSCI公布2020年度市场分类评审结果
  19. 对某安卓应用进行分析爬取课表数据制作懒人课表(二)
  20. 计算机毕设Python+Vue悠哈出租车管理系统(程序+LW+部署)

热门文章

  1. 视觉SLAM中的BA
  2. Queue 中 add() 和 offer() 区别
  3. 饿了么移动基础设施建设
  4. python字典排序并输出_对Python的字典进行排序
  5. 微信小程序分类及详情信息模块的分析
  6. 一个元素纯CSS实现开关按钮【介绍box-shadow、单边或多重阴影、appearance属性】
  7. slice()的用法
  8. Java中的canonical name、simple name和class name
  9. 程序员编程命名指导手册
  10. 基于SSM校园二手商城系统的设计与实现【毕业设计项目】