手机APP数据爬取 Appium简介及原理 环境搭建

首页 » Python教程 » 手机APP数据爬取 Appium简介及原理 环境搭建

Appium简介及原理

Appium是一个开源、跨平台的测试框架,可以用来检测原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOX平台,它使用WebDriver的JSON Wire协议来驱动IOS系统的UIAutomation库及Android系统的UIAutomator框架。它允许自动化人员在不同的平台(IOS和Android)使用同一套API来写自动化脚本,大大增加了代码的复用性!

整个Appium分为Client和Server两部分:Client封装了Selenium客户端类库,为用户提供所有常见的Selenium命令及额外的移动设备控制相关的命令,例如多点触控手势和屏幕朝向等;Server定义了官方协议的扩展,为用户提供了方便的接口来执行各种设备的行为,列如在测试过程中安装/卸载APP等。

Appium支持多种编程语言开发自动化程序,这取决于它选择了Client/Server的设计模式。Client通过发送HTTP请求给Server,当Server接收到Client发送的请求,解析请求内容并调用对应的系统框架,在移动设备上执行自动化操作。因为Client和Server之间是采用HTTP协议,所以Client用什么语言来开发自动化程序都是可以的。

从Appium的原理图可以看到,Appium-Client能为我们提供自动化功能模块,用于编写自动化程序。在Python中,它是第三方模块Appium,该模块是在Selenium库的基础上进行封装。Appium-Server是基于Node.JS开发的服务端,主要接收Appium-Client的请求,根据请求信息去操作移动设备,从而实现自动化操作。

Appium环境搭建

在Windows系统上搭建Appium开发环境,需要安装JavaJDKAndroid SDKNode.JSAppium-ServerAppium-Client,具体的安装说明如下:

1. Java JDK:搭建Java的开发环境。
2. Android SDK:Android软件开发包,基于Java的开发环境运行,可以在计算机启用Android模拟器或者连接Android手机。
3. Node.JS:搭建Node.JS的开发环境。
4. Appium-Server:安装Appium的服务器,基于Node.JS的开发环境运行。
5. Appium-Client:安装Appium的客户端,编写并运行Appium自动化代码。


Java JDK是在Windows上搭建Java的开发环境,因为Android SDK是基于Java的开发环境运行的。Android SDK仅支持Java 8版本,因此我们需要安装Java 8版本,在浏览器中访问http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,下载与计算机系统匹配的安装包,目前需要注册才能下载,比较麻烦!

安装包下载后直接双击运行并根据安装提示即可完成安装,安装路径使用默认设置即可。安装成功后,还需要设置计算机的系统环境变量。右键单击我的电脑→选择属性→选择系统保护→选择高级→单击环境变量→单击系统变量的新建按钮,分别输入变量名JAVA_HOME变量值(jdk文件夹路径)。

Java环境变量设置成功后,打开CMD窗口来验证Java是否安装成功。在CMD窗口输入java -version并按回车就会显示当前Java的版本信息,如果出现不是外部或内部命令,就是环境变量没有配置成功。


搭建Android SDK。Android SDK提供了Android API库和开发工具构建、测试和调试应用程序。简单来说,Android SDK可以用于开发和运行Android系统的软件。这里需要下载Android Studio,在里面安装SDK。或者通过:http://tools.android-studio.org/index.php/sdk这个链接下载。找到对应版本的sdk.zip下载解压。解压之后建议放在磁盘较大的位置,因为后续更新Android SDK会占用比较大的存储空间。

手机APP数据爬取 Appium简介及原理 环境搭建

接下来使添加系统环境变量,添加方式与Java的相似。新增变量ANDROID_HOME变量值是Android SDK的文件路径。然后在系统变量Path添加两个变量值,分别是Android SDKplatform-toolstools文件夹的文件路径,不同路径之间用分号(;)分割。

找到该文件中的SDK Manager.exe并双击运行,这是更新安装SDK的版本信息。根据实际需求选择安装Android版本,或者按照下图进行选择安装

手机APP数据爬取 Appium简介及原理 环境搭建
手机APP数据爬取 Appium简介及原理 环境搭建

完成Android SDK的更新后,打开AVD Manager.exe来创建Android模拟器Android模拟器是能在电脑上模拟Android操作系统,可以安装、使用、卸载Android应用的软件,它让你在电脑上也能体验操作Android系统的全过程。

在AVD Manager界面上单击“Create”按钮会出现Android模拟器的配置信息,填写配置信息后单击“OK”按钮就能创建Android模拟器

手机APP数据爬取 Appium简介及原理 环境搭建

Android模拟器创建后,在AVD Manager界面可以看到刚创建的模拟器信息,使用鼠标选中模拟器信息并单击“Start”按钮→单击“Launch”按钮即可运行Android模拟器,Android模拟器开启时间相对较长,需要耐心等待。

手机APP数据爬取 Appium简介及原理 环境搭建

最后测试Android SDK与手机的连接是否成功,手机通过USB连接电脑,并且开启手机的开发者模式以及安装相应的驱动程序,具体的开启方法可自行网上查询。在CMD命令窗口输入adb devices查看手机信息

手机APP数据爬取 Appium简介及原理 环境搭建

这里为什么要费事搞Android模拟器呢?就是为了我们可以找到deviceName的值,这个下面会说明。


