博客
关于我
好家伙!用 Python 自动回复 QQ 消息..
阅读量:166 次
发布时间:2019-02-27

本文共 2679 字,大约阅读时间需要 8 分钟。

前言

近期通过学习Python实现App自动化的视频,深受启发,我运用所学知识开发了一个自动回复QQ消息的程序。这个项目不仅锻炼了我的App自动化技能,也让我对Python在实际场景中的应用有了更深入的理解。


准备工作

1. 安装必要工具

1.1 安装Appium客户端

使用命令窗口输入以下命令安装Appium Python客户端:

pip install appium-python-client
1.2 安装Appium Server

访问Appium官方网站下载并安装最新版本的Appium Server:

http://appium.io
1.3 安装JDK

完成安装后,需设置JDK环境变量。小编推荐以下步骤:

  • 右键点击桌面,选择“新建” -> “环境变量”
  • 点击“环境变量”下的“系统”选项
  • 在“PATH”和“JAVA_HOME”等栏位中添加JDK安装目录
  • 1.4 安装Android SDK

    同样在环境变量中添加ANDROID_HOME,指向Android SDK解压目录:

  • 右键点击桌面,选择“新建” -> “环境变量”
  • 在“PATH”栏位中添加Android SDK中的adb.exe路径
  • 1.5 投屏软件

    推荐使用米卓同屏助手,下载地址为:

    https://cn.mirroid.com

    连接手机

    连接方式

  • 使用USB数据线将手机与电脑连接
  • 打开手机开发者模式:
    • OPPO手机:进入“手机设置” -> “关于手机” -> 点击版本号,持续点击直至进入开发者模式
    • 其他品牌:各有不同设置,需参考手机手册
  • 启用USB调试:
    • 进入开发者选项,找到“USB调试”开关并打开

  • 测试连接

    在命令窗口输入以下命令验证连接状态:

    adb devices -l

    如果出现设备列表,说明连接成功。如果出现错误提示,通常是ADB版本不兼容。建议将手机或电脑上的ADB.exe替换为同一版本即可。


    代码实现

    以下是完整代码示例:

    from appium import webdriverfrom time import sleep# 定义设备参数desired_caps = {    'platformName': 'Android',    'platformVersion': '8.1',    'deviceName': 'xxx',    'appPackage': 'com.tencent.qqlite',    'appActivity': 'com.tencent.mobileqq.activity.SplashActivity',    'newCommandTimeout': 6000,    'automationName': 'UiAutomator2'}# 初始化驱动driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)driver.implicitly_wait(10)# 获取聊天列表recent_chat_list = driver.find_element_by_id('recent_chat_list')chat_list = recent_chat_list.find_elements_by_class_name('android.widget.LinearLayout')print(f'当前QQ消息为{len(chat_list)}个')sleep(2)# 发送消息def send_Message(text: str):    input_bar = driver.find_element_by_id('inputBar')    input = input_bar.find_element_by_id('input')    input.send_keys(text)    fun_btn = input_bar.find_element_by_id('fun_btn')    fun_btn.click()    sleep(2)    print(f'发送消息:{text}')# 接收消息处理while True:    try:        list_view1 = driver.find_element_by_id('listView1')        chat_items = list_view1.find_elements_by_class_name('android.widget.RelativeLayout')        last_item = chat_items[-1]        content_layout = last_item.find_element_by_id('chat_item_content_layout')        received_text = content_layout.text        print(f'收到消息:{received_text}')                if received_text == '你好,请帮我查阅一下刘邦的简介':            send_Message('刘邦,字季,沛郡丰邑(今江苏省丰县)人。中国历史上杰出的政治家、战略家和军事指挥家,汉朝开国皇帝,汉民族和汉文化的伟大奠基者和开拓者,对汉族的发展以及中国的统一有突出贡献。')        elif received_text == '你吃中饭了没':            send_Message('还没')        elif received_text == '介绍一下湖南省呗!':            send_Message('湖南省,简称“湘”,是中华人民共和国省级行政区,省会长沙,界于北纬24°38′~30°08′,东经108°47′~114°15′之间,东临江西,西接重庆、贵州,南毗广东、广西,北连湖北,总面积21.18万平方千米。')    except Exception as e:        pass

    注意事项

    • 代码运行中会自动安装部分依赖,用户需同意安装权限
    • 建议将设备连接稳定,避免中断
    • 最终代码可根据实际需求进行修改和优化

    推荐群组

    如果对Python学习感兴趣,可以加入我的学习群:721195303。群内成员均为Python开发者,定期分享技术干货和学习资料。

    转载地址:http://whcb.baihongyu.com/

    你可能感兴趣的文章
    POJ 3468 A Simple Problem with Integers
    查看>>
    poj 3468 A Simple Problem with Integers 降维线段树
    查看>>
    poj 3468 A Simple Problem with Integers(线段树 插线问线)
    查看>>
    poj 3485 区间选点
    查看>>
    poj 3518 Prime Gap
    查看>>
    poj 3539 Elevator——同余类bfs
    查看>>
    Qt笔记——官方文档全局定义(三)Macros宏
    查看>>
    poj 3628 Bookshelf 2
    查看>>
    Qt笔记——官方文档全局定义(一)Types数据类型
    查看>>
    POJ 3670 DP LIS?
    查看>>
    POJ 3683 Priest John's Busiest Day (算竞进阶习题)
    查看>>
    POJ 3988 Selecting courses
    查看>>
    POJ 4020 NEERC John's inversion 贪心+归并求逆序对
    查看>>
    poj 4044 Score Sequence(暴力)
    查看>>
    POJ 基础数据结构
    查看>>
    POJ 题目3020 Antenna Placement(二分图)
    查看>>
    Poj(1797) Dijkstra对松弛条件的变形
    查看>>
    SpringBoot为什么不需要xml配置文件?
    查看>>
    POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
    查看>>
    Qt笔记——SQLite初探QSqlDatabase QSqlQuery
    查看>>