• Appium-Hybrid Mobile App


    定义

    可以理解为通过 Web 网络技术(如 HTML,CSS 和 JavaScript)与 Native 相结合的混合移动应用程序。H5主要用于界面的编写,比如按钮、单选框以及下拉框等; CSS3用于对界面细节化的修饰,设置不同的样式;JS实现数据交互。Native与HTML相比,性能稳定、交互流畅,可以调用本地硬件和访问本地资源,但是开发和维护成本高,发布周期长。而HTML有着跨平台,开发成本第,更新快等有点。

    现在很多app都是由原生页面(native)和webview页面(H5)组成,在自动化测试中需要判断页面是native还是webview。

    Hybrid 测试流程

    1. 进入的页面具有webview
    2. 使用uiautomatorviewer工具或contexts方法进行判断存在webview
    3. 使用context方法切换进webview
    4. 定位,操作
    5. 再次使用context方法返回native

    webview与native的判断

      1、uiautomatorviewer中判断
      在UI Automator Viewer中,查看结构,如果节点的class 是android.webkit.WebView 则可判断为 H5页面

      

      2、通过contexts方法判断
        driver.contexts

    # ['NATIVE_APP', 'WEBVIEW_com.tencent.xxx']
    contexts打印结果为:['NATIVE_APP', 'WEBVIEW_com.tencent.xxx']
    NATIVE_APP则表示为app原生页面。
    webview_com.XXXX 表示为 webview 页面

    webview 操作

    由于 native 和 webview 是两种不同页面,所以要在native中操作webview需要先切换到webview页面,切换方法:
    由于driver.contexts返回的是一个列表,当然可以使用index获取webview
    driver.switch_to.context(driver.contexts[1])
    在webview中操作完成后,需要切换到NATIVE_APP继续操作。可以使用driver.contexts返回值的index=0操作,或者直接使用NATIVE_APP进行操作
    driver.switch_to.context(driver.contexts[0])driver.switch_to.context(“NATIVE_APP”)

    错误一解决:

    出现:Original error: No Chromedriver found that can automate Chrome ‘80.0.3987.122’表示浏览器版本与驱动版本不匹配
    解决方法:下载匹配的chrome浏览器版本与驱动,手机与PC端chrome的版本最后一致
    chrome driver 下载地址:https://npm.taobao.org/mirrors/chromedriver

    chrome driver下载后存放在 ~Appium esourcesapp ode_modulesappium ode_modulesappium-chromedriverchromedriverwin 下
    或者:在脚本的caps中添加driver:
    caps["chromedriverExecutable"] = r"xxxxxxxxxxprojectAutoTestchromedriver.exe"
    或者:
    caps["chromedriverExecutableDir"] = r"xxxxxxxxxxprojectAutoTest"

    错误二解决:

    使用contexts无法获取webview
    1、android4.4以上需要开启webView的远程调试开关
    2、测试中开启debug

     

  • 相关阅读:
    iptables
    vsftpd安装
    完整java开发中JDBC连接数据库代码和步骤
    java中使用队列:java.util.Queue
    程序中遇到重点问题
    在JSP页面中用select下拉列表来显示List列表的方式
    java.lang.String cannot be cast to [Ljava.lang.Object;
    java虚拟机的内存设置
    网络协议都有哪些
    使用java技术将Excel表格内容导入mysql数据库
  • 原文地址:https://www.cnblogs.com/tynam/p/12400929.html
Copyright © 2020-2023  润新知