赞
踩
目录
随着互联网的发展,数据不仅仅知识存在于PC端。移动端的数据在这几年的占比以及势头发展趋势呈现几何倍数的增长。对于做数据分析,用户画像,市场调研来说仅仅参考PC端的数据是不够的。那么与此同时移动的数据就显得尤为重要。
Adb又称Android调试桥,用于通过电脑端与模拟器或者是设备之间的交互的一个工具
Adb client 命令行程序‘adb’用于从shell或脚本中运行adb命令
Adb server adb server 是运行在PC的的一个后台程序
Adbd 程序adbd作为一个后台进程在Android设备或模拟器系统中运行
把adb的bin目录添加到环境变量当中

- adb devices 查看链接的移动设备
- adb kill-server 关闭链接的移动设备
- adb install apk文件路径 安装app应用
- adb shell pm list packages 查看应用包名
- adb uninstall 应用包名 卸载应用

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯。
官网:
Windows安装Fiddler:
Fiddler安装及证书配置教程(Windows) - 柠檬草不孤单 - 博客园 (cnblogs.com)
https://www.cnblogs.com/temari/p/13418037.html
(1)支持IE,Chrome,FireFox等等浏览器;
(2)可以在phone,pad等移动设备进行连接;
(3)fiddler教程:
fiddler配置及使用教程 - purplelavender - 博客园 (cnblogs.com)
https://www.cnblogs.com/woaixuexi9999/p/9247705.html【Fiddler学习】Fiddler教程,比较经典全面(转) - 伊凡Ivan - 博客园 (cnblogs.com)
https://www.cnblogs.com/conquerorren/p/8472285.html




注意,代理服务器端口为fiddler的端口号,默认为8888;


然后打开模拟器的浏览器,搜索:本机ip:代理端口号,下载证书;

然后对它随意命名即可:

这样fiddler就设置好了,我们就可以使用fiddler抓取到数据包了。
然后用requests模块正常发送请求即可;如:
- import requests
-
-
-
- headers = {
- 'Host': 'mapi.kyboye.com',
-
- 'User-Agent': 'KaoYanBang AipBot/1.0 (KaoYanClub-Android/3.2.9; android/7.1.2; samsung+SM-G9810)'
- }
-
- url = 'https://mapi.kyboye.com/club/thread/guide?type=5&skip=0&psize=40&_t=1649396710844'
-
- res = requests.get(url, headers=headers)
- print(res.json())
这里要强调的是,fiddler获取header和url:

点击Just url和Headers only即可。
1.搭建java环境
2.搭建Android环境
Java环境搭建:
java1.8安装及环境变量配置 - nojacky - 博客园
https://www.cnblogs.com/nojacky/p/9497724.html
将SDK保存到任意硬盘下
Android SDK文件夹解压到任意目录
配置环境变量
- 1.进入我的电脑 -> 属性 -> 高级系统设置 -> 环境变量
-
- 2.在系统变量下点击新建 -> 变量名: ANDROID_HOME -> 变量值:D:\android-sdk -> 点击确定按钮
-
- 3.在系统变量下找到系统的path变量,最后添加:;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;(最前面是一个分号,如果path变量最后已有分号,可不用添加) -> 点击确定按钮或直接添加D:\androidsdk\platform-tools
验证环境变量
重启命令行工具,命令行输入adb,不报错即可
与模拟器设备相连
上述的软件环境都准备好以后,要自动化手机APP,需要:
如果用模拟器
ADB全名 Android Debug Bridge,是一个调试工具。
adb包含三个部分

获取包名和界面名
使用步骤
adb shell dumpsys window windows | findstr mFocusedApp
打开设置界面,输入命令adb shell dumpsys window windows | findstr mFocusedApp
- adb shell dumpsys window windows | findstr mFocusedApp
- mFocusedApp=AppWindowToken{2c5d0fc token=Token{39766def ActivityRecord{2d26ace u0 com.android.settings/.Settings t2}}}
adb其他命令

appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于iOS和Android操作系统。原生的应用是指Android或iOS的SDK编写的应用,移动网页应用是指网页应用,类似于ios中Safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。
使用Appium和Python来进行自动化测试,需要安装两个东西,一个是appium的客户端,一个是appium-python库,这两个需要安装的东西在加上手机就可以进行自动化测试了。他们之间的关系是:Python代码->Appium-Python库->Appium->手机。
教程:
启动成功展示:

appium-python库安装
pip install Appium-Python-Client



即可像selenium一样在页面上提取数据了。
打开模拟器中的浏览器,输入百度网址并打开
步骤
- from appium import webdriver
-
- caps = dict()
-
- caps['platformName'] = 'Android'
- caps['platformVersion'] = '5.1.1'
- caps['deviceName'] = 'Android'
- caps['appPackage'] = 'com.android.browser'
- caps['appActivity'] = '.BrowserActivity'
- caps['unicodeKeyboard'] = True
- caps['resetKeyboard'] = True
- caps['noReset'] = True
- caps['newCommandTimeout'] = 6000
- caps['automationName'] = 'UiAutomator2'
-
-
- driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
-
- driver.get('https://www.baidu.com/')

打开游戏中心并搜索淘宝
- from appium import webdriver
- from appium.webdriver.extensions.android.nativekey import AndroidKey
-
-
- caps = dict()
-
- caps['platformName'] = 'Android' # 被测手机是安卓
- caps['platformVersion'] = '5.1.1' # 手机安卓版本
- caps['deviceName'] = 'Android' # 设备名,安卓手机可以随意填写
- caps['appPackage'] = 'com.bignox.app.store.hd' # 启动APP Package名称
- caps['appActivity'] = '.ui.activity.MainActivity' # 启动Activity名称
- caps['unicodeKeyboard'] = True # 使用自带输入法,输入中文时填True
- caps['resetKeyboard'] = True # 执行完程序恢复原来输入法
- caps['noReset'] = True # 不要重置App
- caps['newCommandTimeout'] = 6000
- caps['automationName'] = 'UiAutomator2'
-
- # 连接Appium Server,初始化自动化环境
- driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
-
- # 设置等待时间
- driver.implicitly_wait(10)
-
- try:
- skip = driver.find_element_by_id('com.bignox.app.store.hd:id/btn_skip')
-
- if skip:
- skip.click()
- except:
- pass
-
- driver.find_element_by_id('com.bignox.app.store.hd:id/tv_search').click()
-
- search = driver.find_element_by_id('com.bignox.app.store.hd:id/et_word')
- search.send_keys('淘宝')
-
- # 输入回车键,确定搜索
- driver.press_keycode(AndroidKey.ENTER)

注:
- from appium import webdriver
- # from selenium import webdriver
-
- caps = dict()
-
- # 系统
- caps['platformName'] = 'Android'
- # 手机安卓版本 5 5.1 5.1.1
- caps['platformVersion'] = '5.1.1'
- # 设备名字 可以随便写
- caps['deviceName'] = 'Android'
- # 包名
- caps['appPackage'] = 'com.tal.kaoyan'
- # 界面名字
- caps['appActivity'] = '.ui.login.LoginActivity'
- # 使用自带的输入法,输入中文填True
- caps['unicodeKeyboard'] = True
- # 执行完程序恢复原来输入法
- caps['resetKeyboard'] = True
- caps['noReset'] = True
-
-
- # localhost
- driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)

Appium文档:API Documentation - Appium
http://appium.io/docs/en/about-appium/api/
将这个文件

复制到这里
![]()
然后将nox_adb改名为adb,原先的文件大家可以做个备份
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。