干货|app自动化测试之Andriod WebView如何测试
Hybrid App(混合模式移动应用)是介于 Web-app、Native-app 之间的 app,本质上是 Native-app 中嵌入 WebView 组件,在 WebView 组件里可以访问 Web App。Hybrid App 在给用户良好交互体验的同时,还具备了 Web App 的跨平台、热更新机制等优势。
Android WebView 在 Android 平台上是一个特殊的 View,用它来展示网页内容。WebView 内部实现是采用渲染引擎来展示 View 的内容,提供网页前进后退、网页放大、缩小、搜索等功能。使用 WebView 进行测试需要开发人员配合打开一个 WebView 的开关。
WebView开关
WebView 是手机应用内嵌的浏览器,在 Android 4.4 之前 WebView 内核采用的是 WebKit,Android 4.4 之后才用的是 Chrome 作为内置浏览器。它是用来加载 HTML 页面的控件。在模拟器(android6.0 版本)中是默认打开 WebView 开关的,可以直接调试和测试 WebView。真机测试时,必须在应用中打开 WebView 调试开关。要启用 WebView 调试,请在 WebView 类上调用静态方法 setWebContentsDebuggingEnabled。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags &\
ApplicationInfo.FLAG_DEBUGGABLE))
{ WebView.setWebContentsDebuggingEnabled(true); }
}
开启这个开关之后,手机端打开被测的 WebView 页面,然后在电脑端 Chrome 浏览器地址栏录入 “chrome://inspect” 将显示设备上的 WebView 列表。
点击想要调试的 WebView 下方的 inspect 链接,就可以查看这个页面的源代码了。通过源代码就可以查看并确定元素定位表达式了。
如果遇到 Chrome 浏览器版本和 Chromedriver 版本不匹配的问题,可以参见:https://ceshiren.com/t/topic/3275
WebView 测试
切换到 WebView 页面,就可以使用 Selenium 操作元素。
driver.switch_to.context
方法可以从原生页面切换到 WebView 页面,示例代码如下:
webview = driver.contexts[-1]
driver.switch_to.context(webview)
WebView 案例
雪球案例,打开雪球应用,点击“交易”,点击“A 股开户”进入到开户页,验证页面正确。如下图:
实现的代码片断如下:
def test_webview(self):
# 点击交易
self.driver.find_element(MobileBy.XPATH, '//*[@text="交易"]').click()
# 打印当前页面有哪些上下文
print(self.driver.contexts)
e = self.driver.contexts
for context in self.driver.contexts[::-1]:
if 'webview' in context.lower():
aim = context
break
# 切换上下文
self.driver.switch_to.context(aim)
# 点击'A股开户'
print(self.driver.window_handles)
A_locator = (MobileBy.XPATH, '//*[@id="Layout_app_3V4"]/div/div/ul/li[1]/div[2]/h1')
WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(A_locator))
进入到 APP 后,打开一个包含 H5 的页面,系统默认是 Native 的上下文。如果要操作 H5 上的元素,则需要切换到 WEBVIEW 的上下文。
上面的代码先通过 driver.contexts 找到所有的 contexts(即上下文),循环遍历这个contexts,找到目标的 WEBVIEW,然后切换到这个 WEBVIEW 中,再执行相应的操作。这时就可以使用 Selenium 的定位方式到 H5 页面的元素了。
app自动化测试(Android)Andriod WebView测试就讲完了,大家学会了么?我们下一期为大家讲解微信小程序测试,有兴趣的小伙伴可以关注一下哦!
相关文章
- #淘宝#复制分享宝贝内容,打开淘宝APP,自己主动弹出宝贝提示信息
- APP 测试,什么时候需要收集日志?怎么收集日志?
- uni-app - 日历选择器组件(支持日期 “范围选择“ 多选 / 支持单选日期 / 自定义默认选中时间 / 弹框式 / 支持农历 )完美兼容 H5 APP 小程序,最好用的教程完整源代码插件!
- uni-app - 文字上下循环滚动翻滚,类似中奖名单与公告栏信息公示等等,自定义组件封装,支持 DIY(适用于新闻动态、公告上下滚动列表、上下循环滚动,无限上下自动滚动列表)兼容小程序/H5/App
- uni-app - 文本展开 / 收起折叠功能,支持自定义样式(当文本内容超出规定行数后,展开收起折叠的功能)兼容 H5 / App / 小程序且易用更容易修改的插件组件源码,超详细的示例代码及注释
- uni-app - 面包屑导航组件,支持自定义分隔符,点击可跳转对应页面(全端兼容 H5 APP 小程序,组件代码干净整洁无BUG)
- 关于robotframework,app,appium的xpath定位问题及常用方法
- 【便签】签到app安卓客户端(开源)
- uni-app webview H5页面跳转小程序页面 各种方法;包括 postMessage可以触发,但绑定的message方法不触发问题
- 移动开发者大会--除了App,软件,我们还应该考虑什么
- (1)前端框架uni-app
- 【HMS core】【Push Kit】【FAQ】推送条数是否可以增加、夜间息屏消息管控、The app is not exist
- 《移动App测试的22条军规》—第5章5.2节WebView的测试
- 《移动App测试的22条军规》——第5章,第5.2节WebView的测试
- SwiftUI 界面大全之专业个人简历APP
- macOS 开源APP大全之 CSV多功能编辑App(教程含源码)
- 基于人脸识别的考勤系统 — Flask App — With GUI — with source code
- 使用spring boot创建fat jar APP
- 轻松搞定表白女朋友:Android版APP (零基础也可前往Github免费下载软件)
- 小程序地图App.json