You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mac系统中通过Ruby程序化启动Appium服务器?

当然可以实现!在Ruby测试框架里用Before/After钩子来启动和停止Appium服务器完全能满足你的需求,不用一直挂着GUI或者单独开终端跑服务器。结合你的环境(Appium 1.8.0、MacOS 10.13、Node 6.11、Ruby 2.5.1),我给你整理了具体的实现方案:

核心思路

利用appium_lib gem提供的服务器管理API,在测试套件启动前(Before)启动Appium服务器并初始化WebDriver,测试结束后(After)先退出driver再终止服务器。

步骤1:安装依赖

首先确保你安装了对应版本的appium_lib(要和Appium 1.8.0兼容,推荐9.10.0版本):

gem install appium_lib -v 9.10.0

如果还没全局安装指定版本的Appium服务器,执行:

npm install -g appium@1.8.0
步骤2:编写测试代码(以RSpec为例)

下面是完整的示例代码,包含服务器启动、driver初始化、测试逻辑和资源清理:

require 'appium_lib'

describe 'iOS App Automation Test Suite' do
  before(:all) do
    # 配置Appium服务器启动参数
    server_options = {
      port: 4723, # 自定义端口,避免冲突
      log: './appium_test_logs.txt', # 生成日志文件,方便调试
      log_level: 'info',
      # 如果你的Node或Appium不在默认路径,可手动指定
      # node_path: '/usr/local/bin/node',
      # appium_path: '/usr/local/bin/appium'
    }

    # 启动Appium服务器
    @appium_server = Appium::Server.new(server_options)
    @appium_server.start

    # 配置iOS Desired Capabilities,根据你的App调整
    desired_caps = {
      platformName: 'iOS',
      platformVersion: '11.0', # 对应你的模拟器/设备iOS版本
      deviceName: 'iPhone 8', # 设备名称,要和模拟器列表一致
      app: '/Users/yourname/Apps/YourTestApp.app', # App的本地路径(.app或.ipa)
      automationName: 'XCUITest', # iOS必须使用XCUITest驱动
      noReset: true # 可选:测试后不重置App状态
    }

    # 初始化并启动WebDriver
    @driver = Appium::Driver.new({ caps: desired_caps }, true).start_driver
  end

  after(:all) do
    # 先退出WebDriver,再停止服务器
    @driver.quit if @driver
    @appium_server.stop if @appium_server
  end

  # 你的测试用例
  it 'successfully loads the app and interacts with elements' do
    # 示例操作:点击登录按钮
    # login_btn = @driver.find_element(:accessibility_id, 'LoginButton')
    # login_btn.click
  end
end
关键注意事项
  • 端口冲突:如果4723端口被其他进程占用,修改port参数为其他值(比如4724),无需修改driver配置,appium_lib会自动关联启动的端口。
  • WebDriverAgent配置:Appium 1.8.0依赖WebDriverAgent驱动iOS设备/模拟器,第一次运行可能需要手动打开Xcode,将WebDriverAgent项目(路径一般为/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent)运行到目标设备/模拟器,完成授权。
  • 日志排查:开启日志文件能帮你快速定位服务器启动失败、driver连接异常等问题。
  • Cucumber适配:如果你用Cucumber框架,只需要把Before/After逻辑放到features/support/hooks.rb文件中,写法基本一致。
应急方案

如果代码里的stop方法没能正常终止服务器,可以手动执行以下命令杀掉对应端口的进程:

lsof -ti:4723 | xargs kill -9

内容的提问来源于stack exchange,提问作者Poornima Hegde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:40:36