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 )
    

    执行结果

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

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

相关文章

CSS操纵元素的禁用和启用

通常表单控件都会有属性readonly、disabled对元素进行只读、禁用等操作。 而有时候我们想要div也达到类似效果,可以用CSS样式pointer-events: none进行控制。 科普知识 CSS样式的pointer-events: none用于控制一个元素能否响应鼠标操作。当该属性设置为none时&am…

DC-8靶场

目录 DC-8靶场链接: 首先进行主机发现: sqlmap得到账号密码: 反弹shell: exim4提权: Flag: DC-8靶场链接: https://www.five86.com/downloads/DC-8.zip 下载后解压会有一个DC-8.ova文件…

程序员的20大Git面试问题及答案

文章目录 1.什么是Git?2.Git 工作流程3.在 Git 中提交的命令是什么?4.什么是 Git 中的“裸存储库”?5.Git 是用什么语言编写的?6.在Git中,你如何还原已经 push 并公开的提交?7.git pull 和 git fetch 有什么…

世微AP8105 低功耗PFM DC-DC变换器 升压芯片多种分装

概述 AP8105系列产品是一种效率、低纹波、工作频率高的PFM升压DC-DC变 换器。AP8105系列产品仅需要四个元器件,就可完成将低输入的电池电压变换升压到所需的工作电压,非常适合于便携式1~4节普通电池应用的场合。 电路采用了高性能、低功耗…

猫粮什么品牌好?业内人生分享五个口碑好质量好主食冻干猫粮牌子

随着养猫的人越来越多,铲屎官们对猫咪的饮食也越来越注重。除了猫粮,很多铲屎官还会给猫咪准备小零食。那么,猫咪是不是除了猫粮就没有其他可吃的了呢?答案当然不是。猫咪还有猫冻干、冻干猫粮、猫条等可以选择。每个铲屎官都希望…

Java发起SOAP请求代码参考

目录 Java发起SOAP请求代码参考 代码1.组装参数2.加密参数3.发起连接4.解析返回数据 参考 文章所属专区 超链接 代码 1.组装参数 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&qu…

补题与周总结:leetcode第 376 场周赛

文章目录 复盘与一周总结2967. 使数组成为等数数组的最小代价&#xff08;中位数贪心 回文数判断&#xff09;2968. 执行操作使频率分数最大&#xff08;中位数贪心 前缀和 滑窗&#xff09; 复盘与一周总结 wa穿了第3题&#xff0c;赛时其实想到了思路&#xff1a;中位数贪心…

损失函数中正则化中的平方项的作用!!

正则化上的平方项 前言在损失函数中添加正则化项时&#xff0c;通常会使用平方项作为正则化项&#xff0c;原因主要有以下几点&#xff1a; 前言 在损失函数中添加正则化项的原因主要是为了防止过拟合。正则化是一种常用的防止过拟合的技术&#xff0c;它可以对模型的复杂度进…

企业网站需不需要用到在线客服系统?

现如今&#xff0c;企业网站已成为企业展示形象、宣传产品和服务的重要窗口。在与客户互动的过程中&#xff0c;在线客服系统发挥着越来越重要的作用。那么&#xff0c;企业网站是否需要用到在线客服系统呢? 一、在线客服系统的优势 1.提高客户满意度 在线客服系统能够实现与客…

饥荒Mod 开发(十八):Mod 添加配置选项

饥荒Mod 开发(十七)&#xff1a;手动保存和加载&#xff0c;无限重生 我们可能需要给Mod 增加一些配置&#xff0c;比如是否开启全图&#xff0c;是否禁用自动保存等等&#xff0c;代码中就可以根据这些配置来做不同的逻辑。 添加配置 需要在modinfo.lua 中添加配置代码&…

VUE实现购物商城网站前端源码

文章目录 1.设计来源1.1 登录注册页面1.2 主界面1.3 列表界面1.4 详细界面1.5 购物车界面 2.源码2.1源码目录结构2.2源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/135054910 VUE实现购物商城网站前端源码&…

0155 - Java 数组

1 数组介绍 数组可以存放多个同一类型的数据。数组也是一种数据类型&#xff0c;是引用类型。 即&#xff1a;数(数据)组(一组)就是一组数据 2 数组的使用 2.1 使用方式一 2.2 使用方式二 3 数组使用注意事项和细节 数组是多个相同类型数据的组合&#xff0c;实现对这些数据…

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

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

2023年第四届 “赣网杯” 网络安全大赛 gwb-web3 Write UP【PHP 临时函数名特性 + 绕过trim函数】

一、题目如下&#xff1a; 二、代码解读&#xff1a; 这段代码是一个简单的PHP脚本&#xff0c;它接受通过GET请求传递的两个参数&#xff1a;‘pass’和’func’&#xff1a; ① $password trim($_GET[pass] ?? );&#xff1a;从GET请求中获取名为’pass’的参数&#xff0…

C语言——内存函数的使用与模拟实现

大家好&#xff0c;我是残念&#xff0c;希望在你看完之后&#xff0c;能对你有所帮助&#xff0c;有什么不足请指正&#xff01;共同学习交流 本文由&#xff1a;残念ing 原创CSDN首发&#xff0c;如需要转载请通知 个人主页&#xff1a;残念ing-CSDN博客&#xff0c;欢迎各位…

【小白专用】php pdo sqlsrv 类,php连接sqlserver

1.找到自己版本&#xff0c;我的程序是64位的。 注意&#xff1a;ts与nts的区别&#xff0c;查看phpinfo信息&#xff0c;如下 <?phpecho phpinfo();?> 2.运行后&#xff0c;可以查看到如下数据&#xff1a; ① PHP 的版本是8.2.13&#xff1b; ② 属于线程安全版 ts…

远程多窗口和Screen用法

Termius 远程链接服务器终端时&#xff0c;经常遇到需要开多个窗口&#xff0c;另外还可能涉及到正在运行的程序一旦和服务器链接断开&#xff0c;那么程序也就停止执行了。对于单单只需要多个窗口的问题&#xff0c;建议下载一个Termius这样软件&#xff0c;比多次打开…

西门子S71200系列PLC通过PROFINET连接多功能电表

西门子S71200连接多功能电表 1、需求描述&#xff1a; 通过西门子S7-1200系列PLC&#xff0c;连接多功能电表&#xff0c;通过Modbus协议读写电表的数据。 2、方案描述&#xff1a; 桥接器的网口连接西门子S7-1200系列PLC的网口&#xff0c;串口连接到电表的485通讯口&#x…

2023美团商家信息

2023美团商家电话、地址、经纬度、评分、均价、执照...

第一节TypeScript 安装

一、TypeScript 安装 前提条件&#xff1a;我们环境中已经配置npm环境。 1、使用npm安装TypeScript 首先查看你本地是否已安装npm。打开cmd -> 输入“npm -v” 回车&#xff0c;查看输出的npm版本 上述输出代码你本地环境已经安装了npm工具&#xff0c;可以使用以下命令来…