教你用10行Python 代码实现自动化群控

python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法 基于Python和GPIB的硬件测试仪器控制方法背景在物联网通信时代,嵌入式模块开发越发广泛,自动化测试成为大家老生常谈的话题。对于一些高精度仪器,我们知道它是用GPIB控制用来测试,也希望可以通过一个程序实现自动化控制,但自动化控制的仪器或者程序往往需要高昂的价格。本人也受此困扰,因此查找了很多资料,终于让我发现了自动化控制这些仪器的方法。本文就为大家介绍下如何控制这些硬件仪器。技术要点本文介绍... 阅读详情

在这里插入图片描述

1. 前言

群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!

事实上,群控在自动化测试中也被广泛使用! 接下来的几篇文章,我将带大家聊聊 企业 级自动化中,群控 正确的使用姿势!

本篇先从基础篇开始,聊聊使用 「 Python + adb 」 命令如何编写一套群控脚本

2. 准备

在本机安装 Android 开发环境,保证 adb 被添加到环境变量

将准备好的多台设备,使用数据线( 或者通过 Hub )连接到电脑上

通过 adb devices 命令查看已经连接的所有设备

# 下面显示连接了3台设备
xag:Test xingag$ adb devices
List of devices attached
822QEDTL225T7    device
ca2b3455        device
DE45d9323SE96   device

3. 实战

自动化群控以闲鱼 App 的一次关键字搜索为例,步骤包含:打开应用、点击到搜索界面、输入内容、点击搜索按钮

下面通过 7 步来完成这一操作

1、获 取目标应用的包名及初始化 Activity

获取方式有很多种,主流方式包含:adb 命令、解析 APK、第三方 APK、 无障碍服务

这里推荐使用 adb 命令这种方式

# 获取当前运行应用的包名及初始Activity
adb shell dumpsys activity | grep -i run

打开闲鱼 App,在命令终端输入上面的命令,终端会将包名及 Activity 名称显示出来
在这里插入图片描述
2、获取 所有在线的设备

通过 adb devices 命令,通过输出内容,进行一次过滤,得到所有连接到 PC 端的设备

# 所有设备ID
devices = []

def get_online_devices(self):
    """
    获取所有在线的设备
    :return:
    """
    global devices
    try:
        for device_serias_name in exec_cmd("adb devices"):
           # 过滤掉第一条数据及不在线的设备
           if "device" in device_serias_name:
              devices.append(device_serias_name.split("\t")[0])
           devices = devices[1:]
    except Exception as e:
            print(e)

    # 连上的所有设备及数量
    return devices

3、群控打 开目标应用

遍历设备列表,使用 adb -s 设备ID shell am start -W 命令分别打开目标应用

def start_app(self):
    """
    打开App
    :return: 
    """
    for device in devices:
        os.popen("adb -s " + device + " shell am start -W {}/{}".format(self.packageName, self.home_activity))
    print('等待加载完成...')
    sleep(10)

4、封装 执行步骤

为了方便管理设备,将每一步的操作写入到 YAML 文件中,可以 通过 ID 查找元素并执行点击操作、在输入框中输入内容、调用本地方法及输入参数

这里分别对应: 保存 UI 输入键、查找输入框元素并执行点击操作、保存 UI 树控件(界面变化了)、输入文本内容、查看搜索按钮元素并执行点击操作

# steps_adb.yaml

# 包名和Activity
package_name:  com.taobao.idlefish
home_activity:  com.taobao.fleamarket.home.activity.InitActivity

# 执行步骤
steps:
  - save_ui_tree_to_local:
      method:  save_ui_tree_to_local
      args:
  - find_element_and_click:
      id:  com.taobao.idlefish:id/tx_id
  - save_ui_tree_to_local:
      method:  save_ui_tree_to_local
  - input_content:
      content:  Python
  - find_element_and_click:
      id:  com.taobao.idlefish:id/search_button

需要指出的是, 为了提高群控的适配性,控件的实际坐标需要通过下面的步骤去获取:

  • 导出界面的控件树
  • 解析控件树 XML 文件,利用正则表达式得到目标控件的坐标值
  • 计算出控件的中心点坐标
    在这里插入图片描述
    利用控件 ID 获取元素中心点坐标的实现代码如下:
