首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >appium教程_1.基础概念认知

appium教程_1.基础概念认知

作者头像
千往
发布2020-09-08 17:05:14
2.2K0
发布2020-09-08 17:05:14
举报

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
image.png

会默认启动一个4723的端口来等待client的连接 当然支持各种参数,大家可以通过appium -h来查看

image.png
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
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • appium教程_1.基础概念认知
  • 前言
  • what
  • how
    • server端
    • client端
    • 设备
    • 连接
    • server-设备
      • 安卓
        • 运行原理
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档