使用Appium测试Hybrid App的方法

来源:互联网 发布:windos系统优化设置 编辑:程序博客网 时间:2024/03/29 08:11
使用Appium测试Hybrid App的方法

一、Hybrid app是移动混合应用程序,即在移动应用程序中嵌入了Webview,通过Webview访问网页

移动应用和Webview分别属于两个不同的上下文,移动应用默认的Context为“NATIVE APP",Webview默认的Context为“WEBVIEW_+被测进程名称”。测试Webview中的网页内容时,需要切换到Webvicw的Context下,代码如下:

Set<String> contextNames = driver.getContextHandles();        for (String contextName : contextNames) {        // 用于返回被测app是NATIVE_APP还是WEBVIEW,如果两者都有就是混合型App            System.out.println(contextName);             if(contextName.contains("WEBVIEW")){            // 让appium切换到webview模式以便查找web元素                driver.context(contextName);                System.out.println("切换到webview:"+contextName);            }        }


二、定位webview中的元素

当使用uiautumator viewer查找元素属性时,有时识别不到webview中的元素,如下图:



可以使用Chrome的Devtools(需翻墙)来定位webview中的元素

1、先将测试手机USB调试开关打开,再将手机与电脑连接上。

2、在手机自带的浏览器中打开百度。

3、打开电脑上的Chrome浏览器,在地址栏输入“chrome://inspect/#devices",确定。如下图:

说明:
进入改地址后可以看到手机的信息,如:Redmi Note 3

4.点击上图中的“inspect”,打开如下窗口,注意:必须要翻墙,不然打开的是空白页


5、这时就可以定位元素,操作方法见下图:


6、根据xpath定位到元素就可以写测试用例了

7、操作完webview了记得切回到NATIVE APP:

driver.context(NATIVE APP);

三、使用 driver.getContextHandles() 只获取到NATIVE APP的情况。

出现这种情况的原因可能有以下两种:
第一种情况:测试手机不是android4.4以上的版本。而4.4以下版本的Webview没有使用Chrome内核,只有在Selendroid模式中才支持4.4以下的内核。所以需要在Desired Capabilities中添加这句代码:
SetCapability("automationName") = "Selendroid";

第二种情况:程序中使用的Webview不是Chrome内核。而Appian只支持Chrome内核。所以Appium就不能获取该Webview的Context。例如腾讯的X5内核。




0 0
原创粉丝点击