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)
最后 , 这一招你学会了吗?
【教你用10行Python 代码实现自动化群控】
推荐阅读
- |智点菁教育:副业热潮,职场人争做“斜杠青年”
- 职业教育|新职业教育法5月实行,行业迎来黄金发展期,企业估值修复有望
- 教师|父母眼中的“铁饭碗”,我们应该听从吗?应该认可吗?
- 篮球技术有哪些
- 觉农舜毫的栽培技术,教你几招冷藏后的茶叶如何提香
- 一文读懂神经网络的奥妙
- 手机视频如何添加文字?原来这么简单,手把手教你一分钟搞定
- Python之爬虫入门教程
- AI人工智能:JAVA教你拍照识别文字 并语音播报
- 全民国家安教育日是哪一天?