• Appium元素定位难点:混合式的native+webview


    现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了。

    1.认识识webview

    >用uiautomatorviewer定位工具查看app页面,发现页面上有些区域无法定位到,如下图左边红色区域,只能定位到这个大框框,红色框里面的元素是无法识别的。

    >这时候可以查看元素属性,如右图它的class属性,上面写着WebView,那毫无疑问这种页面就是webview了。

    2.、接触contexts

    >.context的中文翻译是上下文环境,学过selenium的同学,也可以理解为句柄(handle),其实是一回事,反正知道是两个不同的环境就行了。

    >.先获取页面是contexts环境,如下图红色区域,获取的是一个list列表:

    NATIVE_APP:这个就是native,也就是原生的

    WEBVIEW_com.xxxx :这个就是webview

    >.当看到打印出来有下图两个,就说明获取到webview的context了(当然也有的app有坑,可能明明有webview,却通过contexts获取不到,这种需要特殊处理了)

     
    获取webview的context

    3.换到webview

    >要想操作webview上的元素,第一步需要切换环境(跟selenium的切换iframe,切换handle思路是一样)

    >切换方法:switch_to.context(参数是webview的context)

    >由于第二步已经获取到contexts是一个list对象,取这个list的第二个参数就行,也就是contexts[1]

     
    换到webview页面

    4.切回native

    >webview上操作完后,想回到native上操作,这时候需要先切回来,切回native有两个方法:

    方法1:driver.switch_to.context("NATIVE_APP")   # 这个NATIVE_APP是固定的参数

    方法2:driver.switch_to.context(contexts[0])      # 从contexts里取第一个参数

     
     
     
  • 相关阅读:
    JAVA集合类汇总
    springmvc执行流程详细介绍
    java文件上传和下载
    Java中的Filter过滤器
    JSTL介绍及使用
    JSP知识汇总
    JAVA集合类汇总
    服务治理框架dubbo中zookeeper的使用
    map进程数量和reduce进程数量
    Hadoop的序列化
  • 原文地址:https://www.cnblogs.com/kaola8023/p/11552452.html
Copyright © 2020-2023  润新知