【Termux Python3.11开发】安装opencv-contrib-python后终于可以尝鲜airtest,poco

2023-11-19

无意看到airtest的一些介绍,正好在找一些工具,Python自动化的轮子,好放在Termux环境下进行测试效果如何,经过一些时间的折腾,总算顺利解决,安装好几个相关的库

点击链接加入群聊【Termux友情赞助群】:897177804

pip install -U airtest -i https://pypi.mirrors.ustc.edu.cn/simple/
pip install pocoui -i https://pypi.mirrors.ustc.edu.cn/simple/

将adb设备激活可见完成,发现运行得到以下结果,将**/data/data/com.termux/files/usr/bin/adb的可执行程序,进行替换/data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb**问题解决

OSError: [Errno 8] Exec format error: ‘/data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb’

找了些示例,测试成功,这次测试的代码主要还是使用shell方式,但看中的是图色识别自动化功能,以后再测试,python运行代码相对其它方式,除了功能强大,稳定运行性也是最重要的,这才是替换一些自动化脚本软件最大的原因.

from airtest.core.api import connect_device
from airtest.core.api import G
from airtest.core.api import *
from poco.drivers.android.uiautomation import AndroidUiautomationPoco

# dev1 = connect_device("Android://127.0.0.1:5037/127.0.0.1:5555")
dev2 = connect_device("Android:///")
poco = AndroidUiautomationPoco(dev2)

poco('com.google.android.calculator:id/digit_1').click()
poco('com.google.android.calculator:id/op_add').click()
poco('com.google.android.calculator:id/digit_1').click()
poco('com.google.android.calculator:id/eq').click()

# 获取控件的“text”属性值
# result = poco('com.google.android.calculator:id/formula').get_text()
result = poco("com.google.android.calculator:id/formula").attr("text")

try:
    assert_equal(result, '21', '1+1=2 ^^')
except AssertionError:
    print("按钮值断言失败")

print("运行结束")

以下是代码运行之后的调试输出信息

