例如,我们有需要启用 TouchID 的场景,也有需要禁用 TouchID 的场景。 Appium 本身并没有公开这些功能,所以我想知道是否可以为设备定义自定义功能。
如果不能使用 Appium 本身,我很乐意将 Selenium Grid 放在中间,以防它提供这样的功能。
我们正在使用 Perfecto 在本地和云端进行测试,所以作为一个附带问题,我想知道 Perfecto 或任何其他云服务是否提供此功能。
所以,如果我在启动 Appium session 时定义以下功能:
capabilities.touchID = 'enabled';
我会得到一个启用了 TouchID 的设备。
此外,TouchID 只是一个示例,我们有很多事情需要自定义功能。
Best Answer-推荐答案 strong>
可以在创建新 session 时定义自己的能力:
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 服务器不知道您的功能,也无法根据自定义功能配置其逻辑。您更有可能需要在放置测试的客户端定义逻辑
- 为 session 存储的功能。如果你想改变 -> 开始新的 session
大多数移动云也有自己的自定义功能,所以对于您的附带问题:
关于android - 是否可以在 Appium 中为设备定义自定义功能?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/48230513/
|