广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用python实现自动化群控的案例
  • 514
分享到

使用python实现自动化群控的案例

2023-06-14 11:06:23 514人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关使用python实现自动化群控的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人

这篇文章将为大家详细讲解有关使用python实现自动化群控的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1. 前言

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

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

2. 准备

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

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

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

# 下面显示连接了3台设备xag:Test xingag$ adb devicesList of devices attached822QEDTL225T7    deviceca2b3455        deviceDE45d9323SE96   device

3. 实战

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

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

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

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

打开闲鱼 App,在命令终端输入上面的命令,终端会将包名及 Activity 名称显示出来

使用python实现自动化群控的案例

2、获取所有在线的设备

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

# 所有设备IDdevices = []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# 包名和Activitypackage_name:  com.taobao.idlefishhome_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 文件,利用正则表达式得到目标控件的坐标值

  • 计算出控件的中心点坐标

使用python实现自动化群控的案例

利用控件 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实现自动化群控的案例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 使用python实现自动化群控的案例

本文链接: https://www.lsjlt.com/news/270546.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用python实现自动化群控的案例
    这篇文章将为大家详细讲解有关使用python实现自动化群控的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 前言群控,相信大部分人都不会陌生!印象里是一台电脑控制多台设备完成一系列的操作,更多的人...
    99+
    2023-06-14
  • python实现自动化群控的步骤
    目录1. 前言2. 准备3. 实战1、获取目标应用的包名及初始化 Activity2、获取所有在线的设备3、群控打开目标应用4、封装执行步骤5、区分设备6、执行步骤7、关闭应用4. ...
    99+
    2022-11-12
  • Python自动化办公之群发邮件案例详解
    目录背景实现过程总结背景 想象一下,现在你有一份Word邀请函模板,然后你有一份客户列表,上面有客户的姓名、联系方式、邮箱等基本信息,然后你的老板现在需要替换邀请函模板中的姓名,然后...
    99+
    2022-11-13
  • Python实现APP自动化发微信群消息的示例代码
    目录1. 前言2. 爬虫及服务3. 自动化发送群聊​4. 最后1. 前言 但是对于很多人来说,首先编写一款 App 需要一定的移动端开发经验,其次还需要另外编写无障碍服务应用,如此显...
    99+
    2022-11-12
  • Python实现自动化刷抖音的实例
    前言 都说抖音有毒,一刷就停不下来了。看来抖音这款产品紧紧抓住了人们内心深处的某些需求。当然今天不是来探讨抖音这款产品的啊。今天我们来学习如何用Python实现自动刷抖音,并为颜值高的的小哥哥小姐姐点赞并评论。 项...
    99+
    2022-06-02
    Python 自动化刷抖音 Python 自动刷抖音
  • python自动化实现的简单使用
    目录环境配置定位1.Link_text定位超链接2.混合元素定位3.Xpath定位(通常)4.css定位操作1.实现输入框自动输入2.清空输入框3.上传文件4.自动化执行javaSc...
    99+
    2022-11-11
  • 使用Python实现微信自动化
    Python中可以导入wxpy模块,在电脑上操作控制微信。 ...
    99+
    2023-01-31
    Python
  • 使用python实现三维图可视化的案例
    这篇文章将为大家详细讲解有关使用python实现三维图可视化的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这是学习tensorflow框架中遇到的知识,这里定义函数的时候选用的是将x和y封装起来,方...
    99+
    2023-06-14
  • python+requests+pytest接口自动化的实现示例
    目录1、发送get请求2、发送post请求3、发送https请求4、文件上传5、文件下载6、timeout超时7、鉴权 7.1、auth参数鉴权7.2、session操作7.3、to...
    99+
    2022-11-12
  • Python如何实现APP自动化发微信群消息
    本篇内容主要讲解“Python如何实现APP自动化发微信群消息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现APP自动化发微信群消息”吧!1. 前言但是对于很多人来说,首先编...
    99+
    2023-06-26
  • 使用python来实现报表自动化
    本文转载于http://blog.csdn.net/coraline_mviewmode=contents 本篇文章将介绍:xlwt 常用功能xlrd 常用功能xlutils 常用功能xlwt写Excel时公式的应用xlwt写入特定目录(路...
    99+
    2023-01-31
    来实现 报表 python
  • python+appium实现自动化测试的示例代码
    目录1.什么是Appium2.启动一个app自动化程序的步骤3.appium服务介绍4. appium客户端使用5.adb的使用 6.Appium启动过程分析1....
    99+
    2022-11-12
  • python自动化实现的方法怎么使用
    今天小编给大家分享一下python自动化实现的方法怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。环境配置pychar...
    99+
    2023-07-02
  • 使用Python怎么实现自动化办公
    这篇文章给大家介绍使用Python怎么实现自动化办公,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么...
    99+
    2023-06-14
  • Python中怎么使用Playwright实现自动化
    这篇文章将为大家详细讲解有关Python中怎么使用Playwright实现自动化,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、Playwright介绍Playwright是一个强大的Py...
    99+
    2023-06-15
  • 怎么使用Python实现办公自动化
    本篇内容主要讲解“怎么使用Python实现办公自动化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python实现办公自动化”吧!大概是有这样一份Word一共有近2600条类似格式的表格...
    99+
    2023-06-16
  • Python实现自动化整理文件的示例代码
    目录自动化整理计算机文件1. 文件的自动分类2. 文件和文件夹的快速查找3. 自动清理重复文件4. 批量转换图片格式5. 按拍摄日期自动分类图片自动化整理计算机文件 通过Python...
    99+
    2022-11-11
  • 怎么使用Python自动化实现抖音自动刷视频
    这篇文章主要介绍了怎么使用Python自动化实现抖音自动刷视频的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Python自动化实现抖音自动刷视频文章都会有所收获,下面我们一起来看看吧。环境准备Pytho...
    99+
    2023-07-05
  • Python自动化办公实战案例详解(Word、Excel、Pdf、Email邮件)
    目录背景实现过程1)替换Word模板生成对应邀请函2)将Word邀请函转化为Pdf格式3)读取Excel表格中的姓名和邮箱4)自动发送邮件5)完整代码总结 背景 想象一下,现在你有一...
    99+
    2022-11-12
  • 如何使用python selenium实现自动化测试
    这篇文章主要介绍如何使用python selenium实现自动化测试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、安装selenium打开命令控制符输入:pip install -U selenium火狐浏览器安...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作