windows下app爬虫环境搭建:python + fiddler + Appium + 夜神模拟器

python、夜神模拟器自行下载安装

1、安装java

https://www.oracle.com/java/technologies/downloads/#jdk19-windows

注意安装java8,不要像我一样如下图一样安装java19,新的不支持后面的uiautomatorviewer.bat运行,不然会闪退

配置环境变量

系统环境下:JAVA_HOME
在这里插入图片描述
在Path下添加

%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

在这里插入图片描述
CLASSPATH 注意:最前面有个【点】,一定不要漏掉!

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

在这里插入图片描述

验证安装情况

打开 cmd 命令行工具,输入 java -version,返回信息如图所示表示安装配置成功
在这里插入图片描述

2、安装 Android SDK Tools

2.1 下载 Android SDK Tools

http://tools.android-studio.org/index.php/sdk
在这里插入图片描述

2.2 安装 SDK Tools

按提示进行安装,注意文件包的安装路径,如果C盘空间不够的话,后面可能会下载 packages 不成功,所以最好放到其他盘,如图我的安装:
在这里插入图片描述

2.3 安装 pacakge 包

安装完成后打开后
在这里插入图片描述
先点击选中左侧的每个 packages 包,然后点击右侧的 Accept License,依次分别点选并接受,等全部 Packages 包都变成绿色对号以后,再点击 Install 进行安装;

在这里插入图片描述
注意:包很大,20多G,尽量用wifi,由于这些东西是在Google的服务器上下载的,可能会因网速下载失败,会跳出报错log,不过不影响下载进度,可以等待其他组件下载完成后再重新多下载几次那几个下载失败的
等待全部安装完毕即可
在这里插入图片描述

如果一直下载失败,如上图,可以尝试换成其他有Android SDK的国内镜像服务器来下载安装,推荐几个镜像地址:
1、中科院开源协会镜像站地址:
IPV4/IPV6 : http://mirrors.opencas.ac.cn 端口:80
2、北京化工大学镜像服务器地址:
IPv4: http://ubuntu.buct.edu.cn/  端口:80
IPv4: http://ubuntu.buct.cn/  端口:80
IPv6: http://ubuntu.buct6.edu.cn/  端口:80
3、大连东软信息学院镜像服务器地址:
http://mirrors.neusoft.edu.cn  端口:80

举一个例子,比如使用第三个大连东软的镜像地址,使用方法如下:
在这里插入图片描述
接着点击close,关闭对话框,再重新启动SDK Manager应该就会开始安装了。
但是我的在下载android-R时一直报错,换下载地址也不行,但是应该不影响配置,可以先略过吧
在这里插入图片描述

2.4、替换 UIAutomator
注意:之所以要配置 UIAutomator,是因为 Android SDK tools 包中原生的工具在获取元素时,不能很好地满足开发需求;

下载链接: https://pan.baidu.com/s/1BxcMt0bpbx8agH2ZNRAeYA
提取码:i8n6

在 \sdk\tools\lib* 目录下找到 uiautomatorviewer.jar,复制该文件的文件名,将改文件移动到其他文件夹,将下载的 uiautomatorviewer.jar 复制进文件包替换原来的文件。

2.5 替换adb

在 android-sdk\platform-tools 目录下找到 adb.exe,改名为adb_bak.exe
在夜神模拟器安装目录的 bin 目录下找到 nox_adb.exe 文件,复制到 android-sdk\platform-tools 目录下,重命名为 adb.exe
在这里插入图片描述

在这里插入图片描述
ADB 命令:

adb devices  # 查看 adb 已连接的设备
adb kill-server  # 关闭 adb 服务
adb start-server  # 启动 adb 服务
2.6 配置 ANDROID 环境变量

在系统环境变量添加 ANDROID_HOME,路径为 SDK 文件安装路径
在这里插入图片描述
在 Path 中添加如下

%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools

在这里插入图片描述

3、安装 Appium

3.1 下载安装Appium软件

下载地址:https://github.com/appium/appium-desktop/releases
在这里插入图片描述
下载很慢,慢慢等待吧!

