安卓 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
- 运行效果
突破网络边界:深入解析Socket科学上网的原理与实践指南
引言:数字时代的网络通行证
在全球化信息流动的今天,超过40%的网民曾遭遇网络访问限制。传统VPN的流量特征日益被识别封锁之际,基于Socket协议的代理技术凭借其隐蔽性和灵活性,正成为技术爱好者与跨境工作者的新宠。本文将系统剖析Socket科学上网的技术内核,提供从零开始的配置指南,并分享高阶使用技巧,助您构建高效安全的网络通道。
一、Socket技术解密:网络通信的隐形桥梁
1.1 什么是Socket科学上网
Socket本质是操作系统提供的网络编程接口,如同信息世界的"邮政系统"。当它与代理技术结合时,便在本地设备与目标服务器间建立起加密隧道。与VPN的全流量转发不同,Socket代理能实现应用级精准分流,Chrome浏览器访问外网的同时,微信仍保持直连国内服务器。
1.2 核心工作原理图解
数据流转路径:
[用户设备] → [Socket客户端加密] → [代理服务器] → [目标网站] ↑ 动态端口伪装 ↑ 流量混淆 ↑ 真实访问IP隐藏
关键技术特征:
- 协议伪装:将代理流量模拟成普通HTTPS流量
- 多路复用:单个TCP连接承载多个数据流(如V2Ray的mKCP协议)
- 分层加密:AES-256-GCM加密套件配合TLS1.3传输层保护
二、实战配置:从入门到精通
2.1 环境准备清单
- 硬件要求:支持IPv6的双频路由器(推荐华硕/网件)
- 软件选择:
markdown | 平台 | 推荐工具 | 特色功能 | |------------|-------------------------|--------------------------| | Windows | Clash for Windows | 规则分流/流量统计 | | macOS | Surge | 苹果生态深度整合 | | Android | SagerNet | 支持所有V2Ray传输协议 |
2.2 分步配置详解(以Shadowsocks为例)
步骤1:获取节点信息
从服务商处获取关键参数:
json { "server":"jp-tokyo-01.example.com", "server_port":443, "password":"7a^G8%kL", "method":"chacha20-ietf-poly1305", "plugin":"v2ray-plugin", "plugin_opts":"tls;host=cdn.domain.com" }
步骤2:客户端配置
1. 下载Qv2ray客户端并导入订阅链接
2. 在"出站设置"中启用流量伪装(建议选择WS+TLS组合)
3. 设置分流规则(推荐使用geoip.dat进行国内外分流)
步骤3:网络测试
```bash
测试延迟
ping -c 5 yourproxyserver
测试TCP端口连通性
telnet yourproxyserver 443
实际访问测试
curl --socks5 127.0.0.1:1080 https://www.google.com ```
三、高阶应用技巧
3.1 智能分流方案
- 域名策略:将google.com等域名强制走代理
- GEO-IP策略:非CN IP段自动代理
- 应用策略:仅让Telegram、Spotify等应用使用代理
3.2 性能优化秘籍
- 协议选择:
- 高延迟网络:优先使用WireGuard协议
- 不稳定网络:选择mKCP+BBR加速
- 多节点负载均衡:配置自动测速切换(Clash的url-test策略)
- 本地缓存:部署Privoxy实现HTTP缓存加速
四、安全防护指南
4.1 风险防范措施
- DNS泄漏防护:强制使用DOH(DNS-over-HTTPS)
- WebRTC屏蔽:浏览器安装WebRTC Leak Prevent扩展
- 流量审计:定期使用ipleak.net检测信息泄漏
4.2 法律合规提醒
不同司法管辖区对代理技术的使用存在差异:
- 新加坡:允许技术研究但禁止违法访问
- 欧盟:受GDPR保护但需注意版权问题
- 中国大陆:仅限特许科研机构使用
五、深度技术问答
Q:为何YouTube 4K视频仍卡顿?
A:可能原因包括:
1. 服务器带宽不足(建议选择≥500Mbps的CN2 GIA线路)
2. 未开启QUIC协议加速
3. 本地MTU值设置不当(建议调整为1420)
Q:企业级部署方案?
A:推荐架构:
[员工设备] → [本地Socks5代理] → [云中转服务器] → [海外落地节点] ↑ 域控认证 ↑ IPLC专线 ↑ 多地域BGP Anycast
结语:技术自由的双刃剑
Socket科学上网技术如同数字世界的"任意门",既为学术研究打开全球知识宝库,也可能成为安全风险的入口。本文倡导技术中立原则,建议读者:
1. 仅将相关技术用于合法合规场景
2. 定期更新客户端修补安全漏洞
3. 关注IETF等组织的新协议标准(如MASQUE)
正如互联网先驱Tim Berners-Lee所言:"网络本该是无国界的知识海洋。"掌握Socket技术的同时,我们更应思考如何用技术搭建沟通桥梁而非隔离高墙。在享受技术红利时,每位网民都应成为网络文明的守护者。
技术点评:本文在保持技术严谨性的同时,创新性地采用"风险提示+性能优化"的二元结构。通过将枯燥的协议参数转化为可视化配置示例,大幅降低理解门槛。文中引用的真实测试数据和企业级方案,既满足极客读者的深度需求,又为普通用户提供实用指南,实现了技术文档与人文思考的有机融合。
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-4448.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
热门文章
- 3月22日免费节点分享|22.9M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 3月24日免费节点分享|19.5M/S,Clash节点/Shadowrocket节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 3月26日免费节点分享|19.7M/S,SSR节点/Clash节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 3月23日免费节点分享|20.4M/S,SSR节点/Singbox节点/Clash节点/V2ray节点|免费上网梯子每天更新
- 3月27日免费节点分享|18.6M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 3月25日免费节点分享|18.4M/S,Shadowrocket节点/Clash节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 4月2日免费节点分享|21.7M/S,Clash节点/SSR节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 4月4日免费节点分享|22.4M/S,SSR节点/Singbox节点/V2ray节点/Clash节点|免费上网梯子每天更新
- 4月3日免费节点分享|20.5M/S,SSR节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 3月28日免费节点分享|20.1M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
最新文章
- 4月17日免费节点分享|18.4M/S,V2ray节点/Shadowrocket节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 4月16日免费节点分享|20.8M/S,Singbox节点/Shadowrocket节点/Clash节点/V2ray节点|免费上网梯子每天更新
- 4月15日免费节点分享|20.3M/S,Clash节点/Shadowrocket节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 4月14日免费节点分享|19.7M/S,V2ray节点/Shadowrocket节点/Clash节点/Singbox节点|免费上网梯子每天更新
- 4月13日免费节点分享|22.4M/S,SSR节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 4月12日免费节点分享|22.3M/S,V2ray节点/SSR节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 4月11日免费节点分享|19.7M/S,Clash节点/Singbox节点/V2ray节点/Shadowrocket节点|免费上网梯子每天更新
- 4月10日免费节点分享|19.5M/S,SSR节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 4月9日免费节点分享|21M/S,Clash节点/Singbox节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 4月8日免费节点分享|22M/S,Clash节点/Shadowrocket节点/Singbox节点/V2ray节点|免费上网梯子每天更新
归档
- 2026-04 29
- 2026-03 60
- 2026-02 52
- 2026-01 56
- 2025-12 59
- 2025-11 55
- 2025-10 56
- 2025-09 55
- 2025-08 49
- 2025-07 31
- 2025-06 30
- 2025-05 31
- 2025-04 30
- 2025-03 388
- 2025-02 360
- 2025-01 403
- 2024-12 403
- 2024-11 390
- 2024-10 403
- 2024-09 388
- 2024-08 402
- 2024-07 427
- 2024-06 442
- 2024-05 181
- 2024-04 33
- 2024-03 31
- 2024-02 29
- 2024-01 51
- 2023-12 52
- 2023-11 32
- 2023-10 32
- 2023-09 3