使用Appium测试Hybrid App的方法

本文介绍了如何使用Appium测试Hybrid App,包括切换到Webview上下文,利用Chrome Devtools定位Webview元素,以及解决只获取到NATIVE APP Context的问题。测试关键步骤包括设置Desired Capabilities,使用Devtools进行元素定位,并在测试完成后切回NATIVE APP。
使用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内核。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值