跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python大前端

Python 移动端 UI 自动化脚本开发实战

使用 Python 和 uiautomator2 库进行移动端 UI 自动化的基础配置与核心代码实现。内容包括环境搭建(ADB、Python 依赖)、设备连接配置以及自动化脚本的基本结构,旨在帮助开发者理解如何通过代码控制移动应用界面。

漫步发布于 2026/3/15更新于 2026/6/1635 浏览
Python 移动端 UI 自动化脚本开发实战

前言

本教程将介绍如何使用 Python 进行移动端 UI 自动化测试,通过代码控制应用界面,实现重复性任务的自动化处理。

第一章:环境准备与基础配置

1.1 硬件要求

  • Android 手机一部(建议使用备用机)
  • USB 数据线
  • 电脑(Windows/Mac/Linux 均可)

1.2 软件安装

# 1. 安装 ADB 工具
# Windows: 下载 Android SDK Platform-Tools
# Mac: brew install android-platform-tools
# Linux: sudo apt install adb

# 2. 安装 Python 依赖
pip install uiautomator2
pip install loguru # 更好的日志记录

# 3. 初始化设备连接
python -m uiautomator2 init

1.3 手机设置

  • 开启开发者选项(连续点击'关于手机'中的版本号)
  • 开启 USB 调试
  • 设置屏幕常亮(15 分钟以上)
  • 关闭锁屏密码

第二章:核心脚本完整代码

"""
移动端 UI 自动化脚本 v2.0
功能:模拟用户操作,执行界面交互
特点:精准坐标控制、错误重试、完整日志
"""
import uiautomator2 as u2
import time
import datetime
import random
import logging
from loguru import logger
import json
import os
import sys

class MusicAdAutoFarmer:
    """移动端 UI 自动化核心类"""

    def __init__(self, device_serial=None, config_file="config.json"):
        """初始化自动化机器人
        Args:
            device_serial: 设备序列号,None 为自动连接
            config_file: 配置文件路径
        """
        # 加载配置
        self.config = self.load_config(config_file)
        # 设置日志
        self.setup_logging()
        # 连接设备
        self.connect_device(device_serial)
        # 运行统计
        self.stats = {
            'total_cycles': 0,
            'successful_cycles': 0,
            'total_earnings': 0,
            'total_runtime': 0,
            'start_time': datetime.datetime.now()
        }
        logger.info("🎯 移动端自动化机器人初始化完成")
        logger.info(f"📱 设备:{self.device_info}")
        logger.info(f"⚙️ 配置:{json.dumps(self.config, indent=2, ensure_ascii=False)}")

    def load_config(self, config_file):
        """加载配置文件"""
        default_config = {
            'coordinates': {
                'swipe_start': {'x': 367, 'y': 1793},
                'swipe_end': {'x': 334, 'y': 707},
                'go_task_button': {'x': 930, 'y': 633},
                'close_ad_button': {'x': 998, 'y': 130},
                'happy_receive_button': {'x': 570, 'y': 1321}
            },
            'timing': {
                'ad_watch_time': 480,
                'swipe_interval': 35,
                'cycle_interval': 300,
                'click_wait': 1.5
            },
            'behavior': {
                'swipe_times': 2,
                'max_retries': 3,
                'random_offset': 5,
                'human_like_delay': True
            },
            'runtime': {
                'max_cycles': None,
                'auto_restart': True,
                'save_screenshots': False
            }
        }
        try:
            if os.path.exists(config_file):
                with open(config_file, 'r', encoding='utf-8') as f:
                    user_config = json.load(f)
                default_config.update(user_config)
                logger.info(f"📄 已加载配置文件:{config_file}")
        except Exception as e:
            logger.warning(f"配置文件加载失败,使用默认配置:{e}")
        return default_config

    def setup_logging(self):
        """设置日志系统"""
        log_dir = "logs"
        if not os.path.exists(log_dir):
            os.makedirs(log_dir)
        log_file = f"{log_dir}/music_auto_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.log"
        logger.add(log_file, rotation="500 MB", retention="10 days", format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}")
        logger.add(sys.stderr, format="{time:HH:mm:ss} | {level} | {message}")

    def connect_device(self, device_serial):
        """连接设备"""
        try:
            if device_serial:
                self.d = u2.connect(device_serial)
            else:
                self.d = u2.connect()
            self.device_info = {
                'model': self.d.info.get('productName', 'Unknown'),
                'reso': ... # 代码在输入中截断
            }
        except Exception as e:
            logger.error(f"设备连接失败:{e}")

目录

  1. 前言
  2. 第一章:环境准备与基础配置
  3. 1.1 硬件要求
  4. 1.2 软件安装
  5. 1. 安装 ADB 工具
  6. Windows: 下载 Android SDK Platform-Tools
  7. Mac: brew install android-platform-tools
  8. Linux: sudo apt install adb
  9. 2. 安装 Python 依赖
  10. 3. 初始化设备连接
  11. 1.3 手机设置
  12. 第二章:核心脚本完整代码
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Browser Use 使用指南:AI 自动控制浏览器
  • Python 调用 Deepseek API 失败原因及排查指南
  • AI 写小说提示词指南:角色、场景与剧情构建技巧
  • 5 款主流 AI PPT 美化工具横向测评与选型指南
  • 基于 DeepSeek 和 Cursor 构建智能代码审查工具实战
  • C++ STL 优先队列 priority_queue 原理与模拟实现
  • 学生如何申请和使用 GitHub Copilot
  • AWS Kiro 账号池管理系统:Amazon Q Developer 转 OpenAI 兼容代理
  • 零基础学习 Python:从入门到精通的学习路线与时间规划
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • 零基础学微信小程序前端(原生JS):从0到1写第一个可交互页面
  • Zotero GPT插件深度解析
  • 零基础学习 Python 八个月的经验总结与路径建议
  • Python 智能 PDF 文档助手开发指南
  • Milvus 实战:Attu 可视化安装与 Python 整合
  • Windows 下使用 WSL 快速部署 Docker 环境
  • LangChain 智能体执行引擎 AgentExecutor 详解与实战
  • 零基础如何系统学习 Python:入门路径与职业发展指南
  • 中国信通院 2024 大模型典型示范应用案例集与学习指南
  • 用Coze打造你的专属AI应用:从智能体到Web部署指南

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online