用appium + python3实现app的数据抓取

appium可以说是做app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本语言也是支持java和Python

一、安装部署jdk环境,设置好JAVA_HOME变量

二、android-sdk下载安装

先去官网 下载最新d的sdk安装程序,点击SDK Manager.exe 下载最新的包,可通过工具-设置,添加下载代理。

设置ANDROID_HOME,对应变量值为:D:\install\android-sdk-tool(sdk安装路径),path添加两个变量,分别对应sdk目录下的tools和platform-tools, path里面添加D:\install\android-sdk-tool\tools和D:\install\andsdk-tool\platform-tools

cmd中输入adb,看是否出现正确信息,否则安装不成功

 

三、连接手机

cmd中输入adb devices 如果正常显示手机信息,说明连接成功

 

四、Appium的安装与部署

参考https://cuiqingcai.com/5407.html

首先,需要安装Appium。Appium负责驱动移动端来完成一系列操作,对于iOS设备来说,它使用苹果的UIAutomation来实现驱动;对于Android来说,它使用UIAutomator和Selendroid来实现驱动。

同时Appium也相当于一个服务器,我们可以向它发送一些操作指令,它会根据不同的指令对移动设备进行驱动,以完成不同的动作。

安装Appium有两种方式,一种是直接下载安装包Appium Desktop来安装,另一种是通过Node.js来安装,下面我们介绍一下这两种安装方式。

Appium Desktop

Appium Desktop支持全平台的安装,我们直接从GitHub的Releases里面安装即可,链接为https://github.com/appium/appium-desktop/releases

Windows平台可以下载exe安装包appium-desktop-Setup-1.1.0.exe,Mac平台可以下载dmg安装包如appium-desktop-1.1.0.dmg,Linux平台可以选择下载源码,但是更推荐用Node.js安装方式。

安装完成后运行,看到如图示。

Node.js

首先需要安装Node.js,具体的安装方式可以参见http://www.runoob.com/nodejs/nodejs-install-setup.html,安装完成之后就可以使用npm命令了。

接下来,使用npm命令全局安装Appium即可:

npm install g appium

此时等待命令执行完成即可,这样就成功安装了Appium。

五、Android开发环境配置

如果我们要使用Android设备做App抓取的话,还需要下载和配置Android SDK,这里推荐直接安装Android Studio,其下载地址为https://developer.android.com/studio/index.html?hl=zh-cn。下载后直接安装即可。

然后,我们还需要下载Android SDK。直接打开首选项里面的Android SDK设置页面,勾选要安装的SDK版本,点击OK按钮即可下载和安装勾选的SDK版本

六、appium获取appPackage和appActivity

参考https://blog.csdn.net/mtbaby/article/details/78676477

appPackage和appActivity 进行appium自动化测试非常重要的两个参数,我们所测试的APP不同,这两个参数肯定也是不一样的。那如何快速的获取这APP的这两个参数呢

方法一(最简单有效的方法)

通过cmd命令,前提是先打开手机中你要获取包名的APP

1. adb shell

2. dumpsys activity | grep mFocusedActivity

 

方法二(第二简单方法)

如果你安装了Appium,进入设置页,选择APK 路径,下面就会显示包名和Activity名称

方法三

apk文件解压,查看AndroidManifest.xml文件,在里面搜索:manifest 对应的就是appPackage,

搜索:activity对应的就是appActivity,

方法四

这种方法也比较简单,主要针对你没有.apk包的情况,比如Android原生自带的APP(计算器、通讯录、短信…),可以通过adb 命令。

1,打开APP。

2,执行> adb logcat>D:/log.txt

3, 胡乱的对APP做一些操作。

4, Ctrl+c 结束adb命令。

5, 打开log.txt文件,搜索:Displayed

六、appium的使用

打开appium,

platformName:Android,固定写法

deviceName:设备名称,就是刚才的adb devices -l中mode后面就是

appPackage:app包名

appActivity:app活动名,通过使用adb logcat | grep -i activitymanager ,然后再点击app,就能捕获到启动的app的如上信息了

automationName:固定写法Appium

platformVersion:这个是手机的Android的版本

autoAcceptAlerts: true , 默认选择接受弹窗的条款,有些app启动的时候,会有一些权限的弹窗,例如如下

noReset:true, 每次appium对app进行操作的时候,为了不保存修改的数据和app设置的内容而不影响下次使用,需要设置为true

 

有个简单的方法便可以获得appPackage和appActivity

start sessions后

七、python对接Appium

安装 pip install Appium-Python-Client

以下是模拟进入vivo app的界面

from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

PLATFORM='Android'
deviceName='HUAWEI_P7_L09'
app_package='com.tencent.mm'
app_activity='.ui.LauncherUI'
driver_server='http://127.0.0.1:4723/wd/hub'

class Moments():
    def __init__(self):
        self.desired_caps={
        'platformName':PLATFORM,
        'deviceName':deviceName,
        'appPackage':app_package,
        'appActivity':app_activity}
        self.driver=webdriver.Remote(driver_server,self.desired_caps)
        self.wait=WebDriverWait(self.driver,300)

    def login(self):
        print('进入登录界面——————')
        login=self.wait.until(EC.presence_of_element_located((By.ID,'com.bbk.appstore:id/wlan_choose_page_btn')))
        login.click()

    def main(self):
        self.login()

M=Moments()
M.main()

参考:https://zhuanlan.zhihu.com/p/41311503

You May Also Like

About the Author: daidai5771

发表评论

电子邮件地址不会被公开。 必填项已用*标注