现在Android应用 层开发的方向有两种:客户端开发和HTML5移动端开发!
所谓的HTML5端就是:HTML5 + CSS + JS来构建 一个网页版的应用,而这中间的媒介就是这个WebView,而Web和网页端可以通过JS来进行交互,
比如, 网页读取手机联系人,调用手机相关的API等!
而且相比起普通的客户端开发,HTML5移动端有个优势:
可以用百分比来布局,而且如果HTML5端有什么大改,我们不用像客户端那样去重新下一个APP,
然后 覆盖安装,我们只需修改下网页即可!
当然HTML5也有个缺点,就是性能的问题, 数据积累,耗电问题,还有闪屏等等.
webview概念:
Android内置webkit内核的高性能浏览器,而WebView则是在这个基础上进行封装后的一个 控件,
WebView翻译:网页视图,可以简单的看作一个可以嵌套到界面上的一个浏览器控件!
如何在使用appium时正确识别webview呢?
方法:页面元素有webview,或者定位时只能定位到一整块区域!
简要说明:
对于android和webview来说,用context可以区分出来哪一个是android和webview
Android原生的context是:NATIVE_APP,
这种嵌套的h5页面的context是: Webview
------------->>>应用在appium自动化里面 ,被称为“context上下文”
如何定位呢?
比如:遇到从android原生遇到有webview的页面时,此时就需要先切换到webview这个页面控件去
然后才能定位.(就如同selenium定位web的iframe一样)
操作如下:
1、先打印当前页面的context。看看是NATIVE_APP还是webview的?
driver.current_context #先获取当前页面的context。
2、要定位webview里面的元素信息,就切换到指定的context里面去!(然后要定位NATIVE_APP安卓原生的元素信息,那么就又需要切换回去)
Driver.switch_to.context(“NATIVE_APP”) #切换到android原生里面去!
Driver.switch_to.context(“WEBVIEW_com.xxx”) #切换到webview里面去!
如果遇到有多个:
#context=driver.contexts #这表示获取所有的context上下文
#driver.switch_to.context(context[1]) #通过下标,选择某个切换进入
注意:有些只有NATIVE_APP那么就不需要切换
比如:打印context的时候只有NATIVE_APP。
那么这种情况就只能使用appium服务端里面的inspect去定位了(有其他方式也可以比如翻q后去chrome://inspect调试),
并且这种情况不需要去switch切换就可以实现定位!!!