5月27日 21:15

Appium 与 Selenium 有什么区别?

核心区别

Appium 测移动端,Selenium 测 Web 端,这是二者最根本的差异。虽然都基于 WebDriver 协议,但架构和应用场景完全不同。

测试对象

Selenium 只能操作浏览器中的 Web 页面,无法触及原生 App。Appium 则覆盖原生应用、混合应用和移动端 Web 页面三类场景。如果你的测试目标跑在手机上,只能选 Appium。

架构差异

Selenium 的架构链路短:测试脚本 → WebDriver → 浏览器驱动 → 浏览器。Selenium 4 之后不再需要独立 Server,直接通过驱动与浏览器通信。

Appium 多了一层中转:测试脚本 → Appium Client → Appium Server → 平台自动化引擎 → 移动设备。Android 端走 UiAutomator2 或 Espresso,iOS 端走 XCUITest。这层 Server 负责把 WebDriver 命令翻译成各平台能识别的指令。

定位与交互

Appium 继承了 Selenium 全部定位策略(id、className、xpath 等),并扩展了移动端特有的 accessibilityId、androidUIAutomator、iOSNsPredicateString 等。

交互方面,Selenium 仅支持 click、sendKeys 等简单操作。Appium 额外支持滑动、多点触控、长按等手势,还能在原生视图和 WebView 之间切换上下文——这是混合应用测试的刚需。

设备能力

Selenium 的 Desired Capabilities 只需指定浏览器名和版本。Appium 则要配置平台版本、设备名、app 包路径、udid、自动化引擎等,复杂度高出几个量级。

怎么选

测 Web 应用选 Selenium,测移动应用选 Appium,两者也可以在同一项目中配合使用。选型的关键不是哪个更好,而是你要测什么。

追问

  • Appium 为什么选择基于 WebDriver 协议而不是自建协议?——复用成熟协议降低学习成本,且 Selenium 生态的工具链可直接迁移。
  • 混合应用测试时,NATIVE_APP 和 WEBVIEW 上下文切换失败怎么排查?——先确认 WebView 调试已开启,再检查 chromedriver 版本与 WebView 内核是否匹配。
  • Selenium 4 的相对定位器能否在 Appium 中使用?——可以,Appium Client 基于 Selenium Client 封装,大部分新特性自动继承。
标签:SeleniumAppium