安卓 Android 自动化傻瓜式教程-java版(appium)
还在说你不会安卓自动化,看了这篇文章,你就能迅速掌握appium的自动化了
不要感觉环境依赖安装麻烦,这些早晚你都是需要安装失业的,顺着文档挨个执行,你肯定能成功,时间最多1d,快的话半天
1、依赖基础环境安装准备
- Java JDK安装,环境变量配置
- Android SDK安装,环境变量配置
- Node js 安装(appium组件依赖node js完成脚本解析)
- Appium Desktop 安装
- 安卓模拟器安装(夜神模拟器)
2、Java开发工具安装
- idea安装
- maven安装
3、Demo开发测试
- 夜神模拟器安装有道计算器
- 开发自动化代码测试
下面是具体安装过程,有安装的可以略过直接往后看
1.1 Java JDK安装,环境变量配置
搜索进入官网,Oracle,按照指示下载(版本推荐JDK8)
一般都都选择64位
https://www.oracle.com/java/technologies/downloads/#java8-windows
Java SDK安装
- 下载后直接双击安装
- 添加环境变量,按 windows + R键,输入:sysdm.cpl
然后点击确认
- 将路径更换为自己java安装路径
JAVA_HOME
D:/***/jdk1.8.0_144
新建再CLASSPATH,注意前面的逗号和分号不能丢掉
CLASSPATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
找到path环境变量,点击新建
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
验证是否成功,win+R 输入cmd,然后输入 java -version 验证java环境是否安装成功
显示以下内容表明安装成功
1.2、Android SDK安装,环境变量配置
下载链接:https://www.androiddevtools.cn/
可以下载zip或者exe(exe安装时,记住安装路径)
安装完后,进入安装路径,打开这个SDK Manager
勾选
一般根据默认推荐安装即可。
如果自选,必选项:
Android SDK Tools:基础工具包,版本号带rc字样的是预览版
Android SDK Platform-tools:从android2.3开始划出此目录,存放公用开发工具,比如adb、sqlite3等,被划分到了这里
Android SDK Build-tools:Android项目构建工具
SDK Platform:对应平台的开发工具,需要下载Android xxx(API xx)的版本里面已经包含了
Android xxx(API xx) :可选的各平台开发工具,一般选择最新版本即可
Extras目录:
Android Support Repository:主要是方便在gradle中使用Android Support Libraries,因为Google并没有把这些库发布到maven center或者jcenter去,而是使用了Google自己的maven仓库
Google Web Driver:被测APP里有用到H5的话就需要勾选,
Intel x86 Emulator Accelerator(HAXM installer):windows平台的Intel x86模拟器加速工具,配合Intel x86 atom/atom_64 System Image使用可加快模拟器的运行速度
下面是我的安装勾选效果
勾选后点击安装
接着配置Android SDK环境变量
- ANDROID_HOME 设置,变量名:ANDROID_HOME。变量值:sdk安装路径。
- Path 设置,同样在环境变量页面,系统变量中,找到Path,分别添加tools安装路径、platform-tools安装路径、Android新版API安装路径,均在SDK目录下。
- 验证安装是否成功,在cmd中输入adb,验证sdk是否安装配置成功。 出现图示为安装成功
1.3、node js安装
前往 https://mp.toutiao.com/profile_v4/graphic/publish , 下载然后安装
安装完后,检测版本(我这个是安装了多个版本的node,安装了nvm)
1.4、appium desktop安装
- 从github安装,https://github.com/appium/appium-desktop/releases
- 或者从 https://pan.baidu.com/s/1jGvAISu#list/path=%2F 网盘获取,我下载的是1.7.1版本
- 然后确认安装路径无误后,保存
1.5、安卓模拟器安装
- 模拟器安装
前往 https://www.yeshen.com,下载最新版本,直接安装即可
安装完成后,前往 https://m.amtc.cn/rj_list/100230.html 下载一个 有道计算器,
然后直接让apk的计算器安装包拖进夜神模拟器,直到计算器安装完成
- 模拟器adb版本替换为Android SDK adb 版本
把Android SDK目录下\platform-tools的adb.exe拷贝到Nox\bin目录(夜神模拟器的安装目录),然后删除当前目录下的nox_adb.exe,再将拷贝过来的adb.exe改名为nox_adb.exe
2、Java开发工具安装
2.1 idea安装,
https://www.jetbrains.com/idea/
2.2 maven安装
https://maven.apache.org/download.cgi
下面是具体Demo开发过程
3、Demo开发测试
- 新建maven项目
新建工程后,新建AppiumTestDemo类
package app; import io.appium.java_client.AppiumDriver; import io.appium.java_client.MobileElement; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.service.local.AppiumDriverLocalService; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.net.MalformedURLException; import java.net.URL; public class AppiumTestDemo { private AppiumDriver appiumDriver; public static AndroidDriver<MobileElement> androidDriver; public static AppiumDriverLocalService service; @BeforeClass public void setup() throws Exception { // 手动启动appium service connectDirect(); // 通过代码启动appium service // startAppiumWhenConect(); } private static void startAppiumWhenConect() { service = AppiumDriverLocalService.buildDefaultService(); DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapability("platformName", "Android"); cap.setCapability("deviceName", "127.0.0.1:62001"); cap.setCapability("platformVersion", "7.1.2"); cap.setCapability("appPackage", "com.youdao.calculator"); cap.setCapability("appActivity", "com.youdao.calculator.activities.MainActivity"); System.out.println("DesiredCapabilities_init"); service.start(); System.out.println("DesiredCapabilities_init_done"); androidDriver = new AndroidDriver(service, cap); } private void connectDirect() throws MalformedURLException { DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapability(CapabilityType.BROWSER_NAME, ""); cap.setCapability("platformName", "Android"); //指定测试平台 cap.setCapability("deviceName", "127.0.0.1:62001"); //指定测试机的ID,通过adb命令`adb devices`获取 cap.setCapability("platformVersion", "7.1.2"); //将上面获取到的包名和Activity名设置为值 cap.setCapability("appPackage", "com.youdao.calculator"); cap.setCapability("appActivity", "com.youdao.calculator.activities.MainActivity"); // //A new session could not be created的解决方法 // cap.setCapability("appWaitActivity", "com.meizu.flyme.calculator.Calculator"); // //每次启动时覆盖session,否则第二次后运行会报错不能新建session // cap.setCapability("sessionOverride", true); appiumDriver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), cap); } @Test public void plus_youdao() throws Exception { Thread.sleep(3000); int width = appiumDriver.manage().window().getSize().width; int height = appiumDriver.manage().window().getSize().height; int x0 = (int) (width * 0.8); // 起始x坐标 int x1 = (int) (height * 0.2); // 终止x坐标 int y = (int) (height * 0.5); // y坐标 // 左滑4次 for (int i = 0; i < 4; i++) { appiumDriver.swipe(x0, y, x1, y, 500); Thread.sleep(1000); } // 新手规则 appiumDriver.findElementById("com.youdao.calculator:id/guide_button").click(); // 增加线程休眠,避免后续的webView获取不到数据 Thread.sleep(1000); for (int i = 0; i < 6; i++) { appiumDriver.findElementByXPath("//android.webkit.WebView[@text='Mathbot Editor']").click(); Thread.sleep(1000); } String btn_xpath = "//*[@resource-id='com.youdao.calculator:id/view_pager_keyboard']/android.widget.GridView/android.widget.FrameLayout[%d]/android.widget.FrameLayout"; // 123 * 8 appiumDriver.findElementByXPath(String.format(btn_xpath, 17)).click(); appiumDriver.findElementByXPath(String.format(btn_xpath, 18)).click(); appiumDriver.findElementByXPath(String.format(btn_xpath, 19)).click(); // * appiumDriver.findElementByXPath(String.format(btn_xpath, 10)).click(); // 111 appiumDriver.findElementByXPath(String.format(btn_xpath, 17)).click(); appiumDriver.findElementByXPath(String.format(btn_xpath, 17)).click(); appiumDriver.findElementByXPath(String.format(btn_xpath, 17)).click(); // - appiumDriver.findElementByXPath(String.format(btn_xpath, 15)).click(); appiumDriver.findElementByXPath(String.format(btn_xpath, 8)).click(); Thread.sleep(3000); } @AfterClass public void tearDown() throws Exception { appiumDriver.quit(); } }根据代码提示添加依赖包,或者手动添加
<dependencies> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.14.2</version> </dependency> </dependencies>- 启动appium服务,如下,配置host后,点击启动
如下图,表示服务启动成功
- 启动Java代码,运行安卓模拟器里面的计算器进行计算,点击test
- 运行效果
突破网络枷锁:v2rayng免费手机节点完全使用手册
引言:数字时代的自由与隐私之战
在这个万物互联的时代,互联网已成为现代人不可或缺的"数字氧气"。然而,全球范围内日益严格的网络审查制度、无处不在的数据监控以及令人窒息的区域内容限制,正在将这片本该自由的数字疆土分割成一个个信息孤岛。面对这种局面,v2rayng犹如一把锋利的数字瑞士军刀,为追求网络自由的用户提供了突破重围的可能。
本文将带您深入探索v2rayng这一强大工具的奥秘,从基础原理到实战配置,从节点获取到安全防护,为您呈现一份详尽的免费手机节点使用指南。无论您是数字隐私的坚定捍卫者,还是渴望突破内容限制的求知者,这份指南都将成为您网络自由之路上的得力助手。
第一章:认识v2rayng——网络自由的守护者
1.1 v2rayng的前世今生
v2rayng脱胎于著名的V2Ray项目,是专为Android平台量身打造的网络代理工具。它继承了V2Ray核心的强大功能,同时针对移动设备进行了深度优化。与传统的VPN工具不同,v2rayng采用了更为先进的协议混淆技术,能够有效规避深度包检测(DPI),在严苛的网络环境下仍能保持稳定连接。
1.2 为何选择v2rayng?
在众多代理工具中,v2rayng脱颖而出得益于三大核心优势:
- 协议多样性:支持VMess、Shadowsocks、Socks等多种协议,用户可根据网络环境灵活切换
- 传输隐蔽性:通过TLS加密和WebSocket伪装,流量特征与普通HTTPS无异
- 配置灵活性:支持自定义路由规则,可针对不同网站应用不同的代理策略
1.3 工作原理揭秘
v2rayng通过在您的设备和远程服务器之间建立加密隧道,将您的网络请求进行"改头换面"。当您访问受限网站时,请求首先被加密发送至代理节点,再由节点代表您获取内容并返回。整个过程,您的真实IP和访问内容都被完美隐藏,网络审查者只能看到加密的随机数据流。
第二章:免费节点的获取之道
2.1 节点来源全解析
免费节点虽不如付费服务稳定,但对于轻度用户或预算有限者仍是理想选择。以下是三大可靠获取渠道:
2.1.1 专业论坛与社区
- GitHub仓库:搜索"free-v2ray"可找到定期更新的节点列表
- V2EX技术社区:技术爱好者常分享自建节点信息
- 52破解论坛:国内较活跃的代理技术讨论区
2.1.2 即时通讯平台
- Telegram频道:@v2ray_free、@FreeV2ray等频道每日推送新鲜节点
- Discord群组:许多技术社群设有专属节点分享频道
2.1.3 订阅服务网站
- v2rayse.com:提供免费节点订阅链接
- free-ss.site:同时支持SS和V2Ray节点
2.2 节点质量鉴别技巧
面对海量免费节点,如何慧眼识珠?掌握这四招:
- 延迟测试:优先选择ping值<200ms的节点
- 速度评估:通过YouTube等视频平台实测缓冲速度
- 稳定性观察:持续连接1小时不中断者为佳
- 地理位置:根据需求选择邻近地区或特定国家节点
2.3 节点安全警示
免费节点虽诱人,安全隐患不可忽视:
⚠️ 警惕要求输入个人信息的节点网站
⚠️ 避免在免费节点环境下登录敏感账户
⚠️ 定期更换节点以防被封锁或滥用
第三章:从零开始的配置指南
3.1 应用安装全流程
3.1.1 官方渠道获取
- 访问GitHub发布页下载最新APK
- 在"未知来源应用"设置中开启安装权限
- 完成安装后检查数字签名确保安全
3.1.2 第三方市场选择
若无法访问Google Play,可考虑:
- APKMirror(推荐)
- F-Droid开源市场
- 国内各大应用商店
3.2 节点配置步步通
以添加VMess节点为例:
- 点击主界面"+"号→"手动输入[VMess]"
- 填写关键参数:
- 地址(Address):节点服务器域名/IP
- 端口(Port):通常443或8443
- 用户ID(UUID):32位字母数字组合
- 加密方式(Encryption):推荐auto或aes-128-gcm
- 传输设置(Transport):
- 类型:WS(WebSocket)或TCP
- 主机名:填写伪装域名
- 路径:通常为"/"或随机字符串
3.3 高级配置技巧
分流策略配置:
- 国内直连,国外代理的智能分流
- 自定义应用代理规则
路由设置优化:
- 绕过局域网和大陆IP
- 特定域名强制走代理
第四章:实战问题排雷手册
4.1 连接失败排查四步法
1️⃣ 检查基础网络:确认手机能正常上网
2️⃣ 验证节点信息:特别是端口和UUID是否准确
3️⃣ 尝试更换协议:如从WS切换至TCP
4️⃣ 测试不同网络:WiFi/4G/5G环境分别尝试
4.2 速度优化三板斧
🚀 节点优选:通过批量测速工具筛选最佳节点
🚀 协议调优:移动网络推荐mKCP协议
🚀 参数调整:适当增大并发连接数
4.3 隐私防护进阶
- DNS泄漏防护:启用"Fake DNS"功能
- IPv6屏蔽:防止真实地理位置暴露
- 流量伪装:开启TLS1.3加密
第五章:超越基础的使用艺术
5.1 订阅功能深度应用
- 获取订阅链接(通常为.txt或.json结尾)
- 在v2rayng中"订阅设置"添加URL
- 设置自动更新频率(建议6-12小时)
5.2 多节点负载均衡
通过"分组"功能实现:
- 按延迟自动切换
- 手动选择最优节点
- 故障自动转移
5.3 与其它工具联合作战
- 搭配Clash:实现规则更精细的分流
- 配合WireGuard:建立双层加密隧道
- 整合Tor网络:实现终极匿名访问
终章:网络自由的哲学思考
v2rayng不仅仅是一款技术工具,它代表着数字时代公民对信息自由的基本诉求。当我们讨论节点配置时,本质上是在探讨如何在技术极权与个人自由之间寻找平衡点。
免费节点如同互联网精神的活化石,它们由全球志愿者无私搭建,维系着知识自由流动的最后通道。然而,这种模式也面临着商业化冲击和监管压力。作为用户,我们应当:
✓ 珍惜并合理使用免费资源
✓ 在能力范围内支持优质付费服务
✓ 积极学习技术知识,争取数字自主权
精彩点评
这篇指南犹如一把精巧的锁匠工具,为困于数字围城中的现代人提供了打开自由之门的钥匙。文章结构严谨,从基础认知到高阶应用层层递进,既有技术细节的精准剖析,又不乏人文关怀的哲学思考。
语言风格上,作者巧妙平衡了专业性与通俗性,技术术语解释清晰,操作步骤描述细致入微。特别是安全警示部分,如同经验丰富的向导在险峻山路旁的警示牌,既点明风险又不制造恐慌。
最令人称道的是,文章超越了单纯的工具使用说明,将v2rayng置于更广阔的数字权利语境中讨论,使其成为一场关于网络自由的技术宣言。读者不仅能学会操作技巧,更能理解这些技术背后的深层意义。
在虚假信息泛滥的时代,这样一份客观、全面且负责任的指南实属难得。它既满足了普通用户突破网络限制的实用需求,也为技术爱好者提供了深入探索的起点,堪称数字自救手册的典范之作。
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-4448.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
热门文章
- 12月6日|19.8M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费订阅机场|每天更新免费梯子
- 11月22日|20.2M/S,Shadowrocket节点/V2ray节点/Clash节点/Singbox节点|免费订阅机场|每天更新免费梯子
- 12月5日|23M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月11日|23M/S,Singbox节点/V2ray节点/Clash节点/Shadowrocket节点|免费订阅机场|每天更新免费梯子
- 11月25日|20.3M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月9日|20M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月12日|18.6M/S,Singbox节点/Clash节点/Shadowrocket节点/V2ray节点|免费订阅机场|每天更新免费梯子
- 12月8日|21.6M/S,Singbox节点/SSR节点/V2ray节点/Clash节点|免费订阅机场|每天更新免费梯子
- 12月13日|18.1M/S,V2ray节点/SSR节点/Clash节点/Singbox节点|免费订阅机场|每天更新免费梯子
- 11月20日|19.3M/S,Singbox节点/Shadowrocket节点/V2ray节点/Clash节点|免费订阅机场|每天更新免费梯子
最新文章
- 12月16日|21M/S,SSR节点/Singbox节点/Clash节点/V2ray节点|免费订阅机场|每天更新免费梯子
- 12月15日|20.8M/S,SSR节点/Singbox节点/Clash节点/V2ray节点|免费订阅机场|每天更新免费梯子
- 12月14日|21.5M/S,V2ray节点/Shadowrocket节点/Singbox节点/Clash节点|免费订阅机场|每天更新免费梯子
- 12月13日|18.1M/S,V2ray节点/SSR节点/Clash节点/Singbox节点|免费订阅机场|每天更新免费梯子
- 12月12日|18.6M/S,Singbox节点/Clash节点/Shadowrocket节点/V2ray节点|免费订阅机场|每天更新免费梯子
- 12月11日|23M/S,Singbox节点/V2ray节点/Clash节点/Shadowrocket节点|免费订阅机场|每天更新免费梯子
- 12月10日|19.9M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月9日|20M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月8日|21.6M/S,Singbox节点/SSR节点/V2ray节点/Clash节点|免费订阅机场|每天更新免费梯子
- 12月7日|22.8M/S,Shadowrocket节点/Singbox节点/V2ray节点/Clash节点|免费订阅机场|每天更新免费梯子
归档
- 2025-12 29
- 2025-11 55
- 2025-10 56
- 2025-09 55
- 2025-08 49
- 2025-07 31
- 2025-06 30
- 2025-05 31
- 2025-04 31
- 2025-03 383
- 2025-02 360
- 2025-01 403
- 2024-12 403
- 2024-11 390
- 2024-10 403
- 2024-09 388
- 2024-08 402
- 2024-07 424
- 2024-06 446
- 2024-05 184
- 2024-04 33
- 2024-03 32
- 2024-02 29
- 2024-01 50
- 2023-12 53
- 2023-11 32
- 2023-10 32
- 2023-09 3