def get_element_position(element_id, uidump_name):
    """
    通过元素的id,使用ElementTree,解析元素控件树,查找元素的坐标中心点
    :param element_id: 元素id,比如:
    :return: 元素坐标
    """

    # 解析XML
    tree = ET.parse('./../%s.xml' % uidump_name)
    root = tree.getroot()

    # 待查找的元素
    result_element = None

    # print('查找数目', len(root.findall('.//node')))

    # 遍历查找node元素
    # 通过元素id
    for node_element in root.findall('.//node'):
        if node_element.attrib['resource-id'] == element_id:
            result_element = node_element
            break

    # 如果找不到元素,直接返回空
    if result_element is None:
        print('抱歉!找不到元素!')
        return None

    # 解析数据
    coord = re.compile(r"\d+").findall(result_element.attrib['bounds'])

    # 中心点坐标
    position_center = int((int(coord[0]) + int(coord[2])) / 2), int((int(coord[1]) + int(coord[3])) / 2)

    return position_center

5、区分设备

为了保证群控脚本执行不会产生干扰,在每个步骤执行之前,都应该将设备 ID 作为参数进行区分

比如:将控件的界面控件树按照设备保存为不同的名称、点击界面和输入的命令传相应设备 ID 作为入参

def save_ui_tree_to_local(dName):
    """
    获取当前Activity控件树,保存到本地
    文件名固定为:uidump.xml
    :param dName: 设备id
    :return:
    """

    exec_cmd("adb  -s %s shell uiautomator dump /data/local/tmp/%s.xml" % (dName, dName))

    sleep(2)

    exec_cmd("adb -s %s pull /data/local/tmp/%s.xml ./../" % (dName, dName))

6、执行步骤

从 YAML 文件中读取执行步骤,遍历步骤集合,内部遍历设备列表,以保证每一个步骤,分别执行到每台设备上

# 执行步骤
for step in self.steps:
    # 设备
    for device in devices: 
        pass

接着,通过步骤名称匹配不同的操作,即可操作设备了

# 操作名称
step_name = list(step)[0]

if step_name == 'save_ui_tree_to_local':
    # 保存UI数到本地
    method = step.get(step_name).get('method')
    save_ui_tree_to_local(device)
elif step_name == 'find_element_and_click':
    element_id = step.get(step_name).get('id')
    # 获取元素的坐标
    bound_search_input = get_element_position(element_id, device)
    # 点击元素
    exec_cmd('adb -s %s shell input tap %s %s' % (device, bound_search_input[0], bound_search_input[1]))
elif step_name == 'input_content':
    input_content = step.get(step_name).get('content')
    # 模拟输入
    exec_cmd('adb -s %s shell input text %s' % (device, input_content))
else:
    print('其他操作步骤')

7、关闭应用

当所有的操作完成之后,同样是遍历设备,利用 adb 命令去关闭 App 即可

def stop_all(self):
   """
   关闭应用
   :return:
   """
   for device in devices:
       os.popen("adb -s " + device + " shell am force-stop  %s" % self.packageName)

最后,这一招你学会了吗?

了解更多

教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!! 教你用python实现34行代码爬取东方财富网信息,爬虫之路,永无止境!! 代码展示: 开发环境: windows10 python3.6 开发工具: pycharm weddriver 库: selenium、lxml、openpyxl、time 安装webdriver 首先要安装webdriver插件,本文以谷歌浏览器为例,点开谷歌浏览器,点击右上角三个点,然后点击帮助,然后点击关于Google Chrome,查看浏览器的版本,然后点击网址http://npm.taobao.org/mirrors/c 阅读详情

相关推荐

python 10个自动化脚本

在程序员的世界里,自动化是提升效率的金钥匙。Python,以其易读性和强大的库支持,成为了实现自动化任务的首选语言。本文精选了10个实用的Python自动化脚本,涵盖文件处理、网络请求、数据分析等多个领域,旨在帮你节省时间,减少重复劳动,提升工作效能。

xyh2004的博客 7840

Python实现仪器自动化控制(进阶版)

