如何阻止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
相关产品推荐
相关产品推荐

