遇安卓内嵌h5webview页⾯定位⽅法
现在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⼀样)
操作如下:原生安卓app开发
1、先打印当前页⾯的context。看看是NATIVE_APP还是webview的?
driver.current_context #先获取当前页⾯的context。
2、要定位webview⾥⾯的元素信息,就切换到指定的context⾥⾯去!(然后要定位NATIVE_APP安卓原⽣的元素信息,那么就⼜需要切换回去)
Driver.t(“NATIVE_APP”) #切换到android原⽣⾥⾯去!
Driver.t(“”) #切换到webview⾥⾯去!
如果遇到有多个:
#ts #这表⽰获取所有的context上下⽂
#driver.t(context[1]) #通过下标,选择某个切换进⼊
注意:有些只有NATIVE_APP那么就不需要切换
⽐如:打印context的时候只有NATIVE_APP。
那么这种情况就只能使⽤appium服务端⾥⾯的inspect去定位了(有其他⽅式也可以⽐如翻q后去chrome://inspect调试),并且这种情况不需要去switch切换就可以实现定位
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论