Python完全胜任对仪器的自动化控制,通过Pyserial和Pyvisa实现了仪器端和用户端的通信。同时Python可以DIY自己的用户界面即GUI,从而方便用户操作仪器。

weixin_41261080的博客 8312

autojs清除缓存

* 本代码适用于群控项目 * 批量登陆账号的时候 登录后直接运行该脚本 * 该脚本不会走退出 不会发送退出请求 不会将登陆后的token变为失效状态 * 同时清楚登陆的app缓存 并授权所有权限 下次打开省去点击授权的步骤

Codeooo 博客 8186

python做硬件自动化测试仪器_python实现接口自动化测试

使用python做接口自动化测试容易吗我爱你,是多么清楚多么坚固的信仰。我爱你,是多么温暖多么勇敢的力量。为什么要做接口自动化测试? 在当前互联网产品迭代频繁的背景下,回归测试的时间越来越少,很难在每个迭代都对所有功能做完整回归。但接口自动化测试因其实现简单、维护成本低,容易提高覆盖率等特点,越来越受重视。怎么搭建 python 的接口自动化测试框架?如果人生是一个不断走下坡路的过程,那么你一定是...

weixin_39922534的博客 466

10行Python代码实现Web自动化管控

本博客将为各位分享Python Helium库,其是在 Selenium库基础上封装的更加高级的 Web 自动化工具,它能够通过网页端可见的标签、名称来和 Web 进行交互,据说比Selenium库简单50%,Helium库主要功能包括:模拟鼠标点击、滑动功能;模拟键盘按键功能;刷新网页功能等。

不脱发的程序猿 6287

基于Python与ADB功能的安卓群控助手设计源码

该项目是一款基于Python和ADB功能的安卓群控助手设计源码,包含824个文件,涵盖多种编程语言,如Python、CSS、HTML、JavaScript、C和Shell等。源码文件类型丰富,包括332个Python文件、87个CSS文件、83个输出文件、83个二进制文件、46个最小化文件、17个HTML文件、15个Python编译文件、14个文本文件、11个Markdown文件、10个JavaScript文件。该助手充分利用adb技术,为安卓设备提供高效的管理和控制功能。

geany自动补全代码python_教你用10行Python 代码实现自动化群控

1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!事实上,群控在自动化测试中也被广泛使用! 接下来的几篇文章,我将带大家聊聊 企业 级自动化中,群控 正确的使用姿势!本篇先从基础篇开始,聊聊使用 「 Python + adb 」 命令如何编写一套群控脚本2. 准备在本机安装 Android 开发环境,保证 adb 被添加...

weixin_39886251的博客 415

【Matlab 六自由度机器人】基于改进型D-H参数的运动学建模与蒙特卡洛工作空间分析

本文详细介绍了如何使用改进型D-H参数法为六自由度机器人建立运动学模型,并利用Matlab Robotics Toolbox实现正运动学计算与可视化。通过蒙特卡洛法对机器人工作空间进行分析,生成三维点云图以直观展示其可达范围,为机器人选型与任务规划提供关键依据。

weixin_29040367的博客 439

移动设备input输入框点击后自动选中内容_教你用10行Python 代码实现自动化群控

1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!事实上,群控在自动化测试中也被广泛使用! 接下来的几篇文章,我将带大家聊聊 企业 级自动化中,群控 正确的使用姿势!本篇先从基础篇开始,聊聊使用 「 Python + adb 」 命令如何编写一套群控脚本2. 准备在本机安装 Android 开发环境,保证 adb 被添加...

weixin_39820226的博客 460

平衡电桥在高压绝缘检测中的动态切换策略与误差优化

本文深入探讨了平衡电桥在高压绝缘检测中的动态切换策略与误差优化方法。通过分析四种基本切换模式及智能切换时序设计,显著提升检测精度与范围。结合电阻选型黄金法则和软件补偿技术,有效降低测量误差,为电动汽车电池管理系统提供可靠的安全保障。

weixin_30275415的博客 473

道岔故障监测系统设计(源码+开题)

