画布 1
appium 学习路线
  appium 测试框架- 入门
    appium 安装
      JAVA 环境
        环境搭建贴 https://ceshiren.com/t/topic/13450
        下载安装+环境变量配置
      sdk环境
      appIum server
        界面版：appium desktop
          Appium Server
          Appium inspector
        服务版：npm install -g appium
          nodejs环境
            npm工具
            node环境
      appium client
        pip install appium-python-client
          from appium import webdriver
    appium 用例录制
      appIum desktop 录制
    appium 元素定位
      id定位
      content-desc
        accessbility-id
        content-desc
      xpath 定位(重点！！！)
        //*[@属性名='属性值']
        //*[contains(@属性名, '属性值')]
      Android 原生定位
      ios 原生定位
    appium 等待方式
      强制等待 time.sleep()
      显式等待
        WebDriverWait(driver, 10, 0.5).until()
      隐式等待
        driver.implicitly_wait(time) 单位：秒
    appium desirecapbility 基本用法
      http://appium.io/docs/en/writing-running-appium/caps/
    appium app 控件交互
      点击方法 element.click()​
      输入操作 element.send_keys(“appium”)​
      设置元素的值 element.set_value(“appium”) ​
      清除操作 element.clear()​
      是否可见 element.is_displayed() 返回 True/False
      是否可用 element.is_enabled() 返回 True/False​
      是否被选中 element.is_selected() 返回 True/False​
      获取属性值 get_attribute(name)​
        源码地址：https://github.com/appium/appium-uiautomator2-server/blob/master/app/src/main/java/io/appium/uiautomator2/handler/GetElementAttribute.java
        {text,name} text(返回 text)​
        {class,className} (返回 class，只有 API=>18 才能支持)​
        {resource-id,resourceId} (返回 resource-id，只有 API=>18 才能支持)​
        {content-desc,contentDescription} 返回content-desc属性
        checkable, checked,clickable, enabled, focusable, focused, {long-clickable,longClickable}, package, password, scrollable, selection-start, selection-end, selected, bounds, displayed, contentSize 返回true or false
      获取元素文本​
        格式：element.text​
      获取元素坐标​
        格式：element.location​
          结果：{'y': 19, 'x': 498} ​
      获取元素尺寸（高和宽）​
        格式 ：element.size ​
          结果：{'width': 500, 'height': 22} ​
    appium 触屏操作
      TouchAction可用的事件：(弃用)
        Press （手势）按下
        release （手势）抬起，释放
        moveTo 移动
        tap 点击
        wait 等待
        longPress 长按
        cancel 取消
        perform 执行
      ActionChains() 最新的api
    滑动
      swipe(startx, starty, endx, endy, duration)
  appium 测试框架- 进阶
    高级定位技巧
      xpath 层级定位技巧
        父结点，祖辈结点
          /../..
        兄弟结点
          /../*[@text='联系人']
          following-sibling 选取当前节点之后的所有兄弟结点
          preceding-sibling 选取当前节点之前的所有兄弟结点
        子结点，子孙结点
          /子结点/子结点
          //*
      css selector 定位(Android 原生定位 )
        1.19.1 新出的一种定位，自动转成android原生 定位
      android 原生定位
        new UiSelector(),text()
        android 滑动查找元素
      ios 原生定位
    appium desirecapbility进阶用法
      测试策略相关
        - noReset
          防止 清空缓存
            登录过应用
          True
            防止清空缓存
              登录过的信息会保留
          False
            清空缓存信息
              清空登录信息，需要重新登录
        - fullreset
          True
            将app 卸载，重新安装
        - dontStopAppOnReset
          True
            在启动app的时候 不停止app
      性能相关
        - skipServerInstallation
          skipServerInstallation 跳过uiAutomator2服务器安装并使用设备中的uiAutomator2服务器。当设备上已安装适当版本的uiAutomator2服务器时，可用于提高启动性能。默认为false
        - skipDeviceInitialization
          skipDeviceInitialization在每次运行的时候都会将io.appium.settings app安装到你的手机设备上，这个应用会管理设备上的一些特殊的设备
        - skipUnlock
        - skipLogcatCapture
        - ignoreUnimportantViews
        - relaxed-security 启动的时候设置
          禁用额外的安全检查
          打开这个设置开关，可以允许在代码中使用adb命令
    模拟器控制
      sdk自带的模拟器
        adv
    webview 技术原理
    appIum原理与JsonWP协议 分析
  appium 测试框架- 应用
    PO封装
      1. 公共的方法代表页面提供的服务
      2. 不要暴露细节
      3. PO中不要有断言
      4. 页面切换需要使用 return 关键字
      5. 不要页面所有的元素，用到哪个封装哪个
      6. 相同的行为会产生不同的结果，可以封装不同方法
    测试框架优化
      基类封装
        - BasePage 的封装
          driver封装
      增强功能
        - find 方法
          - find_and_click 方法
          find_and_sendkeys方法
        日志收集
        - handle_exception 方法
    数据驱动
      测试数据的数据驱动
      测试步骤的数据驱动
    分布式执行
      selenium grid
    UI 自动化测试平台