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

如何阻止Appium自动开启安卓设备自动旋转及解决相关报错?

问题原因

Appium默认会在会话初始化阶段自动调整屏幕方向、修改系统自动旋转配置,若你要设置的方向和应用自身支持的方向不匹配,就会触发你遇到的报错。

可落地的解决方案

1. 新增Desired Capabilities禁止修改系统设置

在Ruby脚本初始化Appium Driver的Cap配置中添加以下参数,从根源阻止Appium修改系统自动旋转开关:

  • dontModifySystemSettings: 设为true,禁止Appium改动任意系统级设置项
  • orientation: 显式指定你需要的固定方向,可选值为portrait(竖屏)、landscape(横屏)
  • dontSetAppOrientation: 设为true,跳过Appium默认的应用方向设置逻辑

示例代码如下:

caps = {
  platformName: 'Android',
  deviceName: 'your_device_name',
  appPackage: 'your_app_package',
  appActivity: 'your_app_activity',
  dontModifySystemSettings: true,
  orientation: 'portrait',
  dontSetAppOrientation: true
  # 其余原有配置保持不变
}
driver = Appium::Driver.new(caps, true).start_driver

2. 会话初始化后手动锁定旋转

如果配置Cap后仍存在自动切换旋转的问题,可以在driver启动完成后,执行adb命令直接锁定系统自动旋转:

# 关闭系统自动旋转
driver.execute_script 'mobile: shell', {
  command: 'settings',
  args: ['put', 'system', 'accelerometer_rotation', '0']
}
# 强制固定为竖屏,需要横屏的话把portrait换成landscape即可
driver.rotation = :portrait

3. 排查应用自身方向限制

报错提示应用拒绝旋转,说明你尝试设置的方向和应用本身在AndroidManifest.xml中配置的支持方向冲突,比如应用强制只允许竖屏运行,此时不要在代码中调用切换横屏的相关接口即可。

报错信息翻译

处理命令时发生未知的服务端错误。原始错误:尝试设置屏幕方向,但应用拒绝旋转。(Selenium::WebDriver::Error::UnknownError)
未知错误:处理命令时发生未知的服务端错误。原始错误:尝试设置屏幕方向,但应用拒绝旋转。


内容的提问来源于stack exchange,提问作者Manjula B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:24:00