通过实时监控道岔的工作状态,系统能够及时发现异常情况,预防潜在的安全隐患,从而减少事故发生的概率。此外,监测系统还能够为维护人员提供详细的数据支持,帮助他们更准确地判断道岔的磨损程度和故障类型,优化维修计划,延长道岔的使用寿命。随着智能化、自动化技术的发展,道岔故障监测系统的设计与应用也将推动铁路行业的技术进步,为实现智能铁路和未来交通系统的构建奠定基础。因此,开展道岔故障监测系统的设计研究,不仅具有重要的工程实践价值,也有助于推动铁路运输行业向更高水平的发展。

灵军程序设计 771

带你用 Python 实现自动化群控设备

1. 前言 群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和灰产绑定在一起! 事实上,群控在自动化测试中也被广泛使用!接下来的几篇文章,我将带大家聊聊企业级自动化中,群控正确的使用姿势! 本篇先从基础篇开始,聊聊使用「Python + adb」命令如何编写一套群控脚本 2. 准备 在本机安装Android 开发环境,保证adb 被添加到环境变量 将准备好的多台设备,使用数据线( 或者通过 Hub )连接到电脑上 通过adb devic...

JNPF快速开发平台的博客 844

浅谈向量检索

文章目录浅谈向量检索背景什么是向量什么是向量检索距离度量检索方法ANN的基本思路举个容易理解栗子举个正常的例子具体算法树方法KD-TreeAnnoyHash方法LSH 算法矢量量化方法乘积量化码本的建立码字搜索算法倒排乘积量化临近图方法HNSW 算法朴素想法Delaunay算法NSW 主要思想NSW构图NSW查找参考 浅谈向量检索 背景 索引一直被认为是检索引擎最重要的组成部分,之所以数据库能够快速的查询出来结果。系统设计中很多常见的多种数据结构都是为了快速命中索引设计的, 比如 红黑树、跳跃表、倒排索引、

qq_42828391的博客 6553

带你用 Python 实现自动化群控设备 | 干货

1. 前言 群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和灰产绑定在一起! 事实上,群控在自动化测试中也被广泛使用!接下来的几篇文章,我将带大家聊聊企业级自动化中,群控正确的使用姿势! 本篇先从基础篇开始,聊聊使用「 Python + adb 」命令如何编写一套群控脚本 2. 准备 在本机安装 Android 开发环境,保证 adb 被添加到环境变量 将准备好的多台设备,使用数据线( 或者通过 Hub )连接到电脑上 通过 adb devices 命令查看已经

公众号:【伤心的辣条】 1271

ADB详细(从下载安装到灵活运用)

ADB(Android Debug Bridge)是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载ADB Kits。

LiuYong_01的博客 10万+

Matlab 曲面平滑与点云处理

曲面平滑是一种常见的数学和计算机图形学技术,可以用来消除噪声、填补数据间隙,以及改善曲面的外观。在点云处理中,曲面平滑也被广泛应用于重建、拟合和可视化等领域。本文将介绍如何使用 Matlab 进行曲面平滑和点云处理,并提供相应的源代码。通过以上步骤,我们可以使用 Matlab 进行曲面平滑和点云处理。你可以根据具体需求调整参数和算法,以获得理想的曲面平滑效果。接下来,我们可以使用平滑算法对三角化的网格进行曲面平滑。以上代码将绘制原始点云和重建后的点云,并在图形中显示坐标轴和图例。表示平滑的迭代次数。

QfcaLinux的博客 752

python自动化_Python自动化(十三)|带你用 Python 实现自动化群控

1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!事实上,群控在自动化测试中也被广泛使用!接下来的几篇文章,我将带大家聊聊企业级自动化中,群控正确的使用姿势!本篇先从基础篇开始,聊聊使用「 Python + adb 」命令如何编写一套群控脚本2. 准备在本机安装 Android 开发环境,保证 adb 被添加到环境变量将...

weixin_39957805的博客 1295

openssl命令数据摘要详解(SM3、sha256、MD5、dss1、mdc2、ripemd160)

