故障排除场景
如果遇到问题,请考虑以下故障排除方案:
以下主题描述了移动设备自动化的问题及其相应的解决方法。
说明:Studio 中的工作流引发意外错误,并且活动包不显示已安装的版本。
原因 :在项目中, UI.Automation 活动包的主要版本与 Mobile.Automation 活动包的主要版本不匹配。 例如,安装的 UI.Automation 包的主要版本是 22.10.x, 安装的 Mobile.Automation 包的主要版本为 22.4.x。
解决方法:确保项目中安装的 UI.Automation 和 Mobile.Automation 活动包的主要版本匹配。 例如, 将 UI.Automation.Activities 版本 22.10.x 配对 仅适用于 Mobile.Automation.Activities 版本 22.10.x。
条件:使用 Appium 2.0时。
/wd/hub/session
的路由。
--base-path /wd/hub
。
条件:使用 Appium 2.0时。
说明:所有非标准功能都应具有供应商前缀。
appium:
前缀,如下所示:
- 在命令提示符或终端中,输入
--default-capabilities "{\"appium:systemPort\": 8201}"
而不是--default-capabilities "{\"systemPort\": 8201}"
}。 - 在移动设备管理器的“ 添加设备 ” 选项卡中,在任何其他所需功能的名称前手动添加
appium:
前缀。
条件:使用 Appium 2.0时。
automationName
功能不能为空。
appium:
作为前缀。 例如appium:automationName
。
以下主题描述了 Android 设备的问题及其相应的解决方法。
InvalidArgumentException
存在差异而失败。当功能以字符串形式输入,而 Appium需要一个布尔值时,就会出现此问题。 指示性错误消息包括:Failed to create session.
A new session could not be created.
Details: io.appium.uiautomator2.common.exceptions.InvalidArgumentException:
Invalid '<capability name>' setting value type.
Got java.lang.String. Expected: java.lang.Boolean
Failed to create session.
A new session could not be created.
Details: io.appium.uiautomator2.common.exceptions.InvalidArgumentException:
Invalid '<capability name>' setting value type.
Got java.lang.String. Expected: java.lang.Boolean
补救措施:从本地设备卸载以下应用程序:
io.appium.uiautomator2.server
io.appium.uiautomator2.server.test
WebDriverException
。此错误通常显示为 Parameters were incorrect. We wanted {\"required\":[\"text\"]} and you sent [\"value\"]", "FaultCode":"WebDriverException"}
。
补救措施:卸载当前版本的 UiAutomator 2。然后按给定顺序使用以下命令安装较新版本:
appium driver uninstall uiautomator2
appium driver install uiautomator2@2.29.0
,其中2.29.0
是您要安装的版本。您可以将其替换为任何可用版本。
npm install -g appium
(对于 Appium 1.x)或npm install -g appium@next
(对于 Appium 2.0)命令失败,因为您是在代理后面运行。 该错误将引发以下消息:
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR! network 'proxy' config is set properly.
See: 'npm help config'
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR! network 'proxy' config is set properly.
See: 'npm help config'
补救措施:配置 npm(节点包管理器)以使用您的代理。请按照以下步骤操作:
-
获取您的代理服务器地址和端口号:
- 转到“ Internet 选项”。
- 选择“ 连接 ” 选项卡。
-
选择“ 局域网设置” ,然后复制“ 地址” 和“ 端口 ” 字段中的内容。
-
返回到 Node.js 命令提示符,然后运行以下格式的命令:
- 对于 HTTP 代理:
npm config set http://your_proxy_address:your_port_number
。 - 对于 HTTPS 代理:
npm config set https://your_proxy_address:your_port_number
。
- 对于 HTTP 代理:
- 再次运行
npm install -g appium
(对于 Appium 1.x)或npm install -g appium@next
(对于 Appium 2.0)命令。
说明:无法访问提供的 Web 上下文。请确保 Android WebView 可调试。有关访问网页上下文的更多信息,请访问远程调试 WebView。
补救措施:
- 在无法识别的网页上下文中将 WebView 用作原生选取器。
- 如果选取器适用于网页应用程序,但不适用于原生应用程序,则该应用程序不会启用调试 WebView。在此情况下,请参阅远程调试 Android WebView 入门指南和远程调试 WebView。
说明: 设备未授权。
解决方法:执行以下步骤:
- 使用
adb devices
命令检查现有的设备。 - 撤消手机上的 调试 。
- 按以下顺序重新启动 ADB 服务器:
adb kill-server
,然后是adb start-server
。 - 重新连接设备,并确认您同意该设备上的连接。
以下主题描述了 iOS 设备的问题及其相应的解决方法。
说明:iOS 物理设备无法启动。
解决方法:执行以下步骤:
- 确保您的设备信任该证书。在您的设备上,前往“设置”>“通用”>“配置文件与设备管理”,单击电子邮件条目(例如,Apple 开发: username@email.com),然后信任该证书。如果设备使用的是您的公司帐户,则不需要此操作。
- 如果收到无法访问端口 8100 的错误,请关闭 Appium (
ctrl + c
),然后重新启动。 - 如果您收到其他错误,请考虑查看 Appium XCUITest 驱动程序真实设备。
说明:iOS 16.0 设备无法启动或连接。
补救措施:安装并使用 Appium 2.0,而不是 Appium 1。有关安装和管理 Appium 2.0 的更多信息,请查看本地 iOS 设备先决条件 部分。