/data/data/com.termux/files/home/.virtualenvs/Termux/bin/python /data/data/com.termux/files/home//tmp/pycharm_project_272/actuon_ui/airtest/1.py 
[22:01:57][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb devices
[22:01:57][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb devices
[22:01:57][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 get-state
[22:01:57][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 wait-for-device
[22:01:57][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 shell getprop ro.build.version.sdk
[22:01:57][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 shell dumpsys activity top
[22:01:58][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 shell dumpsys package com.netease.open.pocoservice
[22:01:58][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 forward --no-rebind tcp:19025 tcp:10080
[22:01:58][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 forward --no-rebind tcp:15275 tcp:10081
[22:01:58][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 shell am start -n com.netease.open.pocoservice/.TestActivity
[22:01:58][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 shell am instrument -w -e debug false -e class com.netease.open.pocoservice.InstrumentedTestAsLauncher com.netease.open.pocoservice/androidx.test.runner.AndroidJUnitRunner
按钮值断言失败
运行结束
[22:02:10][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 forward --remove tcp:19025
[22:02:10][DEBUG]<airtest.core.android.adb> /data/data/com.termux/files/usr/lib/python3.11/site-packages/airtest/core/android/static/adb/linux/adb -s 127.0.0.1:5555 forward --remove tcp:15275

进程已结束,退出代码0

在这里插入图片描述

测试使用的软件:com.google.android.calculator.apk
以及代码,放在下载中
点击下载】https://download.csdn.net/download/hexinbo/88111861

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Termux Python3.11开发】安装opencv-contrib-python后终于可以尝鲜airtest,poco 的相关文章

  • 不能在jinja2宏中使用current_user?

    我使用 Flask Login 它提供了current user模板中的对象 我想编写一个宏来显示评论表单或登录链接 具体取决于用户是否登录 如果我直接在模板中使用此代码 它会起作用 if current user is authentic
  • Python - 定义常量列表或字典的最佳/最简洁的方法

    第一次使用堆栈溢出 我很高兴来到这里 简介 我最近开始了 Python 编程世界的神奇冒险 我喜欢它 现在 在我从 C 语言的尴尬过渡中 一切都进展顺利 但我在创建与标头文件 h 同义的内容时遇到了麻烦 问题 我有中等大小的字典和列表 大约
  • 我无法使用 Python 和 Facebook Marketing API 获取所有 Facebook 营销活动的统计信息

    我正在尝试检索以下指标 date campaign name impressions clicks spend 在我的 Facebook 帐户中的所有活动中 但显然我编写的脚本仅返回某些活动的统计数据 而不是全部 它仅返回大多数营销活动的营
  • Django REST Framework:无法使用视图名称解析超链接关系的 URL

    我已经广泛研究了这个相当常见的问题 但没有一个修复对我有用 我正在 REST 框架中构建 Django 项目 并希望使用超链接关系 用户可以拥有许多独立的汽车和路线 路线是位置的集合 这些是我的序列化器 class CarSerialize
  • Python3如何安装.ttf字体文件?

    我想使用 python3 更精确的 Python 3 6 代码在 Windows 10 上安装 ttf 字体文件 我用谷歌搜索 但我发现的唯一的就是这个使用python在windows上安装TTF字体 https stackoverflow
  • 熊猫 style.background_gradient 忽略 NaN

    我有以下代码来转储数据帧results到 HTML 表格中 这样的列TIME FRAMES根据seaborn 的颜色图进行着色 import seaborn as sns TIME FRAMES 24h 7d 30d 1y Set CSS
  • 不使用 graphviz/web 可视化决策树

    由于某些限制 我无法使用 graphviz webgraphviz com 可视化决策树 工作网络与另一个世界是封闭的 问题 是否有一些替代实用程序或一些 Python 代码用于至少非常简单的可视化可能只是决策树的 ASCII 可视化 py
  • Python控制台默认十六进制显示

    我在 Python 控制台中做了很多工作 其中大部分都涉及地址 我更喜欢以十六进制形式查看地址 So if a 0xBADF00D 当我简单地输入Python gt a进入控制台查看其值 我更喜欢 python 回复0xBADF00D代替1
  • 自定义信号的声明

    在 Qt 中 我们可以通过将自定义信号设为静态变量来创建它们 然后我们使用self signame反而classname signame 这样就在类中创建了一个实例变量 我想了解这种模式之外的理论 这是我尝试过的一些伪代码 这些伪代码已记录
  • 如何使用子进程打开新的浏览器选项卡?

    我正在打开一个新的 IE 窗口 subprocess Popen r os environ PROGRAMFILES Internet Explorer IEXPLORE EXE Call URL 当 IE 关闭时这很好 但即使打开它也会生
  • 将 Python 控制台集成到 GUI C++ 应用程序中

    I m going to add a python console widget into a C GUI below some other controls 许多类将暴露给 python 代码 包括一些对 GUI 的访问 也许我会考虑 P
  • 计算二维笛卡尔坐标中不规则形状的边界

    我正在寻找一种计算不规则形状边界的解决方案 Lats take a look at Square example 如果我有Minimum x and y and Maximum x and y like MaxX 5 MinX 1 MaxY
  • 使用 Matplotlib、PyQt 和 Threading 进行实时绘图导致 python 崩溃

    我一直在努力研究我的 Python 应用程序 但找不到任何答案 我有 PyQT GUI 应用程序 它使用 Matplotlib 小部件 GUI 启动一个新线程来处理 mpl 小部件的绘图 恐怕我现在通过从另一个线程访问 matplotlib
  • wxPython:更新wx.ListBox列表

    我在 python 程序中有一个 wx ListBox 我不想在 wx Timer 更新时更改其中的列表 我的计时器正在工作 我只是不知道如何更改它显示的列表 这是一个例子 http www daniweb com code snippet
  • 找到图像特征宽度的正确方法和Python包

    输入是一个在黑色背景上带有彩色 抱歉 垂直线的光谱 给定该带的近似 x 坐标 用 X 标记 我想找到该带的宽度 我对图像处理不熟悉 请引导我前往正确的方法图像处理和Python图像处理package也能起到同样的作用 我认为 PIL Ope
  • Numba jitclass 不适用于 python 列表

    我在用python 3 6 and numba 0 36 这个问题有一个sister https stackoverflow com questions 48159360 numba custom stack class and pop f
  • 使用多行选项和编码选项读取 CSV

    在 azure Databricks 中 当我使用以下命令读取 CSV 文件时multiline true and encoding SJIS 似乎编码选项被忽略了 如果我使用multiline选项 Spark 使用默认值encoding那
  • 如何平滑循环列向量

    这是一个 OpenCV2 问题 我有一个矩阵代表closed空间曲线 cv Mat
  • 透视包含字符串的 Pandas Dataframe - “没有要聚合的数字类型”错误

    关于此错误有很多问题 但环顾四周后 我仍然无法找到 解决解决方案 我正在尝试用字符串旋转数据框 以使一些行数据变成列 但到目前为止还没有成功 我的 df 的形状
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参

随机推荐

  • 关于mysql group_concat不得不说的事

    mysql中 group concat函数将group by产生的同一个分组中的值连接起来 返回一个字符串结果 当查询的数据过多时 group concat超出了默认值1024个字符 超过就会截断 导致group concat查询出来的数据
  • ppt怎么压缩文件大小?学会这几种方法

    ppt 用office PowerPoint 制作的幻灯片 用于编辑 播放 各种操作 简单易学 在实际的生活和办公过程中 ppt文件的应用范围非常广泛 同样的 ppt也是非常重要的工具之一 很多时候 我们需要对ppt文件进行压缩 从而满足p
  • 原理图中的电阻旁边有个”NC“,什么意思?

    NC表示此处空贴 即此处不贴任何电子器件 如果安装的话 电路会有另外的功能 或许在性能上会有变化 常用于电路板贴装技术中 电路板贴装是回流焊中的一种工艺流程 回流焊也叫再流焊 是伴随微型化电子产品的出现而发展起来的焊接技术 主要应用于各类表
  • leetcode-无重复元素的最长子串

    给定一个字符串 请你找出其中不含有重复字符的最长子串的长度 例如对于字符串 str adfhdsla 它的无重复字符的最长子串为 sub adfhdsl 很显然 首先要有一个函数用以判断当前的子串中有无重复元素 然后寻找子串的工作就要用这个
  • 闲云:unity中不能识别monobehevior关键字的问题

    有时候一些小问题很恼人 如unity中新建脚本后不能识别monobehevior关键字 在vs2017右侧的解决方案中点击刷新图标 或者把不能识别的脚本添加到vs2017右侧的解决方案中的Assets中即可 还不行就点击 排除 然后再 添加
  • QApplication和QCoreApplication

    一 QCoreApplication用于non GUI的应用程序 不需要依赖QtGui库 QApplication用于包含GUI的应用程序 需要用到QtGui库 Qt是一个开源的C 库 主要用来开发GUI程序 但同时 它也支持控制台程序的开
  • log4j使用说明

    查阅阿里的jva开发手册 我们发现在打印日志的时候有一下几条是强制的 1 应用中不可直接使用日志系统 Log4j Logback 中的API 而应依赖使用日志框架SLF4J中的API 使用门面模式的日志框架 有利于维护和各个类的日志处理方式
  • 前端自测.

    交互 宽度1200px 表单校验 长度 敏感词汇 初始化 loading 结果 空 表单重复提交 loading 请求拦截 限流 数字 大数据 千分位 文本长度 省略号 数据查询结果校验 按条件查询结果是否正确 空数据传参 xx 参数头尾有
  • go struct{} 空结构体的特点和作用

    空结构体的特点和作用 参考代码 package main import fmt unsafe func main empStruct 空结构体的实例和作用 func empStruct 空结构体的特点 1 不占用内存 2 地址不变 var
  • Input

    Unity3d的所有输入 包括键盘鼠标和智能手机触摸等都是通过这一个类来完成 Input类 见API http docs unity3d com ScriptReference Input html 输入Input类使用 建议在Updata
  • Minikube 架构及启动流程剖析

    原文作者 wzqnls 编辑 夏天 对于要学习 Kubernetes 或者需要本地开发的开发人员来说 Minikube 是一个不错的选择 通过使用 Minikube 这个工具 我们可以非常快捷地在本地部署一套单节点的 Kubernetes
  • 【Linux】线程安全

    文章目录 1 线程互斥 1 1 线程间互斥的相关概念 1 2互斥量 1 3互斥量接口 1 4互斥量实现原理 2 可重入VS线程安全 3 常见锁概念 3 1死锁 3 2常见死锁情况 3 2 1情况一 忘记释放锁 3 2 2情况二 线程重复申请
  • [机缘参悟-66]:怎样才能让别人愿意帮你:利益共享法则、“大道”、“人性”

    目录 前言 第1章 生命是利益 1 1 什么是利益 1 2 不同时期 利益展现不同的形态 1 3 利益是维系社会运行的根本力量 1 4 利益是中性词 第2章 共享利益 2 1 共享利益的形态 2 2 显性的共享利益 物质利益 2 3 利益的
  • 分享一个嘉立创封装库(内含AD和PADS两种格式)

    一直以来做封装都是令我头疼的问题 偶然发现嘉立创的封装库 真的非常好用 而且封装做得非常漂亮 这个封装做得非常好 我也打过几款板子出来 手工焊接起来也非常好 真的是非常好的一个封装库 封装库里面包含了AD Protel99和PADS三种格式
  • 给windows宿主机和wsl2的ubuntu-20.04分配固定IP,使能相互ping通

    我们知道wsl2是基于hyper v的虚拟机 每次重新启动的时候 都会重新拉一个新的hyper v虚拟机实例 然后虚拟网卡的IP是dhcp随机分配的 如果作为开发系统用 就会比较烦每次都要换一个IP 有人提供了个脚本 他写了个bat脚本在w
  • Tomcat之startup.bat启动闪退解决

    安装完了service 那个服务器 使用从官网下载的apche包 我使用的是这个包apache tomcat 8 5 81 windows x64 去bin里面启动 startup bat结果出现闪退 问题还是java环境变量的设置问题 可
  • 用户的计算机名,获取计算机名及用户名

    ifdef WINDOWS uses Windows endif ifdef UNIX uses BaseUnix endif ifdef UNIX function GetUserName String begin Result GetE
  • docker介绍

    公式 Usage docker OPTIONS COMMAND A self sufficient runtime for containers Options config string Location of client config
  • Ipv4学习笔记之实践篇

    什么是IP 学习IP是入门网络的第一步 要想了解网络的工作原理 首先要了解的就是IP协议 IP standards for Internet Protocol 也就是说IP是Internet Protocol的缩写 是internet通信协
  • 【Termux Python3.11开发】安装opencv-contrib-python后终于可以尝鲜airtest,poco

    无意看到airtest的一些介绍 正好在找一些工具 Python自动化的轮子 好放在Termux环境下进行测试效果如何 经过一些时间的折腾 总算顺利解决 安装好几个相关的库 点击链接加入群聊 Termux友情赞助群 897177804 pi