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

时间:2018-01-12 16:42:54

标签: android ios appium selenium-grid desiredcapabilities

例如,我们有需要启用TouchID的场景,并且我们有需要禁用TouchID的场景。 Appium本身并没有公开这样的功能,所以我想知道是否可以为设备定义自定义功能。

如果它无法与Appium本身一起使用,我很乐意将Selenium Grid置于中间,以防提供此类功能。

我们正在使用Perfecto对本地和云端进行测试,因此,如果Perfecto或任何其他云服务提供此功能,我想知道这个问题。

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

capabilities.touchID = 'enabled';

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

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

1 个答案:

答案 0 :(得分:0)

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

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服务器不了解您的功能,也无法根据自定义功能配置其逻辑。您更有可能需要在客户端定义逻辑
  • 为会话存储的功能。如果你想改变 - >开始新的会议

大多数移动云也有自己的自定义功能,所以对于你的问题: