zoukankan      html  css  js  c++  java
  • appium_android-常见的问题

    po模型的原则:
        用公共方法代表UI所提供的功能
        方法应该返回其他的PageObject或者返回用于断言的数据
        同样的行为不同的结果可以建模为不同的方法 不要在方法内加断言 字段意义
        不要暴露页面内部的元素给外部
        不需要建模UI内的所有元素
    
    模拟器的选择:
        bluestacks 类似网易mumu,中文名蓝叠
        网易mumu 默认支持arm指令,不过版本只有6.0
        genymotion 默认只支持x86 需要插件才可以支持arm指令
    
    列出所以的模拟器:$(which emulator) -list-avds
    
    启动某个模拟器:$(which emulator) @Pixel_2_API_27
    
    mumu模拟器的常见设置:
        自定义显示 宽720 -高1080--分辨率
        开发者选项-》输入-》显示坐标与点击位置
    webview的调试:
        模拟器默认开启webview的debug开关。网易mumu模拟器除外
    
    chromedriver相关的配置:
        chromedriverUseSystemExecutable=true 默认使用/usr/local/lib/node_modules/appium/node_modules/_appium-chromedriver@4.14.0@appium-chromedriver/chromedriver/mac/chromedriver
        chromedriverExecutableDir指向chromedriver的存放目录,目前不生效
        chromedriverExecutable执行chromedriver的绝对路径
    
    自动化注意事项:
        合理的使用显式等待
        accessibility xpath定位
    
    Webview识别原理:
        appium会启动chromedriver /Users/seveniruby/projects/chromedriver/2.20/chromedriver --url-base=wd/hub --port=8000 --adb-port=5037 --verbose
        app或者浏览器,底层使用的是android的webview组件,webview组件有一个debug特性,可以在启动的时候,写入一个domain socket记录, webview_devtools_remote_3548
        adb -P 5037 -s emulator-5554 shell cat /proc/net/unix 找到对应的webview调试入口
        adb forward tcp:$port localabstract:webview_devtools_remote_$pid
        curl http://localhost:7770/json/version
        curl http://localhost:7770/json
    
    
        自动寻找webview并分析
            list_webview ()
            {
            port=$1;
            adb shell cat /proc/net/unix | grep -a webview | awk -F_ '{print $NF}' | tr -d '
    ' | while read pid; do
                port=$((port+=1));
                adb forward tcp:$port localabstract:webview_devtools_remote_$pid;
                curl http://localhost:$port/json/version;
                curl http://localhost:$port/json;
            done
        }
        list_webview 7770
    
    真机为了提高性能,默认不开启webview的debug属性,需要研发在webview的组件上调用debug开关 
    
    uiautomator可以识别webview组件:
        本来是不可识别的
        从android的高版本6.0之后uiautomator已经可以识别webview了,他会把webview转化为原生控件来表示
        44813内核不支持调试
        appium无法识别小程序内的控件,但是uiautomatorviewer却可以
    
    测试策略:
        使用原生定位方式,通用性比较好
        把内嵌的网页使用手机浏览器代替测试
        如果还搞不定,模拟器上进行测试
    
    三端的脚本执行环境以及用于渲染非原生组件的环境是各不相同的:
    
    在 iOS 上,小程序逻辑层的 javascript 代码运行在 JavaScriptCore 中,视图层是由 WKWebView 来渲染的,环境有 iOS8、iOS9、iOS10;
    
    在 Android 上,
    
    旧版本,小程序逻辑层的 javascript 代码运行中 X5 JSCore 中,视图层是由 X5 基于 Mobile Chrome 57 内核来渲染的;
    
    新版本,小程序逻辑层的 javascript 代码运行在 V8 中,视图层是由自研 XWeb 引擎基于 Mobile Chrome 67 内核来渲染的;
    
    在 开发工具上,小程序逻辑层的 javascript 代码是运行在 NW.js 中,视图层是由 Chromium 60 Webview 来渲染的。
    

    Appium的组件

  • 相关阅读:
    HDU 2066 一个人的旅行 最短路问题
    HDU 2112 HDU Today 最短路
    HDU 2521 反素数 模拟题
    mac 安装 office
    selenium用法 (python)
    selenium遇到不可编辑input和隐藏input如何赋值
    mac 下bash命令
    ssh 自动登录
    linux常用命令
    json字符串调整
  • 原文地址:https://www.cnblogs.com/an5456/p/11423510.html
Copyright © 2011-2022 走看看