Appium - WebView测试(Android)

可能大部分人都知道了,或者有人写过了,我就当是个记录吧。
现在App都是混合型的,有原生的也包含WebView的,appium测试的时候就需要在原生和WebView之间切换才能完成测试。

1. 查看所有context

查看当前所有的窗口

    Set<String> contextNames = driver.getContextHandles();  
    System.print(contextNames);  

结果包含目前所有打开的app, 例如我打开了ES,我的被测应用,还有另外一个应用,

    [NATIVE_APP, WEBVIEW_com.test.android, WEBVIEW_com.estrongs.android.pop, WEBVIEW_com.xxxxx.sjj]  

NATIVE_APP就是我的被测应用原生界面

WEBVIEW_com.test.android 是我的被测应用打开的WebView

另外两个一个是ES, 一个其他的应用(混合型的)

2.切换到WebView

通过上面方法获得当前的所有context

我们可以通过context方法切换到指定的应用

    <pre name="code" class="java">driver.context("WEBVIEW_com.test.android");  
    driver.findElementByID("wd");  

切换完成后就可以像测试web应用一样测试了,所有的定位和web相同。

3. 切换到NativeApp

测试完web应用,需要操作原生应用的时候就需要切换回NATIVE_APP

我们可以通过context方法切换到原生应用

    <pre name="code" class="java">driver.context("NATIVE_APP");  

这样之后的操作就都是原生应用的操作了

4. Demo
        /** 
         * Switch to NATIVE_APP or WEBVIEW 
         * @param sWindow window name 
         */  
        private void switchToWindow(String sWindow) {  
            LogManager.getLogger(this.getClass()).info("Swith to window: " + sWindow);  
            Set<String> contextNames = driver.getContextHandles();  
            LogManager.getLogger(this.getClass()).info("Exists windows: " + contextNames.toString());  
            for (String contextName : contextNames) {  
                if (contextName.contains(sWindow)) {  
                    driver.context(contextName);  
                    break;  
                }  
            }  
        }  


    switchToWindow("WEBVIEW_com.test.android");  
    driver.findElementByID("wd").sendKeys("test");
    driver.findElementByID("sub").click();
    switchToWindow("NATIVE_APP");  
    driver.findElementByID("com.blossom.android:id/back").click();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值