appium教程_1.基础概念认知

appium教程_1.基础概念认知

前言

官网文档: http://appium.io/docs/cn/about-appium/intro/
最好自行查阅,一下多为个人总结

what

Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用

说人话就是,appium是用来搞app自动化的,可以来跑ios和android,先看基本架构:


三个部分
appium client : 其实就是各种语言的包,通过http协议跟appim-server通信,传达命令
appium server: 通过npm安装的appium server,通过appium命令启动
设备: 支持安卓,苹果手机

how

server端

通过appium命令启动server端,最简单就是执行appium,如下:
image.png
会默认启动一个4723的端口来等待client的连接
当然支持各种参数,大家可以通过appium -h来查看
image.png

client端

client端其实就是各种语言,用python为例子

# 安装client端
pip install Appium-Python-Client


# Android environment
import unittest
from appium import webdriver

desired_caps = dict(
    platformName='Android'
    platformVersion='10'
    automationName='uiautomator2'
    deviceName='Android Emulator'
    app=PATH('../../../apps/selendroid-test-app.apk')
)
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
el = self.driver.find_element_by_accessibility_id('item')
el.click()

webdriver.remote就是通过http协议跟server端建立连接,desired_caps参数是指定appium连接的platform,driver;
然后通过提供的方法来传达指令,如上代码,通过accessibility_id的方式去寻找一个元素,然后点击该元素


设备

用安卓手机举例子,需要开启开发者模式,请自行百度开启
通过usb线连接手机和电脑,执行adb命令来查看手机相关信息,adb全称 android debug bridge,通过电脑端来跟手机进行交互

adb device 查看连接的设备
udid是手机的唯一标识,当多台设备的时候,就需要指定udid来识别哪台设备

image.png

连接

server端:接收client发送的指令请求,转化为可以驱动设备的语言,传递给设备
client端:主动跟server端建立连接,并发送/接口server端
设备端:接受指令,在设备上执行动作

server-设备

这块的知识还扯不清楚,个人理解如下:
server端是在电脑上的,然后通过usb线来连接设备(听过可以通过局域网实现无线连接)

安卓


安卓有两套deiver,两种底层不一样,这里只讨论最新的UIAutomator2(https://github.com/appium/appium-uiautomator2-server),旧得UIAutomator基本被淘汰了
UIAutomator2的前提是,安卓设备要是安卓5.0以上,现在的设备都9,10了的,所以目前就这玩意了

运行原理

  1. client端通过传递desired capabilities给appium server来创建一个session, appium server根据automationName去启动对应的driver,默认是android-driver,如下:
desired_caps = dict(
    platformName='Android'
    platformVersion='10'
    automationName='uiautomator2'  # 这里就是指定的就是uiautomator2
    deviceName='Android Emulator'
    app=PATH('../../../apps/selendroid-test-app.apk')
)
  1. appium server 就会调用appium-uiautomator2-driver,同时将uiautomator2 server的两个apk安装到测试设备上
    1. io.appium.uiautomator2.server.apk,执行handlers
    2. io.appium.uiautomator2.server.test.apk,只有一个test,用于启动server


  • AppiumServlet ,管理请求的路由,将driver发过来的请求转发给对应Handler.
  • Handler,调用UiAutomator V2去执行指定操作,操作的结果经AppiumResponse统一封装
  • AppiumResponse,操作结果返回给appium-uiautomator2-driver,再将结果返给客户端


这上面的步骤都是可以通过appium-server的日志看到,也可以通过手机端的应用可以看到,其实安装了三个应用,除了上述的两个还有一个appium setting,用来通过adb命令来设置手机,具体可参考(https://github.com/appium/io.appium.settings

参考资料

https://blog.imaginea.com/how-appium-uiautomator2-server-works/
https://www.jianshu.com/p/d8457a06c7b7
https://github.com/appium/appium-uiautomator2-server/wiki

posted @ 2020-09-04 20:04  whendream  阅读(570)  评论(0编辑  收藏  举报