是否可以在 Appium 中为设备定义自定义功能



例如,我们有需要启用TouchID的方案,也有需要禁用TouchID的方案。Appium 本身不会公开此类功能,所以我想知道是否可以为设备定义自定义功能。

如果 Appium 本身无法做到,我很乐意将 Selenium Grid 放在中间,以防提供这样的功能。

我们正在使用Perfecto在本地和云中进行测试,因此作为一个附带问题,我想知道Perfecto或任何其他云服务是否提供此功能。

因此,如果我在启动 Appium 会话时定义以下功能:

capabilities.touchID = 'enabled';

我会得到一个启用了TouchID的设备。

此外,TouchID只是一个例子,我们有很多东西需要自定义功能。

可以在创建新会话时定义自己的功能:

caps.android = {
  platformName: 'Android',
  ...
  mycap: 12345
}

Appium 服务器将抛出消息,指出它收到了无法识别的功能

[BaseDriver] The following capabilities were provided, but are not recognized 
by appium: mycap.
[BaseDriver] Session created with session id: f672074d-ed33-49c1-a243-b8d10572608e

稍后在测试中,您可以获得能力值,例如在 wd.js 中:

const caps = await driver.sessionCapabilities()
// caps.mycap will return 12345

并根据值设置您需要的逻辑,例如发送特定的 adb 命令

几点说明:

  • Appium 服务器不知道您的功能,也无法根据自定义功能配置其逻辑。更有可能的是,您需要在放置测试的客户端定义逻辑
  • 为会话存储的功能。如果要更改 ->启动新会话

大多数移动云也有自己的自定义功能,因此对于您的附带问题:

  • 查看 Perfecto 官方文档以了解他们需要哪些功能以及您的"自定义"功能是否到位。
  • Appium 具有适用于 iOS 模拟器的 Touch ID 功能

最新更新