管理上下文
许多应用程序平台的一个共同特点是,开发人员能够在平台原生应用程序框架内嵌入 Web 内容。这使开发人员能够利用 Web 技术或现有 Web 内容来实现部分或全部应用程序功能。但是,在单个应用程序中混合“模式”的额外复杂性可能会使旨在针对“原生”元素和行为的自动化工具难以使用。
Appium 提供了一组用于处理不同应用程序模式(称为“上下文”)的 API,Appium 驱动程序可以在支持这些不同模式下的自动化命令时实现这些 API。Appium 为此目的在 W3C WebDriver 规范中添加了三个基本命令
命令名称 | 方法/路由 | 参数 | 描述 | 返回值 |
---|---|---|---|---|
获取上下文 |
GET /session/:id/contexts |
获取可用上下文的列表 | array<string> |
|
获取当前上下文 |
GET /session/:id/context |
获取活动上下文的名称 | string |
|
设置上下文 |
POST /session/:id/context |
name (string ) |
切换到具有给定name 的上下文 |
null |
此 API 足够灵活,可以处理驱动程序方面的各种语义解释。例如,XCUITest 驱动程序包含两种上下文:原生应用程序上下文和任何活动 Web 视图,每个 Web 视图一个上下文。对Get Contexts
的调用将返回名称列表,您可以作为测试作者筛选这些名称并使用它们切换到适当的上下文。另一个例子是,Appium Altunity 插件引入了UNITY
上下文的概念,它封装了插件的所有特定行为,以确保在UNITY
上下文之外,使用活动驱动程序的通常命令实现。
重要的是要注意,对Get Contexts
的调用将始终包含至少一个上下文,传统上但并非必须命名为NATIVE_APP
。这是默认的活动上下文。
根据您所在的上下文类型,驱动程序的操作可能会发生变化。XCUITest 驱动程序在针对 Web 视图上下文时,不会运行其典型的查找和交互元素的例程。相反,它将运行一组适用于 Web 元素的不同例程。这可能会产生各种后果,例如支持不同的定位器策略集。
上表中的命令名称是命令的通用引用,而不是代码示例。有关如何在特定语言客户端库中访问上下文 API 的示例,请访问给定库的文档。