appium工具相关

news2024/9/25 21:21:57

一、appium基本介绍

1、appium 基本介绍
  1. 定义:appium 就是一款非常流行和好用的第三方工具,通过该工具我们可以配合 python 脚本实现 IOS / Android 多平台的APP 自动化测试。
  2. 作用:在编写测试脚本的PC机和运行 APP 的真机或设备之前充当一个 “中转翻译” 的角色,让真机可以理解和执行测试开发工程师编写的脚本,从而达到运行 APP 功能的效果。
2、appium 工作原理【理解】

appium 从名称来看是一个工具,但是它的工作过程会涉及到多款不同的工具组合,所以为了方便学习和理解。我们在此处将其分为三个部分:客户端 + 服务端 + 设备端,其中客户端我们可以理解为是我们编写脚本代码的地方,在我们课程就可以直白认为是 pycharm 。服务端就是我们就是负责接收客户端脚本的中间服务,设备端就是APP的载体,最终去运行具体的脚本代码,从而让APP去执行对应的动作

appium 是一款遵循webdriver 协议的CS架构,客户端只要能发送 Http 协议就可以将具体的数据传送到 服务端,此时服务端就会开启一个 4723端口来管理这个服务,当 appium 接收到客户端发送过来的数据之后会自动的进行解析。然后依据不同的设备系统平台往手机里注入 bootstarp.jar 或者 bootstarp.js 从而让手机APP可以去执行 客户端 发送过来的脚本命令。不论是哪种系统平台,客户端脚本执行完成之后就会将结果返回给 appium 服务端,然后服务端会将结果再返回给客户端

  1. 客户端:可以是不同编程语言的客户端,在这里书写具体的脚本代码
  2. 服务端:依据 webdriver 协议,接收客户端发送过来满足restful 接口的请求
  3. 设备端:IOS / android 平台,服务端会注入对应的框架去执行客户端的脚本
3、appium 优点分析
  1. 跨平台:直白的说跨平台对于我们来说就是 appium 不仅可以测试 IOS 也可以测试 android ,之所以能实现这个操作就是因为 appium 在接收到客户端的请求之后,可以自动调用内部已经集成好的对应平台自动化测试框架,ios 会调用UIAutomation ,然后在 ios 里注入 bootstrap.js 。android 会调用 UIAutomator ,然后在 android 里注入 bootstrap.jar 。然后各自平台上的代码就会各处执行
  2. 多脚本:因为 appium 是基于 webdriver 协议的,所以本质上走的就是 http 协议,因此与外在表现的软件工具没有任何关系。不论采用何种客户端来编写脚本,我们只需要安装对应语言的webdriver 库,然后给服务端发送 http 请求。例如在客户端可以接收 java 、python、 ruby、 php 、 javascript .....

二、appium框架环境安装

1、环境软件准备
  1. 客户端:
    1. pycharm 编辑器: 用于编写具体的 python 脚本代码
    2. pycharm 解析器:解析 python 代码所必须的环境( 不建议执行默认的安装路径 ,建议使用 python3.6)
    3. python 语言使用的webdriver 库:因为原生的 webdriver 库是专门为web端设计的,所以 appium 开发者针对于不同的语言为不同的脚本语言专门设计了对应的 webdriver 库。【 appium-python-client 】
  2. 服务端:
    1. node.js : 因为 appium 服务器软件底层是采用 nodejs 使用的,所以如果想要运行服务端,那么就需要安装 Nodejs环境
    2. appium 服务端桌面版:我们需要开启一个服务用来管理客户端发来的请求,所以我们需要安装一款服务器桌面版软件。
  3. 设备端:
    1. 真机设备:具体的真机设备
    2. 雷神模拟器:可以模拟安卓设备的软件
2、appium-python-client 安装
  1. 在线安装:

    • 执行 pip install appium-python-client

    • python 第三方库下载地址:PyPI · The Python Package Index

    • 安装和验证操作:

  2. 本地安装:

    • 在对应的 python 第三方库集合里下载对应版本的 appium-python-client

    • 执行 pip install 本地解压包所在路径

    3、nodejs 安装
    1. 下载对应的 Nodejs 安装包( 建议v6.0 版本之上 )
    2. 执行常规的下一步安装( 放置于自已习惯的目录下 )
    4、安装 appium服务 桌面版
    • 下载对应的 appium 桌面版本
    • 执行安装过程

三、appium桌面使用

一、appium 框架体验

