手机自动化---内嵌网页或 WebView的测试

什么是WebView 1、混合(Hybrid)应用
一部分是原生界面和代码,而另外一部分是内嵌网页,比如微信、支付宝。内嵌了一个浏览器内核,由浏览器内核实现的。
2、安卓应用中的内嵌的展示网页内容的模块,我们称为WebView
3、需要开发人员修改代码。APP修改编译
手机自动化---内嵌网页或 WebView的测试
文章图片

黄色高亮部分,意思是打开调试,支持自动化调试,生产环境都是关闭的。
appium自动化webView 切换到webView,类似于selenium中嵌套iframe的切换:
(1)appium中把所有的界面环境称为context
(2)native部分类似于iframe,native的context名字一般为NATIVE_APP
(3)webview部分的context则为WEBVIEW_XXXX[应用app package]
(4)我们怎么查看当前有哪些context呢?
driver.contexts
(5)而显示当前context的则是
driver.current_context

context = driver.current_context
(6)先要进入到native里面在进行元素操作。
此时已经从app中进入了百度链接的web页面,接下来的定位xpath都是在web页面上进行的,所以需要转换到web页面,使用语句
self.driver.switch_to.context(‘WEBVIEW_XXXX’)
如果是从App转到web的话()填"WEBVIEW_XXXX",
如果web转到App的话填"NATIVE_APP"
示例代码

time.sleep(3) #获取所有可以自动化的context,运行结果:['NATIVE_APP','WEBVIEW_com.duodujisaunqi.jcy.wvtest'] print(driver.contexts) #显示当前的context,运行结果[NATIVE_APP'] print(driver.current_context) #从APP进入到web页面 driver.switch_to.context("WEBVIEW_com.duodujisaunqi.jcy.wvtest") #d对元素进行操作 driver.find_element_by_id("index-kw").send_keys("zhongguo") driver.find_element_by_id("index-bn").click() #从web页面到app driver.switch_to.context("NATIVE_APP") #回到app,才能操作app上的元素 driver.find_element_by_id("com.duodujisaunqi.jcy.wvtest:id/navigation_dashboard").click()

如果运行报以下错:
当前手机浏览器的版本是64.0.3282与webview版本不匹配手机自动化---内嵌网页或 WebView的测试
文章图片

前往 https://www.apkmirror.com/apk/google-inc/android-system-webview/ (需要科学上网)
选择最新版本,点击下载,进入下载页面,armeabi版本,点击进去,下载apk,下载之后记录路径,并且修改新的名字,我这里命名为com.google.android.webview_78.apk。
手机自动化---内嵌网页或 WebView的测试
文章图片

下载完成之后,使用adb安装到手机
在cmd命令下输入adb -r com.google.android.webview_78.apk
webView的内容不依赖所在app 开发人员打开调试开关之后,就可以开始测试。
(1)获取URL
(2)直接使用Chrome浏览器打开对应的网页,使用手机模式。
webView的内容依赖所在app 【手机自动化---内嵌网页或 WebView的测试】1、通过chrome的远程调试功能
2、打开Chrome浏览器,地址输入Chrome://inspect(需要科学上网)
手机自动化---内嵌网页或 WebView的测试
文章图片

可以看到我的app的包名,下面就会显示我内嵌打开的地址,点击inspect,就会进入到查看元素的页面,就可以用之前的方法查看元素了。

    推荐阅读