Appium - WebView测试(Android)
2015-08-02 10:48
597 查看
可能大部分人都知道了,或者有人写过了,我就当是个记录吧。
现在App都是混合型的,有原生的也包含WebView的,appium测试的时候就需要在原生和WebView之间切换才能完成测试。
查看当前所有的窗口
结果包含目前所有打开的app, 例如我打开了ES,我的被测应用,还有另外一个应用,
NATIVE_APP就是我的被测应用原生界面
WEBVIEW_com.test.android 是我的被测应用打开的WebView
另外两个一个是ES, 一个其他的应用(混合型的)
通过上面方法获得当前的所有context
我们可以通过context方法切换到指定的应用
切换完成后就可以像测试web应用一样测试了,所有的定位和web相同。
测试完web应用,需要操作原生应用的时候就需要切换回NATIVE_APP
我们可以通过context方法切换到原生应用
这样之后的操作就都是原生应用的操作了
现在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();
相关文章推荐
- Android进阶学习之路——View事件的传递机制
- ios-状态栏的改变
- Android Service 访问安全
- Android中对Log日志文件的分析
- Foundation框架-学习笔记<一>
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- 【Cocos2d入门教程十三】 浅析Cocos2d下3.x与2.x屏幕截图的区别
- iOS Quartz2D - 画文字 和 图片
- ubuntu14.04 android设备调试问题
- 如何在Android上编写高效的Java代码
- Android中ContentProvider详解例程
- IBM AppScan官方帮助文档错别字缺陷,IBM的测试人员也太粗心了吧
- Android DatePicker日期选择器、TimePicker时间选择器的使用
- 浅析Android Camera开发中的三个尺寸和三种变形 (贡献一个自适配Picturesize和Previewsize的工具类)
- Android ListView工作原理完全解析
- Android项目打包成APK文件
- [iOS]用instancetype代替id作返回类型有什么好处?
- Objective-C中的instancetype和id区别
- android 进程/线程管理(二)----关于线程的迷思
- ios中字符串(NSString)用法总结(持续更新)