JAVA+appium+夜神模拟器实现APP爬虫
JAVA+appium+夜神模拟器实现APP爬虫
爬虫需要
appium server: 一个APP自动化测试框架 C/S架构 服务端由node.js开发 客户端支持多种语言,底层使用netty通信。
java写的自动化爬取程序:使用java_client包( appium客户端的java支持包) maven下载最新的即可
测试机器:夜神模拟器 或者真机都行,模拟器更稳定
具体操作原理
比如要操作手机对某个app实现点击按钮
1.adb连接上设备
2.appium客户端,这里使用Java来发起网络请求
报文实例:Creating session with W3C capabilities: {
[BaseDriver] “alwaysMatch”: {
[BaseDriver] “platformName”: “android”,
[BaseDriver] “appium:appActivity”: “********”,
[BaseDriver] “appium:appPackage”: “*******”,
[BaseDriver] “appium:automationName”: “UiAutomator2”,
[BaseDriver] “appium:deviceName”: “127.0.0.1:62001”,
[BaseDriver] “appium:fullReset”: false,
[BaseDriver] “appium:noReset”: true,
[BaseDriver] “appium:platformVersion”: “7”
[BaseDriver] },
[BaseDriver] “firstMatch”: [
[BaseDriver] {}
[BaseDriver] ]
[BaseDriver] }
[BaseDriver] Session created with session id: 9ff230ac-e1bc-4494-bee8-9187e8025cc6
此报文表示客户端请求appium服务端和设备建立一个会话,通过会话可以向设备发送命令
3.appiumServer接受请求 处理转发到设备
数据流转流程
java程序(appiumClient) —》 appiumServer —》 设备的UIAutomator2(谷歌sdk自带的测试框架 执行一系列操作)
UIAutomator源码地址(需要翻墙,一些操作需要看源码 比如滚动查找元素)
UIAutomator Api文档(需要翻墙)
具体实现流程
1.安装android sdk并设置环境变量 我选择安装在D:/Android下面**
安卓sdk mananger下载地址
2.安装AndoridBuildTools 得到adb方便后续查看设备情况
打开D:\Android\SDK Manager.exe
安装前3个包即可(使用模拟器和真机不需要sdk 太大)
环境变量配置:ANDROID_HOME:D:\Android
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools
具体如何配置不懂的请百度
3.appium安装 并启动
访问 appium官网 选择Appium-windows-1.21.0.exe下载安装即可
4.建议替换夜神的adb 或者直接用夜神的nox_adb也行
替换方法 删除夜神目录下的D:\Program Files\Nox\bin\nox_adb.exe
先D:\Android\platform-tools下的3个文件复制到任一目录下,将其中adb.exe改名为nox_adb.exe 再复制到夜神bin目录下
5.启动夜神模拟器 cmd窗口下输入adb devices -l
显示如下:
List of devices attached
127.0.0.1:62001 device product:R11 Plus model:OPPO_R11_Plus device:R11 Plus transport_id:1
设备名:127.0.0.1:62001或者R11 Plus 建议使用前者
6.编写代码
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;import java.net.MalformedURLException;
import java.net.URL;public class Test {public static void main(String[] args) {AndroidDriver driver = initDriver();driver.get("具体的详情页url");System.out.println(driver.getPageSource());// 具体定位元素使用请百度WebElement element =driver.findElementById("........")System.out.println(element.getText());}public static AndroidDriver initDriver() {DesiredCapabilities desiredCapabilities = new DesiredCapabilities();desiredCapabilities.setCapability("platformName", "Android");// 需要控制的app包名和mainActivity路径 获取方法:百度:adb命令获取app包名desiredCapabilities.setCapability("appPackage", "。。。。。。");desiredCapabilities.setCapability("appActivity", "。。。。。。");// adb连接的设备地址desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");desiredCapabilities.setCapability("platformVersion", "7");// 开启Session时不重置登录状态desiredCapabilities.setCapability("noReset", true);desiredCapabilities.setCapability("fullReset", false);// 控制模式 默认UiAutomator2desiredCapabilities.setCapability("automationName", "UiAutomator2");try {return new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);} catch (MalformedURLException e) {e.printStackTrace();}return null;}
}
maven依赖:
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.5.1</version>
</dependency>
7.总结
app爬虫
优点:反爬机制少,稳定
缺点:速度慢 定位元素困难
一些知识点
- 滑动查找元素的办法 scrollIntoView
其中会先scrollToBeginning 上移到app页面顶部 会触发一些app下拉操作 影响抓取数据
临时办法:手动scrollForward() 再获取元素
源码:
public boolean scrollIntoView(UiSelector selector) {// if we happen to be on top of the text we want then return hereif (exists(getSelector().childSelector(selector))) {return (true);} else {// we will need to reset the search from the beginning to start searchscrollToBeginning(mMaxSearchSwipes);if (exists(getSelector().childSelector(selector))) {return (true);}for (int x = 0; x < mMaxSearchSwipes; x++) {if(!scrollForward()) {return false;}if(exists(getSelector().childSelector(selector))) {return true;}}}return false;}
- driver.getPageSource() 只能获取当前页面的数据 已加载或未加载的数据都没有
- platformVersion设置没啥意义
- 多开需要启动多个不同端口的appium server端 创建andoroid driver驱动的时候使用不同的端口即可
JAVA+appium+夜神模拟器实现APP爬虫相关推荐
- (二)01- DCloud平台 HTML5+ App开发——真机调试运行 夜神模拟器运行HBuilderX中的html文件 夜神模拟器运行App的基础功能示例-手机设备-分享功能-拍照功能
DCloud 平台 HTML5 + App 开发 下载安装 HBuilderX 下载地址:https://www.dcloud.io/hbuilderx.html HBuilderX-使用步骤: 第一 ...
- appium+夜神模拟器操作微信小程序,多个模拟器要结合yaml配置文件来并发控制,一万多行代码[建议收藏]
技术心得 python+appium+夜神模拟器+结合yaml配置文件实现并发采集任务. 代码如下: import subprocess from os import system from appi ...
- windows下app爬虫环境搭建:python + fiddler + Appium + 夜神模拟器
python.夜神模拟器自行下载安装 1.安装java https://www.oracle.com/java/technologies/downloads/#jdk19-windows 注意安装ja ...
- Python+Appium+夜神模拟器 全流程从环境搭建到实现自动化(APP自动化)
** 文末有小礼物! ** 希望此次分享能够帮助小伙伴们,按照当前文章可自主搭建APP自动化测试环境和实现计算机控制模拟器APP执行操作! 环境依赖(jdk.sdk) 安装jdk(地址):jdk下载地 ...
- python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)
0.前言 看了很多自动化测试入门的课程,还是B站白月黑羽讲的最详细 从环境搭建到常用功能,讲的都比较详细 由于没什么项目实践,就简单写了一个什么值得买APP自动签到脚本 后期打算买个树莓派,把整个环境 ...
- appium的安装+连接夜神模拟器控制app
一.下载夜神模拟器 官网:https://www.yeshen.com 1.安步骤安装即可 2.配置 把android sdk的C:\Users\Administrator\AppData\Local ...
- Appium+夜神模拟器模拟人为操作
一.准备环境 appium请参考博客appium+python的环境安装 夜神模拟器 直接从夜神模拟器官网下载夜神模拟器进行安装,安装后添加path环境变量:D:\Program Files\Nox\ ...
- appium+夜神模拟器
1.安装Android sdk,配置环境变量 (1)创建ANDROID_HOME (2)SDK的platform-tools和tool的路径添加到Path 变量内(这两个目录在你通过SDK Manag ...
- appium + 夜神模拟器安装经验
一.需要安装的软件 1.夜神模拟器 2.jdk1.6.0 (64位) 3.Android studio 4.Node.js 5.appium 6.Appium-Python-Client 注意:按顺序 ...
最新文章
- java jdk 环境变量配置(window 10 系统)
- Linux的Unicon资料
- 配置IIS Silverlight运行环境
- .NET Framework 各版本区别
- 从ICCV 2021看夜间场景自监督深度估计最新进展
- FFmpeg转OpenCV Mat显示
- LeetCode 1311. 获取你好友已观看的视频(BFS+哈希map+vector排序)
- Xen虚拟机两大迁移方法详解
- cygwin安装教程图解
- 纯HTML个人简历模板代码
- 本地文件秒搜工具 Everything
- R可视化绘图二-ggplot2
- 计算机软件如何永久删除,【电脑软件教程篇】如何永久彻底清除电脑使用痕迹...
- HTTP协议原理详解
- 作业 5:词频统计——增强功能
- 宇宙人工智能计算机程序,人工智能令整个宇宙变成一个玄计算机,宇宙是虚拟的...
- 用VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(一)
- 如何更换安装鸿蒙系统,华为鸿蒙系统2.0如何进行安装?鸿蒙系统2.0安装方法详细介绍...
- 项目经理/小组长的职责
- minecraft1.16java_我的世界:1.16最神奇的种子,自然生成的石头雕像,基岩能用!...