SM3是由中国密码学家设计的密码哈希函数,是中国国家密码管理局(National Cryptographic Authority,简称:CNCA)颁布的国家密码算法标准。SM3属于密码杂凑函数家族,它可以计算任意长度的消息并生成固定长度(256比特,即32字节)的哈希值。SM3生成的哈希值长度为256比特(32字节),不管输入消息的长度如何,输出始终是固定的。SM3将输入数据划分为512比特(64字节)的分组,并对每个分组进行处理。

N阶二进制的博客 4460

python做自动化测试仪器,带你用Python实现自动化群控设备

1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和灰产绑定在一起!事实上,群控在自动化测试中也被广泛使用!接下来的几篇文章,我将带大家聊聊企业级自动化中,群控正确的使用姿势!本篇先从基础篇开始,聊聊使用「Python + adb」命令如何编写一套群控脚本2. 准备在本机安装Android 开发环境,保证adb 被添加到环境变量将准备好的...

weixin_32676541的博客 1126

ConvNeXt 系列改进:引入大核注意力(LKA)替换 7×7 深度卷积,涨点 2.1%

LSKA替换7×7深度卷积,在ImageNet分类任务上实现2.1%的显著提升,参数量仅增加1M。LSKA的四层1D分解将计算复杂度从O(k²)降至O(k),21×21大核的计算量仅相当于原版7×7的1.7倍,实现了感受野与计算成本的完美平衡。部署友好度极高:LSKA模块在TensorRT FP16量化后延迟仅1.2ms,精度损失<0.1%,远优于Transformer类模型。下游任务全面领先。

ZXSXJ的博客 700

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

自动化(四)appium真机远程控制和远程群控

appium真机远程控制和远程群控 文章目录appium真机远程控制和远程群控前言一、更换连接方式:【设备IP+端口】 代替 【USB直连】1、获取USB链接的设备名称2、给设备分配端口3、使用设备IP与设备分配的端口对接4、重复步骤2、3,分配不同的端口,链接任意数量的设备,再进行检查5、拔掉USB数据线,再次检查是否仍保持连接二、Appium识别设备的基础设置1、多开Appium2、每个Appium分配一个设备名称,并启用设备名称识别3、设置不同的Appium端口,以方便python语句进行控制三、多线

weixin_45072910的博客 9673

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

如何用python控制设备实现自动_带你用 Python 实现自动化群控(入门篇)

1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!事实上,群控在自动化测试中也被广泛使用!接下来的几篇文章,我将带大家聊聊企业级自动化中,群控正确的使用姿势!本篇先从基础篇开始,聊聊使用「 Python + adb 」命令如何编写一套群控脚本2. 准备在本机安装 Android 开发环境,保证 adb 被添加到环境变量将...

weixin_39604598的博客 826

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

苹果手机群控操作秘籍:代码分析与实战教学

`XCTest` | 官方UI测试框架 | 自动化UI操作 || `libimobiledevice` | iOS设备管理工具 | 获取设备信息、安装App || `Appium` | 跨平台自动化测试框架 | 高级自动化测试与兼容性需求 |- **稳定性**:频繁控制可能导致设备不稳定,需要定期重启设备。

PGSJQK_的博客 1648

什么是python自动化脚本_Python自动化(十三)|带你用 Python 实现自动化群控

1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!事实上,群控在自动化测试中也被广泛使用!接下来的几篇文章,我将带大家聊聊企业级自动化中,群控正确的使用姿势!本篇先从基础篇开始,聊聊使用「 Python + adb 」命令如何编写一套群控脚本2. 准备在本机安装 Android 开发环境,保证 adb 被添加到环境变量将...

weixin_39849054的博客 219

python安卓自动化实现方法_带你用 Python 实现自动化群控(入门篇)

原标题:带你用 Python 实现自动化群控(入门篇)来自公众号: AirPython1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人喜欢把它和 Hui 产绑定在一起!事实上,群控在自动化测试中也被广泛使用!接下来的几篇文章,我将带大家聊聊企业级自动化中,群控正确的使用姿势!本篇先从基础篇开始,聊聊使用 「Python + adb」命令如何编写一套群控...

weixin_39915700的博客 1166
上一篇: Python第三方库巧用,制作图片验证码只需三行代码
下一篇: python爬虫学习笔记:XPath语法和使用示例
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值