IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python3.6+Appium实现手机微信自动回复 -> 正文阅读

[Python知识库]python3.6+Appium实现手机微信自动回复

一、环境准备

1、jdk1.8.0

2、android-sdk_r24.4.1-windows.zip

3、Python3.6

4、Appium-Server-GUI-windows-1.22.0.zip

5、Appium-Python-Client

6、Appium-Inspector-windows-2021.12.2.zip

简单说明:jdk为java运行环境,SDK为Android运行环境,Python3.6+Appium-Python-Client库为Appium客户端,Appium-Server为Appium服务器,Appium-Inspector用于定位页面元素。

二、Appium框架原理、加载过程

Appium基本原理为

?Appium加载过程为

?

?

三、实战

1、在appium安装目录双击Appium Server GUI.exe先启动服务器,点击编辑配置,填入SDK和jdk根目录,保存后启动服务器。

Appium Server启动成功

2、执行代码,启动微信APP

? ? ? ? 执行代码前需要安装Appium-Python-Client库,用于连接Appium服务器。

????????platformName是设备系统类型,deviceName为设备名称,appPackage为应用包名,appActivity为应用启动入口,noReset为不在会话前重置应用状态,默认为false ?切记要保证为True,不然APP数据会被清掉,所有聊天记录都清空,血的教训。。。

deviceName、appPackage、appActivity这三个东西可以在如下连接方法找到https://blog.csdn.net/l15767016983/article/details/122943734

如果deviceName想为IP:port,则需要在如下连接方法找到deviceName

https://blog.csdn.net/l15767016983/article/details/122939195

from appium import webdriver


if __name__ == '__main__':
    desired_caps = {
        "platformName": "Android",
        "deviceName": "81c94a60",
        "appPackage": "com.tencent.mm",
        "appActivity": "com.tencent.mm.ui.LauncherUI",
        "noReset": True
    }
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

? ? ? ? 运行代码前需要确保Appium服务器正常运行,不然会连接不了服务器。

3、Inspector定位元素

? ? ? ? 安装完Inspector后在安装目录双击Appium Inspector.exe运行Inspector,填写请求JSON

?启动会话,微信被成功启动。

?Inspector有几个小工具,包括选择元素、录制代码、滑动坐标、点击坐标点、刷新等工具用于操作页面。

?可以找到元素的ID、CLASS_NAME、XPATH等信息,用于操作元素。

(1)点击元素,进入和某人的聊天页面。

name="对方正在输入..."
count=1
while True:#循环等待消息
    print("第{0}次循环。。。".format(count))
    child = driver.find_elements(AppiumBy.ID, "com.tencent.mm:id/btg")
    for i in child:
        try:
            msg_person=i.find_element(AppiumBy.ID, "com.tencent.mm:id/hga").text#联系人昵称
            if name in msg_person:
                msg_count=i.find_element(AppiumBy.ID, "com.tencent.mm:id/kn6").text#新消息数
                    if int(msg_count)>0:#和某人的消息数大于0则进入该聊天
                        i.click()
                        driver.find_element(AppiumBy.ID, "com.tencent.mm:id/fz").click()#返回上一步
        except Exception:
            pass
    count+=1
    time.sleep(5)

?(2)点击输入框,输入聊天内容,发送内容。如果想自动回复各种消息可以弄一个聊天机器人,例如图灵,可以免费注册。

b4a=driver.find_element(AppiumBy.ID,"com.tencent.mm:id/b4a")#输入框
b4a.click()#需要点击一下唤起键盘,不然全面屏可能找不到发送的元素
b4a.send_keys(msg)
driver.find_element(AppiumBy.ID,"com.tencent.mm:id/b8k").click()#点击发送

?(3)查看当前页面的聊天记录。

????????时间ID为com.tencent.mm:id/b8z,文字/小表情的ID为com.tencent.mm:id/b4b,大表情包ID为com.tencent.mm:id/b4c,发送者昵称ID为com.tencent.mm:id/b3s。

    child=driver.find_element(AppiumBy.ID, "com.tencent.mm:id/b79").find_elements(AppiumBy.XPATH, ".//*")
    for i in child:
        resource_Id=i.get_attribute("resourceId")
        if resource_Id:
            text=i.get_attribute("text")
            if "com.tencent.mm:id/b8z" in resource_Id:
                msg_time = text# 1 时间
                print(msg_time)
            elif "com.tencent.mm:id/b3s" in resource_Id:
                sender = i.get_attribute("contentDescription")# 2 发送者
                print(sender)
            elif "com.tencent.mm:id/b4b" in resource_Id:
                text_msg= text# 3 文字消息/小表情
                print(text_msg)
            elif "com.tencent.mm:id/b4c" in resource_Id:
                big_msg = "[表情]"# 4 大表情
                print(big_msg)

(4)滑动页面,加载更多聊天记录。

size = driver.get_window_size()
driver.swipe(size['width'] * 0.5, size['height'] * 0.25, size['width'] * 0.5, size['height'] * 0.65)

(5)打印整页XML资源

print(driver.page_source)#打印整页XML资源
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:06:38  更:2022-02-19 01:09:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:57:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码