Appium测试混血App

来源:互联网 发布:淘宝卖家遇到诈骗案例 编辑:程序博客网 时间:2024/05/17 07:39

Appium测试混血App:

Hybrid App(混合模式移动应用)

是指介于web-app、native-app这两者之间的app,
兼具“Native App良好用户交互体验的优势”和“Web App跨平台开发的优势”。

混合应用

Appium的核心原则之一是您不必更改应用程序进行测试。
根据该方法, 可以使用Selenium进行网络应用程序的测试,
测试混合网络应用程序(例如iOS应用程序中的UIAWebView元素)。
需要一些技术复杂性,以便Appium知道您是要自动化应用程序的本机或Web视图,
但是幸运的是,我们可以将其保留在WebDriver协议中。

以下是在您的Appium测试中与网络视图通话所需的步骤:

1、导航到您的应用程序的一部分网页视图处于活动状态
2、调用GET session /:sessionId / contexts
3、这返回了我们可以访问的上下文列表,如“NATIVE_APP”或“WEBVIEW_1”
4、使用您要访问的上下文的ID 调用POST session /:sessionId / context
5、(这使您的Appium会话成为一种模式,其中所有命令都被解释为用于自动化Web视图,
       而不是应用程序的本机部分。例如,如果运行getElementByTagName,
       它将对Web视图的DOM进行操作,而不是返回UIAElements。
       当然,某些WebDriver方法只在一个上下文中有意义,所以在错误的上下文中会收到一条错误消息。
6、要停止在Web视图上下文中的自动化,并返回自动化应用程序的本机部分,
      只需context使用本机上下文id再次调用即可离开Web框架。

Android混合应用程序

Appium通过Chromedriver提供内置的混合支持。
Appium还使用了Selendroid,在超过4.4的设备上进行webview支持。
(在这种情况下,您需要指定"automationName": "selendroid"为所需的功能)。
确保 setWebContentsDebuggingEnabled设置为true,如远程调试文档中所述。
一旦您设置了所需的功能并开始了一个应用程序会话,请按照上面的一般说明进行操作。

Set<String> contextNames = driver.getContextHandles();for (String contextName : contextNames) {    System.out.println(contextNames);    //打印出native_app or webview_1}driver.context(contextNames.toArray()[1]);//设置上下文为WEBVIEW_1String myText = driver.findElement(By.cssSelector(".green_button")).click();
driver.context("NATIVE_APP");
//如果我们想做更多的本地测试