zoukankan      html  css  js  c++  java
  • 遇安卓内嵌h5 webview页面定位方法

    现在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定位webiframe一样)

    操作如下:

    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切换就可以实现定位!!!

     

  • 相关阅读:
    Extjs 中combobox下拉框初始化赋值
    关于继承的理解
    近来很郁闷
    Java String 常量池理解
    关于时间复杂度的讲解
    List、Set和数组之间的转换(转载)
    提升自我修养的具体方法有哪些?
    Mapped Statements collection does not contain value fo
    io流导出csv
    反射,System.Type类
  • 原文地址:https://www.cnblogs.com/QiKa/p/14585733.html
Copyright © 2011-2022 走看看