在这里插入图片描述
在这里插入图片描述
默认的安装路径是在C:\Program Files\Appium Server GUI
在这里插入图片描述
然后点击桌面图标启动如下图:
在这里插入图片描述
在这里插入图片描述
如下图所示表示安装成功:
在这里插入图片描述

3.2、安装Appium Inspector
在Appium1.22.2中版本服务和元素查看器分家了,查看元素信息就必须下载Appium Inspector

1、点击InspectorMoved按钮会自动跳转到该网页:
https://github.com/appium/appium-inspector
在这里插入图片描述
在这里插入图片描述

2、点击Releases。
在这里插入图片描述
3、进入页面点击如下图下载
在这里插入图片描述
下载很慢,慢慢等待吧!
安装后打开
在这里插入图片描述

在这里插入图片描述
4、安装Appium-Python-Client
cmd窗口输入:

pip install Appium-Python-Client

在这里插入图片描述
python进入命令行模式测试:

from appium.webdriver.webdriver import WebDriver

在这里插入图片描述
如图显示表示成功

4、设置adb链接夜神模拟器

1、夜神模拟器打开USB调试
进入设置打开(没显示开发者选项的去版本里连续点击)
在这里插入图片描述
在这里插入图片描述
2、打开adb链接模拟器
执行如下命令:

adb connect 127.0.0.1:62001

在这里插入图片描述
查看链接情况:

 adb devices

在这里插入图片描述
表示连接成功

3、配置 app desired_caps
获取 apk 包名(appPackage)、活动名(appActivity)等(这里我打开的是小红书)

adb shell dumpsys activity activities

在这里插入图片描述
– 得到下面的返回结果,appActivity 值为 com.xingin.xhs.index.v2.IndexActivityV2,app 的 appPackage 值为 com.xingin.xhs;
– 这里注意:appActivity 返回值本来是 com.xingin.xhs/.index.v2.IndexActivityV2,需要 去掉中间的反斜线!

打开模拟器,依次进入 设置 > 关于平板电脑,获取模拟器参数参数;
在这里插入图片描述

# 定义启动设备需要的参数
desired_caps = {}
# 设备系统
desired_caps['platformName'] = 'Android'
# 设备系统版本号        
desired_caps['platformVersion'] = '5.1.1'
# 设备名称
desired_caps['deviceName'] = 'Meizu'
## 要测试的应用的地址
#desired_caps['app'] = 'xxx.apk'   # 注意是 apk 文件在电脑上的绝对路径
# 应用的包名
desired_caps['appPackage'] = 'com.xingin.xhs'
desired_caps['appActivity'] = 'com.xingin.xhs.index.v2.IndexActivityV2'   # appActivity 值需要去掉反斜线

4、UIAutomator 获取元素位置
在 sdk\tools\bin 目录下找到 uiautomatorviewer.bat 文件,双击打开运行 uiautomatorviewer
在这里插入图片描述
启动 uiautomatorviewer 后,点击左上安卓角手机图标连接安卓模拟器

注意:每次操作 App 出现页面变换以后,如果出现下图报错,需要手动点击左上角安卓手机图标,才能够在 UIAutomator 同步页面;

在这里插入图片描述
在这里插入图片描述
将模拟器页面同步到 UIAutomator 之后,在模拟器打开 app ,再次点击左上角安卓手机图标,就可以在 UIAutomator 看到同步后的小红书 app 页面

注意:如果出现如下报错,那就重新连接下

在这里插入图片描述
在这里插入图片描述

结果报错:
在这里插入图片描述
如果是京东app是可以的:
在这里插入图片描述

既然这样,那就不用官方的了,换第三方的(当然了,如果要爬的app没毛病用官方的也没问题):

网上也有办法,下载新的tool工具,替换本地的tool
step1 下载新的tools,http://www.android-studio.org/
在这里插入图片描述
step2、解压后替换电脑里已安装Android SDK 目录里的tools目录