使用 appium 的核心目的就是让客户端的脚本可以在手机设备上去运行,所以我们首先需要做的事情就是建立客户端与服务端之间的连接。此时我们可以先通过appium UI 界面工具来连接客户端

  1. 启动雷神模拟器

  2. 使用 adb 连接模拟器设备

  3. 启动 appium 桌面版服务

  4. 在 appium 桌面版中进行具体的参数设置

    https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md 【desired capability github 仓库地址】

四、appium+python使用

一、新建 python 项目

我们当前课程讲解的是 python 自动化测试,所以我们需要新建 python 项目来存放我们的脚本代码,需要处理的是我们之前安装过一个 appium-python-client 的webdriver 库,这个库文件被我们使用 pip install 的方式安装在了自已本地的python 解析器当中。因此在新建 python 项目的时候我们需要将对应的python 解析器指向本地的python.exe ,不然pycharm 会自动生成一个虚拟的解析器依赖,但是这个虚拟的依赖里是没有我安装的 webdriver 库

  1. 打开 pycharm

  2. 新建具体的python 项目,然后设置对应的配置

    二、书写 python + appium 自动化初始化代码
    # -*- coding=utf-8 -*-
    # 导入python需要的 webdriver 库
    from appium import webdriver
    
    # 定义一个空字典来存放具体的配置参数
    desired_caps = dict()
    
    # 书写具体的参数
    desired_caps["platformName"] = "android"  # 当前的系统平台名称
    desired_caps["platformVersion"] = "5.1.1"  # 当前连接设备的 android 版本
    desired_caps["deviceName"] = "emulator-5554" # 当前已连接设备的名称
    desired_caps["appPackage"] = "com.android.settings"  # 被测试 APP 的包名
    desired_caps["appActivity"] = ".Settings" # 被测试 APP 的启动名
    
    # 获取对应的连接
    driver  = webdriver.Remote( "http://localhost:4723/wd/hub",desired_caps )
    

    执行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1324052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux Mint 21.3 代号为“Virginia”开启下载

Linux Mint 团队今天放出了 Linux Mint 21.3 Beta ISO 镜像,正式版计划在今年圣诞节发布。 支持 在实验性支持 Wayland 之外,Cinnamon 6.0 版 Linux Mint 21.3 Beta 镜像还带来了其它改进,Nemo 文件夹管理器右键菜单支持下载相关操作。 Cin…

一个很好用的Docker可视化管理工具

目录 前言Portainer安装部署使用 前言 一个好的docker可视化管理工具,可以提升我们不少的工作效率,下面我就推荐一个我使用过的,感觉很不错的一个可视化管理工具给大家 Portainer Portainer是一个开源的Docker管理工具,提供了容…

WPF——样式和控件模板、数据绑定与校验转换

样式和控件模板 合并资源字典 Style简单样式的定义和使用 ControlTemplate控件模板的定义和使用 定义 使用 Trigger触发器 数据绑定与校验转换 数据绑定的设置 代码层实现绑定 数据模板DataTemplate xml文件的读取与显示 方法的返回值作为源绑定到控件中ObjectDataProvider L…

飞天使-k8s知识点1-kubernetes架构简述

文章目录 名词功能要点 k8s核心要素CNCF 云原生框架简介k8s组建介绍 名词 CI 持续集成, 自动化构建和测试:通过使用自动化构建工具和自动化测试套件,持续集成可以帮助开发人员自动构建和测试他们的代码。这样可以快速检测到潜在的问题,并及早…

Gateway网关-全局过滤器

目录 一、全局过滤器 GlobalFilter 二、案例实现 2.1 创建AuthorizeFilter实现类 2.2 重启服务测试 三、总结 3.1 全局过滤器的作用是什么? 3.2 实现全局过滤器的步骤? 一、全局过滤器 GlobalFilter 全局过滤器的作用也是处理一切进入网关的请求和微服务响应&#xff0…

(2021|EMNLP,CLIP,CLIPScore,RefCLIPScore)CLIPScore:图像标题的无参考评估指标

CLIPScore: A Reference-free Evaluation Metric for Image Captioning 公z号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. 相关工作 3. CLIPScore 4. 标题评估基准 …

clangd:Couldn‘t build compiler instance

在使用vscode clangd 搭建RK3588 5.10版本linux内核代码开发环境时,使用bear生成 compile_commands.json时,clangd生成标签失败代码无法跳转,查看clangd日志,发现标签生成失败,失败原因:Couldnt build comp…