下一步搭建Node.JS的开发环境,它是用于运行Appium-Server。nodejs下载地址:https://nodejs.org/zh-cn/download/。下载zip包解压到自己想放的目录,然后把该目录加入Path环境变量即可。如果不想或者不会添加环境变量,可以打开nodejs目录,在路径框中输入cmd,可以在当前目录下打开cmd窗口:

手机APP数据爬取 Appium简介及原理 环境搭建

安装appium,由于国内的墙太高,所以我们需要使用npm的淘宝镜像

安装cnpm:npm install -g cnpm –registry=https://registry.npm.taobao.org

使用cnpm安装:cnpm install -g appium

这应该都可以成功安装。appium会被安装到nodejs目录下,直接使用appium命令启动即可


Appium-Server分为Server版Desktop版,Server版在2015年就已经停止更新,目前Desktop版已经接替Server版的使命。这里就以Desktop为例进行介绍,下载地址:https://github.com/appium/appium-desktop/releases。选择操作系统对应版本下载,Windows直接双击安装即可。墙太高,科学上网!

Appium-Desktop下载后直接运行安装,安装路径使用默认或者自定义即可。安装成功会在桌面上看到Appium图标,双击打开,在Appium-Desktop的界面上单击“StartServer”按钮来启动Appium-Server

手机APP数据爬取 Appium简介及原理 环境搭建


最后使用pip命令安装Appium-Client:pip install appium-python-client

连接Android系统

Appium对Android系统实现自动化操作,第一步是将Appium与Android进行通信连接,连接代码相对固定。在连接代码中根据Android系统信息进行修改即可实现连接:

from appium import webdriver
desired_caps={}
# 设置Android系统信息
desired_caps['platformName']='Android'
desired_caps['platformVersion']='9'
desired_caps['deviceName']='8.1'
desired_caps['appPackage']='8.1'
desired_caps['appActivity']='8.1'
desired_caps['automationName']='uiautuomator2'

# 向Appium-Server发送请求实现连接
driver=webdriver.Remote('http://loaclhost:4723/wd/hub',desired_caps)

变量desired_caps是一个字典,字典的key是代表Appium与Android系统的连接参数,字典的value是Android系统信息。每个key代表不同的意思,具体说明如下:

  • platformName:需要被连接的操作系统,例如IOS、Android或FirefoxOS。
  • platformVersion:Android系统当前版本信息,例如Android 9
  • deviceName:每台移动设备或模拟器的设备名,设备名是唯一的。
  • appPackage:需要执行自动化的Android应用的包名。
  • appActivity:Android应用包中启动的Android Activity名称。

以上5个参数是连接Android系统的基本参数,每个参数值的获取方式各不相同,下面我们逐一简单说明。

platformName:根据自己的手机系统设置。
platformVersion:一般在手机的“设置”→“系统”→“关于手机”里面可以找到Android版本信息。

deviceName:打开Android SDK所在的文件夹,找到tools文件夹里的uiautomatorviewer.bat文件并双击运行,该文件启动一个名为UI Automator Viewer的软件,该软件用于捕捉Android应用程序的控件元素信息。

这里需要开启我们的Android模拟器和连接手机,这样才会出现下图的选择界面:

手机APP数据爬取 Appium简介及原理 环境搭建

界面中的设备名就是参数deviceName的参数值。必须同时保证计算机已连接两台或以上的Android设备或Android模拟器。

appPackage:同样需要借助工具UI Automator Viewer获取,这里我们选择我们的真机而不是模拟器,单击“OK”按钮。假设现在我想要确定淘宝的appPackage名,,软件就会自动捕捉手机当前界面的控件信息。单击手机上的某个控件,该控件信息就会显示在右侧。其中参数package的参数值就是参数appPackage的参数值。
手机APP数据爬取 Appium简介及原理 环境搭建

appActivity:需要保证计算机上只有一台Android设备或Android模拟器。以手机为例,关闭Android模拟器,打开CMD窗口并输入adb shell dumpsys activity activities来获取当前设备的程序运行信息。在这些信息中可以找到appActivity的参数值,比如查找淘宝的appActivity,通过参数appPackage的值com.taobao.taobao。例如 ResumedActivity: ActivityRecord{250cbe0 u0 com.taobao.taobao/com.taobao.tao.TB MainActivity t27},斜杠后面的com.taobao.tao.TB MainActivity就是appActivity的参数值。或者可以使用以下命令查看:

手机APP数据爬取 Appium简介及原理 环境搭建

# adb查看包名
adb shell pm list packages 

# adb查看设备名:
adb devices -l

# adb查看appActivity
cmd 中输入:adb shell 进入shell命令
shell中输入:logcat | group ActivityManager 真机运行应用,可以实时查看当前正在运行的Activity

参数appPackage和参数appActivity的获取方法有很多,也可以自行百度搜索查看,这里不再过多介绍!除此之外,Appium在连接移动设备或模拟器上还提供了很多连接参数,下图是一些常用的参数及其说明:

手机APP数据爬取 Appium简介及原理 环境搭建

APP的元素定位

参考文章:App的元素定位和操控方法

APP的元素操控

参考文章:App的元素定位和操控方法

淘宝APP商品采集

未经允许不得转载:作者:鳄鱼君Ba, 转载或复制请以 超链接形式 并注明出处 鳄鱼君Ba
原文地址:《手机APP数据爬取 Appium简介及原理 环境搭建》 发布于2020-05-27

分享到:
赞(1) 赏杯咖啡

评论 1

1 + 8 =
  1. #1

    牛笔的一比比

    未来可期1个月前 (05-28)回复

文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册