Appium Appium - WebView 测试 (Android)

深圳-Max · 2015年07月23日 · 最后由 菜菜鸟 回复于 2017年10月13日 · 1783 次阅读

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();
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞

不错的分享,简洁明了。

有点小建议:
封装的函数名称最好不要叫 switchToWindow,因为 webdriver 本来也有 window 这样的概念(对应浏览器里的多个窗口或者 tab),应该叫 switchToContext。

切换到 webview 的时候,不会经常出现卡死的情况吗,

mark

—— 来自 TesterHome 官方 安卓客户端

mark 一下

阳光下的草 求助-非原生控件如何测试 中提及了此贴 02月21日 20:56

这个帖子应该加精

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册