windows的小米11真机appium微信爬虫
创始人
2024-02-17 18:56:54

1、下载appium
仓库地址
2、下载python的包
pip install Appium-Python-Client -i https://pypi.tuna.tsinghua.edu.cn/simple
3、下载android-sdk
先下SDK Tools
国内一个镜像网站
参考这个教程
在这里插入图片描述
安装好后,运行这个SDK Manager.exe
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后install,同意协议,等待安装结束
在这里插入图片描述
4、配置环境变量
ANDROID_HOME值为刚刚安装的目录,如下图就是D:\IDEandEVR\Android SDK Tools
在这里插入图片描述
在这里插入图片描述
然后在PATH中添加
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
在这里插入图片描述
再配置下appium的ANDROID_HOME
在这里插入图片描述

4、手机插上电脑,进入开发者模式
MIUI进入开发者模式
小米手机以开发者模式连上电脑
使用adb devices进行测试,此代码也是下面json里的deviceName数据
先在上面那个appium点启动服务器

在这里插入图片描述

5、
写一段代码测试

from appium import webdriverif __name__ == '__main__':desired_caps = {'platformName': 'Android','deviceName': '99da881c','platformVersion': '12','appPackage': 'com.tencent.mm','appActivity': 'com.tencent.mm.ui.LauncherUI','automationName':'UIAutomator2',# 高版本android需要这个,好像是从11开始       }driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)print("结束")

如果运行正常,真机上会打开微信的登录界面
6、开始找界面元素
首先,不推荐uiautomatorviewer,即下图这个,因为jdk版本等问题,有需要改源码才能解决的BUG
在这里插入图片描述
我这里决定使用Appium自带的Appium Inspector
在这里插入图片描述
把python代码里的配置数据弄到这里,可以填表单,或者右边粘贴json,但是很容易说json语法错误,我也不知道为什么
在这里插入图片描述
新增的noReset是防止重置应用,避免需要反复登录

{"platformName": "Android","deviceName": "99da881c","platformVersion": "12","appPackage": "com.tencent.mm","appActivity": "com.tencent.mm.ui.LauncherUI","automationName": "UIAutomator2","noReset": true
}

用过开发者工具的看到下图应该知道该怎么弄了
在这里插入图片描述
7、注意事项
appium是真的慢,找一个登录按钮找个20s,这里先放一个最基本的避坑思路
2020年12月30日 appium 执行速度优化

很多博客提出,对于固定位置的组件,直接用坐标点击,速度能快一半,但是如果不特殊处理,不能兼容不同屏幕大小的手机
下面红圈的两个元组,表示这个组件左上角和右下角的定位,所以我们只要触摸(x1~ x2,y1 ~ y2)的就行了
driver.tap([(200, 2800)], 500)
在这里插入图片描述

8、
中文API

9、应付学校作业写的一个监听微信消息的代码

import time
import datetimefrom appium import webdriver
from appium.webdriver.common.mobileby import MobileByfrom appium.webdriver.common.touch_action import TouchActiondef response(text):if text == "现在什么时候了":return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")elif text == "感觉Appium怎么样":return "配环境有点小麻烦,运行时速度较慢,文档不太全面,感觉用的人不多,不太行"elif text == "你这个脚本的效果是什么":return "检测微信主页的可视范围内(不下滑时)的所有有未读信息的好友,判断他们的文本并进行回复"elif text == "你是谁":return "刘宇阳"elif text == "缺憾是什么":return "因为怕登录频繁出问题,就没写登录部分;不能回复所有好友的消息,因为框架只能检测屏幕可视范围的组件,可以实现下滑,但是会很麻烦;轮询,所以回复速度可能有点慢"elif text == "为什么能回复自己发的消息":return "因为左右两边的聊天框是同一类组件,区分起来有点麻烦;不区分也方便自己测试"else:return Noneif __name__ == '__main__':# Appium的配置desired_caps = {'platformName': 'Android','deviceName': '自己用命令获得','platformVersion': '12','appPackage': 'com.tencent.mm','appActivity': 'com.tencent.mm.ui.LauncherUI','automationName': 'UIAutomator2','noReset': True,  # 不要重置App,不需要重新登录}# 建立会话并打开微信界面driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)# 不登录了,怕出问题,需要手机已提前登录微信# 用ID查找到元素再点击# driver.find_element(By.ID,"com.tencent.mm:id/j_9").click()# 根据屏幕上的坐标点击(更快但是不兼容不同屏幕)# driver.tap([(200, 2800)], 500)try:while True:print("监听中...")time.sleep(3)red_dots_tmp = driver.find_elements(MobileBy.ID, "com.tencent.mm:id/kmv")red_dots = []for dot in red_dots_tmp:TouchAction(driver).tap(dot).perform()time.sleep(1)msg_tmp = driver.find_elements(MobileBy.ID, "com.tencent.mm:id/b4b")text = msg_tmp[len(msg_tmp) - 1].textresp = response(text)if resp != None:# 点击输入框text_input = driver.find_element(MobileBy.ID, "com.tencent.mm:id/b4a")TouchAction(driver).tap(text_input).perform()# 放入文本text_input.set_text(resp)# 发送send_btn = driver.find_element(MobileBy.ID, "com.tencent.mm:id/b8k")TouchAction(driver).tap(send_btn).perform()# 返回到主页back_btn = driver.find_element(MobileBy.ID, "com.tencent.mm:id/yn")TouchAction(driver).tap(back_btn).perform()# 以下代码弃用,不滑动了,只取第一面的# origin_el = red_dots[0]# idx = 8# if len(red_dots) < 8:#     idx = len(red_dots)# destination_el = red_dots[idx]# driver.drag_and_drop(destination_el, origin_el)except:print("结束")

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...