因为要爬取某个APP的数据,所以从0开始研究,在这个过程中也是各种乱,现在也才总结一点思路出来,不管怎么样,先把思路理清,开始
总体思路无非就是模拟器和电脑连接后,通过python代码去操控模拟器内的APP软件:
1.首先,要明白的核心概念是monkey
Monkey是什么?
Monkey是发送伪随机用户事件的工具流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。
二、Monkey在哪里?
每一台android手机里面都有Monkey工具,但是我们是看不到的,因为它不是一个可视化的工具。它不像wechat是可视化的,能打开,能执行用户操作,有图形界面,Monkey没有。
三、如何与Monkey进行通讯?
我们需要借助ADB(Android Debug Bridge),安卓调试桥。
四、环境搭建:
第一个前提条件就是安装java jdk;第二个条件就是安装android sdk。jdk大家都应该知道怎么安装,同样道理android sdk(Software development kit)android专属软件开发工具包。
图形思路:
下面就来安装着两个核心的东西:
1、安装好jdk,sdk,根据安装的位置设置环境变量,
jdk:
JAVA_HOME------C:\Program Files\Java\jdk1.8.0_171
PATH------;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
sdk:
解压adt-bundle-windows-x86_64-20140702.zip
ANDROID_HOME------C:\Users\dell\Downloads\adt-bundle-windows-x86_64-20140702\adt-bundle-windows-x86_64-20140702\sdk
PATH------;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
PATH------;%ANDROID_HOME%\build-tools\android-4.4W;
测试
到这里为止,这两个包装完了,到这一步为止其实已经截止了,已经能实现通过adb命令来操控APP了,但是这不是我们想要的,我们是想要用python代码来操控,要用appium来操作,那么就还要装appium,但是在这之前我们还必须要装node.js,因为appium就是用它来实现的,node.js就是解释器
安装node.js和appium
1、安装node.js
设置环境变量
PATH------C:\Program Files\nodejs\
测试
2、appium
appium是用.net开发的,所以需要安装.net framework4.5,下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=3065332
appium-doctor:appium安装好后,找到这个文件目录C:\Program Files (x86)\Appium\node_modules.bin;设置环境变量
PATH------C:\Program Files (x86)\Appium\node_modules.bin;
测试
到这里为止,appium也彻底的解决了,安装完毕,这里就可以用appium进行操控了,那么我们还剩下的一步就是用python代码来操控了,最后一步了额
1、Appium-Python-Client
pip install Appium-Python-Client
到此截止,我们要装的全部专业的包全部安装完毕,剩下的我们就是非专业的安装了,无非就是一个简单的安卓模拟器而已了,马上贴上
1.我这里选择的是逍遥模拟器
再在模拟器安装一个需要的APP就行了,到这里就完了,简单吧
到现在为止,真正的准备工作全部截止!!!
现在的模拟器和我们准备的软件可以说还是独立的,我们要操纵模拟器,那么两者之间就必须要建立连接,接下来我们就做这样的一个工作:.
Appium启动App的方式有两种:一种是用Appium内置的驱动器来打开App,另一种是利用Python程序实现此操作。下面我们分别进行说明。
1.Appium内置的驱动器来打开App,其实这种最主要的是用来进行前期调试的,目的是为了先定位,写代码用的
首先打开Appium,启动界面如下图所示。
点击start server启动一个服务(这里的服务主要是appium的服务,他本身就相当于一个服务器,python的代码命令要通过他才能实现)
接下来,我们来实现通过appium控制模拟器的最核心的步骤,就是在appium上配置模拟器的数据:
干!!!
左下角的链接是文档说明,可以查看相对应的文档。
设备id和appPackage,appActivity都可以通过adb devices获取(可以看我的adb文章),如果是模拟器,需要先连接
如果没有安装,需要在增加一个参数app,后面放app的绝对路径
这样配置好之后,就会自动打开我们的app,启动之后,会打开一个页面,这个页面可以帮助我们分析各个元素的属性等等内容
似乎没啥问题,但是这个过程往往不知道参数配啥,或者说输入的命令来获取参数的时候各种报错,那么我们要做的就是正确获取参数,获取参数的前提是必须要确保已经和模拟器进行了连接,我们一步一步来:
1.确保连接
我们不能保证每次电脑和模拟器都是自动连接的,那么我们就手动连接,做到万无一失
adb connect 127.0.0.1:62001
adb connect 127.0.0.1:******即可。
其中:******就是模拟器的端口号。
这是连接模拟机的命令,有人说,端口号是什么,我怎么知道我使用的模拟机的端口号,没事,我这里还有:
夜神模拟器端口号:62001
海马模拟器端口号:26944
逍遥模拟器端口号:21503
MuMu模拟器端口号:7555
天天模拟器端口号:6555
2.获取设备信息
deviceName,使用adb devices -l 命令
appPackage和appActivity
使用
-
adb shell
-
dumpsys activity | grep mFocusedActivity
其中第一个方框中的信息为appPackage,第二个框中的信息为appActivity。
需要配置启动App时的Desired Capabilities参数,它们分别是platformName、deviceName、appPackage、appActivity。
platformName:它是平台名称,需要区分Android或iOS,此处填写Android。
deviceName:它是设备名称,此处是手机的具体类型。
appPackage:它是App程序包名。
appActivity:它是入口Activity名,这里通常需要以 . 开头。
这样设置过后,我本来用的逍遥模拟器,结果一直不行,反复包错误,最后经过搜索,说换个模拟器就可以了,最后心一横,算了,用夜神吧,一试,嘿嘿,果然可以了,结果出来了
这齐整的界面,一个字,就是美!!!
可是又犯难了,我看着这个界面,他认识我,但是我不认识他啊,别急,下面我们就来介绍下这个界面怎么用
参考链接:
使用appium之前为什么要安装nodejs???
https://blog.csdn.net/weixin_30868855/article/details/99813426
adb命令对模拟器的操作(这个链接里面,包含了连接模拟机的命令额)
https://blog.csdn.net/Thinkingcao/article/details/88027628
adb devices 命令
这个链接里面有和手机链接不上的情况讲解
https://blog.csdn.net/weixin_38374974/article/details/83589633
讲monkey的
https://blog.csdn.net/weixin_38374974/article/details/80762535
这里主要涉及的是查找设备的命令
https://www.cnblogs.com/taoke2016/p/10060781.html
这里是讲Airtest的,这个暂时没时间看
https://www.cnblogs.com/xieqiankun/p/use_airtest.html
这个是装Microsoft.NET Framework 的
https://www.onlinedown.net/soft/572330.htm
这个是装包步骤,很重要,里面步骤还是比较全
https://www.cnblogs.com/zylq-blog/p/9224950.html