appium工具相关

一、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 )
    

    执行结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MatGPT - 访问 OpenAI™ ChatGPT API 的 MATLAB® 应用程序

系列文章目录 前言 MatGPT 是一款 MATLAB 应用程序,可让您轻松访问 OpenAI 的 ChatGPT API。使用该应用程序,您可以加载特定用例的提示列表,并轻松参与对话。如果您是 ChatGPT 和提示工程方面的新手,MatGPT 不失为一个学习的好方…

惯性导航基础知识学习----02惯性器件的误差和标定(下)

🌈武汉大学惯性导航课程合集是入门惯导的精品课程~ 作为导航路上的鼠鼠我,要开始学习惯性导航了~ 需要达到的要求是大致了解惯导的原理等~ 后期会陆续更新惯导相关的知识和笔记等~ 🐬 本blog为 武汉大学惯性导航课程 的记录~ 感谢团队提供的开…

牛客BC115 超级圣诞树

万众瞩目 在上一篇我们介绍了一个圣诞树的打印,而这道题与上次不同的是他的基本单位是一直在变的 我建议先把上一个搞懂在写这道题这个。 牛客网BC114 圣诞树-CSDN博客 ok那么正文开始 题目如下 今天是圣诞节,牛牛要打印一个漂亮的圣诞树送给想象中…

类和对象(中篇)

类的六个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数: 用户没有显式实现,编译器会…

JavaWeb 学生信息管理系统

介绍 ServletMysqlJdbcjQuery 实现学生信息管理系统 学生 班级 教师 系统设置 登陆 软件架构 软件架构说明 基于ServletMysqlJdbcjQuery 实现学生信息的增删改查功能 文件目录声明 src/dao 数据库的增删改查功能src/filter 网页的过滤拦截功能src/model 登陆的实体对象信息…

在VS Code中编写Python

Hi, I’m Shendi 在VS Code中编写Python 因为有vscode,所以直接使用vscode来编写python了 而对于Python安装可以查阅这篇文章:Pythonpip下载与安装 https://sdpro.top/blog/html/article/1207.html vscode下载 vscode可以进入这里下载:http…

带你深入解析 Compose 的 Modifier 原理 -- Modifier、CombinedModifier

Modifier 的含义 实际开发过程中,随处可见各种 Modifier,比如: Modifier.size() // 尺寸Modifier.width() // 宽度Modifier.height() // 高度Modifier.padding() // 间距Modifier.background() // 背景Modifier.…

【Axure RP9】实现登入效验及实现左侧菜单栏跳转各页面

目录 一 效验简介 1.1 校验好处 1.2 应用场景 二 登入校验 2.1 效果 2.2 实现流程 三 左边菜单栏左侧菜单栏跳转各页面 3.1 效果 3.2 实现图 一 效验简介 1.1 校验好处 提高安全性: 在传统的用户名和密码登录的基础上,引入了另一种或多种验证…

YOLOv8改进 | 2023注意力篇 | HAttention(HAT)超分辨率重建助力小目标检测 (全网首发)

一、本文介绍 本文给大家带来的改进机制是HAttention注意力机制,混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制来提升单图像超分辨率重建的性能。通道注意力关注于识别哪些通道更重要,而自注意力则关注于图…

Unity | Shader基础知识(第七集:案例<让图片和外部颜色叠加显示>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、添加图片资源 三、 常用cg数据类型 1 float 2 bool 3 sampler 四、加入图片资源 五、使用图片资源 1 在通道里加入资源 2 使用图片和颜色叠加 2.1 2D纹理采样tex2D 2.2 组合颜色 六、全部代码 七、下集介绍 相关…

56 代码审计-JAVA项目Filter过滤器及XSS挖掘

这里写目录标题 Filter过滤器配置启用及查看Demo代码测试引用过滤器测试 Jeesns过滤器分析绕过防护代码Struts2框架类过滤器简要分析测试 过滤器是java里面找漏洞很重要的地方,如果对过滤器不了解的话,对漏洞的验证是很有问题的 看构成就是看过滤器是否…

苹果发布iOS 17.2.1版本更新

12月20日,苹果向iPhone用户推送了iOS 17.2.1更新。苹果公司在更新日志中称:“本更新包含了重要的错误修复,并解决了某些情况下电池电量较预期更快耗尽的问题。” 据报道,iOS 17系统在发布初期便出现了一系列问题,如发…

Unity中Animator组件Runtime控制动画的正向和反向播放

最初的想法是希望能够完全不改变美工的工作流程,通过代码解决所有问题。但是以笔者目前的认知水平还不行,还得麻烦一下美工,郁闷。 本来以为Animator.speed这个值设置为负数就可以倒播动画了,但是实际上设置为小于0的数和0没有区别…

阿里云登录镜像仓库报错: Error response from daemon: Get https://

阿里云登录镜像仓库报错: Error response from daemon: Get https:// 1. 故障现象 开发反应自用笔记本连接镜像仓库是正常的,但通过服务器连接镜像仓库一直失败. 报错信息如下: Error response from daemon: Get https://registry.cn-hangzhou.aliyuncs.com/v2/: unauthoriz…

计组之映射方式题解

标记位:直接映射中,cache的0 同时指向0,8,此时标记位区分0,8 1个字节8 bit位 1. 主存物理地址:32位计算机 or 0x1234E8F8 共8位,4*832位 标记主存物理地址 - cache行号 - 块内地址 2. 有效位&a…

用23种设计模式打造一个cocos creator的游戏框架----(二十二)原型模式

1、模式标准 模式名称:原型模式 模式分类:创建型 模式意图:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象 结构图: 适用于: 1、当一个系统应该独立于它的产品创建、构成和表示时 2、…

HarmonyOS:Neural Network Runtime对接AI推理框架开发指导

场景介绍 Neural Network Runtime 作为 AI 推理引擎和加速芯片的桥梁,为 AI 推理引擎提供精简的 Native 接口,满足推理引擎通过加速芯片执行端到端推理的需求。 本文以图 1 展示的 Add 单算子模型为例,介绍 Neural Network Runtime 的开发流…

字符串逆序输出

逆序输出就是本来abc输出的,然后我想让他输出成cba,那么我们还是要用到for循环,只不过原先是从零开始往上加,这回呢,是从上面往下减 我们观察上面这个图片,我们想要输出olleh,那么我们就要从4开…

OpenHarmony 启动流程优化

目前rk3568的开机时间有21s,统计的是关机后从按下 power 按键到显示锁屏的时间,当对openharmony的系统进行了裁剪子系统,系统app,禁用部分服务后发现开机时间仅仅提高到了20.94s 优化微乎其微。在对init进程的log进行分析并解决其…

三相异步电机动态数学模型推导及矢量控制仿真

文章目录 **原文链接,点击跳转**三相异步电机动态数学模型及矢量控制仿真1、异步电机三相方程2、坐标变换3、磁链3/2变换推导4、两相静止坐标系下的方程5、两相旋转坐标系下的方程6、以 ω-is-Ψr 为状态变量的状态方程7、矢量控制及 matlab 仿真 原文链接&#xff…