将原来的tools改个名字,不用删除,相当于备份,影响点就是根目录下的SDK Manager.exe暂时无法打开,点击以后黑屏一闪而过;然后将上面下载的sdk tools 解压复制到Android sdk根目录下
在这里插入图片描述
自行测试

4.1 这里用官方的爬京东的试试
此处展示 启动、输入关键字查询 两个动作的代码,请读者自行编写代码完成 app 操作
编写代码:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time


class Jingdong():
    def __init__(self):
        desired_caps = {}
        # 设备系统
        desired_caps['platformName'] = 'Android'
        # 设备系统版本号
        desired_caps['platformVersion'] = '5.1.1'
        # 设备名称
        desired_caps['deviceName'] = '127.0.0.1:62001'
        ## 要测试的应用的地址
        #desired_caps['app'] = 'xxx.apk'   # 注意是 apk 文件在电脑上的绝对路径
        # 应用的包名
        desired_caps['appPackage'] = 'com.jingdong.app.mall'
        desired_caps['appActivity'] = 'com.jingdong.app.mall.main.MainActivity'

        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  # 地址为appium地址
        time.sleep(8)

    def search(self, keyword):
        self.driver.find_element_by_xpath('//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.FrameLayout[1]/android.support.v7.widget.RecyclerView[1]/android.widget.RelativeLayout[2]/android.widget.LinearLayout[1]').click()
        time.sleep(3)
        self.driver.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[2]/android.widget.EditText[1]").send_keys(keyword)
        time.sleep(3)
        self.driver.find_element_by_xpath("//android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.TextView[1]").click()
        time.sleep(3)


def main():
    jingdong = Jingdong()
    keyword = "手机"
    jingdong.search(keyword)

if __name__ == '__main__':
    main()

关闭adb服务

adb kill-server

4.2 这里用第三方的 UiAutoMator2+web-editor
https://github.com/alibaba/web-editor

4.2.1 UiAutoMator2简介
UIAutomator2是⼀种Android UI⾃动化框架,该框架优点:
1.环境搭建便捷
2.UI控件识别可视化好
3.UI⾃动化编写采⽤python,学习成本低
4.UI⾃动化脚本运⾏稳定
缺点:
存在设备兼容性问题,如:
华为⼿机,⽆法通过IP离线执⾏UI⾃动化
三星S8⼿机微信webview⻚⾯⽆法识别元素

安装:pip install uiautomator2

4.2.2、web-editor简介
web-editor 类似于appium中的inspector;其功能也是⽤于元素定位调试

2、安装

pip install weditor

在这里插入图片描述
如果安装报错,那就制定版本安装:pip install weditor==0.6.4
下载安装比较慢,可以自己指定源安装

如果实在想安装最新版本的,那就用这个命令从github下载安装:
git clone https://github.com/openatx/weditor pip3 install -e weditor

在这里插入图片描述
如果想安装最新的不报错,那就去github下载,然后修改报错的文件:

.eggs\pbr-5.11.0-py3.9.egg\pbr\packaging.py

打开,找到open方法,修改代码,添加encoding=‘utf-8’,
如: with open(, ‘r’, encoding=‘utf-8’)
保存,
重新执行本地安装

3、启动
安装好之后,在终端直接输⼊ weditor 即可在默认浏览器中启动⼀个元素定位的调试界⾯,输入你的设备编码,点击Connect连接设备, Dump Hierarchy刷新同步设备界面
在这里插入图片描述
在这里插入图片描述
如果页面提示python -m weditor,关闭终端重新打开输入提示命令运行即可
在这里插入图片描述
4、UiAutoMator2 + Web-editor 自动化使用

4.1 点击右上角重置代码即可实例化
在这里插入图片描述

import uiautomator2 as u2

d = u2.connect()

4.2 启动app

d.app_start("想要启动app的包名")

4.3 选中想要操作的元素,右侧即可看见XPath路径,底部的代码也可以直接复制使用。同时也可以跟appium一样使用className、resourceId、text等定位方式。详细方式可以查看:https://developer.android.com/reference/android/support/test/uiautomator/UiSelector

我用的模拟器,好像识别的有问题,估计用真机可以

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值