使用Appium测试Hybrid App的方法

使用Appium测试Hybrid App的方法

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

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

Set 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中的元素,如下图:

使用Appium测试Hybrid App的方法_第1张图片

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

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

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

3、打开电脑上的Chrome浏览器,在地址栏输入“chrome://inspect/#devices",确定。如下图:
使用Appium测试Hybrid App的方法_第2张图片
说明:
进入改地址后可以看到手机的信息,如:Redmi Note 3

4.点击上图中的“inspect”,打开如下窗口,注意:必须要,不然打开的是空白页
使用Appium测试Hybrid App的方法_第3张图片

5、这时就可以定位元素,操作方法见下图:
使用Appium测试Hybrid App的方法_第4张图片

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内核。




你可能感兴趣的:(自动化测试,自动化测试)