【Spring教程32】SSM框架整合实战:从零开始学习SSM整合之功能模块开发 单元测试示例代码 PostMan接口测试示例

目录 1 功能模块开发1.1 步骤1:创建数据库及表1.2 步骤2:编写模型类1.3 步骤3:编写Dao接口1.4 步骤4:编写Service接口和实现类1.5 步骤5:编写Contorller类 2.单元测试2.1 步骤1:新建测试类2.2 步骤2:注入Service类2.3 步骤3:编写测试方法 3 PostMan测试3.1 新增3.2 修改3.3 删除…

单播、多播、广播、组播、泛播、冲突域、广播域、VLAN概念汇总

1 引言 “多播”可以理解为一个人向多个人(但不是在场的所有人)说话,这样能够提高通话的效率。如果你要通知特定的某些人同一件事情,但是又不想让其他人知道,使用电话一个一个地通知就非常麻烦,而使用日常…

软件企业在什么情况下需要找第三方软件测试机构?如何收费?

近年来,随着软件行业的迅猛发展,软件企业对软件测试的需求也越来越大。为了保证软件的质量和稳定性,许多企业选择寻找第三方软件测试机构来进行软件测试。第三方软件测试机构是独立于软件开发企业的专业机构,主要从事软件测试和质…

5252D 5G基站测试仪

01 5252D 5G基站测试仪 产品综述: 5252D多通道综测仪打破了信号发生器进行信号发射、频谱分析仪进行观看频域波形的测试方案,将信号收发融为一体,推动无线通信测试进入全新时代。其独具的多通道收发一体、高性能、全方位测试能力及直观操作…

如何在小程序中添加字符

随着移动互联网的普及,微信小程序已经成为众多商家的首选。通过微信小程序,商家可以展示产品、服务和品牌形象。那么如何在微信小程序中添加视频内容呢?本文将详细介绍操作步骤。 首先,商家需要登录乔拓云平台,进入门店…

计算机操作系统学习笔记

一、什么是操作系统 1、概念 操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。 …

机器学习之逻辑回归,一文掌握逻辑回归算法知识文集

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

路由跳转传递参数注意事项,查询字符串传参,params传参需要注意的地方,菜单内容的二级内容 vue3

路由跳转和传参(vue3)_vue3路由传参-CSDN博客 注意: import {useRouter} from "vue-router"const routeruseRouter()1.查询字符串传参,传一个对象,对象里面可以写path字段 router.push({path:/item,query:{id:1}} ) 通过当前路由…

嵌入式中GPIO的工作原理-面试工作必会技能

GPIO工作方式 1、4种输入模式 输入浮空输入上拉输入下拉模拟输入 如下图为GPIO的基本结构,它主要由4部分组成,其中我们所看到的的最右边的I/O引脚,也就是芯片外接可看到的引脚,其它的部分都是GPIO内部的结构。 ①保护二极管 保护…

德人合科技 | 公司电脑文件加密系统

公司电脑文件加密系统是一种可以对电脑文件进行加密的保护机制。它使用驱动层透明加密技术,能够在用户无感知的情况下对文件进行加密,从源头上保障数据安全和使用安全。 PC端访问地址: www.drhchina.com 此类系统主要有以下几个特点和功能&a…

轻度听力损失的儿童需要早期干预吗?

一些宝宝在做听力筛查时总是不通过,进一步听力诊断发现宝宝有轻度的听力损失,刚知道这个消息时,家长可担心了,总想着宝宝是不是听不到啊?但是一段时间后,有些家长又会忽略宝宝的听力问题,因为部…

【Matlab算法】随机梯度下降法 (Stochastic Gradient Descent,SGD) (附MATLAB完整代码)

随机梯度下降法 前言正文代码实现可运行代码结果 前言 随机梯度下降法 (Stochastic Gradient Descent,SGD) 是一种梯度下降法的变种,用于优化损失函数并更新模型参数。与传统的梯度下降法不同,SGD每次只使用一个样本来计算梯度和更新参数&am…

Nginx主配置文件详解【笔记】

1 Nginx配置文件目录结构 最近使用Nginx做负载均衡,顺便整理Nginx配置文件笔记如下所述,本文主要梳理主配置文件各属性的作用。使用yum安装好Nginx后,可以在默认路径(/etc/nginx)看到如下配置文件。 /etc/nginx/ ├─…