Appium 自动化自学篇 —— 初识Appium自动化!

Appium 简介

随着移动终端的普及,手机应用越来越多,也越来越重要。而作为测试 的我们也要与时俱进,努力学习手机 App 的相关测试,文章将介绍手机自动化测试框架 Appium 。 那究竟什么是 Appium 呢? 接下来我们一起来学习Python+Selenium 做自动化测试。

Appium 概述

(1) 什么是 Appium

  • appium 是开源的移动端自动化测试框架;
  • appium 可以测试原生的、混合的、以及移动端的 web 项目;
  • appium 可以测试 ios,android 应用(当然了,还有 firefox os);
  • appium 是跨平台的,可以用在 osx,windows 以及 linux 桌面系统上。

(2) Appium 的哲学

  • 不需要为了自动化而且重新编译或修改测试 app;
  • 不应该让移动端自动化测试限定在某种语言和某个具体的框架;也就是说任何人都可以使用自己最熟悉最顺手的语言以及框架来做移动端自动化测试;
  • 不要为了移动端的自动化测试而重新发明轮子,重新写一套惊天动地的 api; 也就是说 webdriver 协议里的 api 已经够好了,拿来改进一下就可以了;
  • 移动端自动化测试应该是开源的。

(3) Appium 设计思想

  • 首先,为了能够实现哲学里描述的第 2 条,也就是不应该让移动端自动化测试限定在某种语言和某个具体的框架;也就是说任何人都可以使用自己最熟悉最顺手的语言以及框架来做移动端自动化测试; appium 选择了client-server 的设计模式。只要 client 能够发送 http 请求给 server,那么的话 client 用什么语言来实现都是可以的,这就是 appium 及 webdriver 如何做到支持多语言的;
  • 其次,为了能够实现不要为了移动端的自动化测试而重新发明轮子,重新写一套惊天动地的 api;也就是说 webdriver 协议里的 api 已经够好了,拿来改进一下就可以了;这个思想,appium 扩展了 webdriver 的协议,没有自己重新去实现一套。这样的好处是以前的 webdriver api 能够直接被继承过来, 以前的 webdriver 各种语言的 binding 都可以拿来就用,省去了为每种语言开发一个 client 的工作量;
  • 最后 appium 当然是开源的,这也实现了哲学思想里的最后一点。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:310357728【暗号:csdn999】

(4) Appium 优点

  • 支持语言:java ,python,node.js,c#,php,perl,ruby;
  • 支持 android 和 ios;
  • 支持跨应用。

(5) Appium 特点

  • 跨架构,native hybrid webview
  • 跨设备,android ios firefoxos
  • 跨语言,java python ruby nodejs php
  • 跨 app, 可以在多个 app 之间交互
  • 不依赖源代码
  • 不限制测试框架和平台

(6) Appium 架构

  • Android 上使用了 instrumentation 和 uiautomator 两套技术
  • Appium 在 4.1 以上使用 uiautomator
  • 4.1 以下使用 selendroid
  • iOS 使用 uiautomation
  • 支持 firefox

Appium 在 IOS 上的架构:

Appium 在 Andiord 上的架构:

Appium 基本概念

(1) Client/Server Architecture

appium 的核心其实是一个暴露了一系列 REST API 的 server。这个 server 的功能其实很简单:监听一个端口,然后接收由 client 发送来的 command。翻译这些 command,把这些 command 转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些 command 后把执行结果返回给 appium server,appium server 再把执行结果返回给 client。

在这里 client 其实就是发起 command 的设备,一般来说就是我们代码执行的机器,执行 appium 测试代码的机器。狭义点理解,可以把 client 理解成是代码,这些代码可以是 java/ruby/python/js 的,只要它实现了 webdriver 标准协议就可以。这样的设计思想带来了一些好处:

  • 可以带来多语言的支持;
  • 可以把 server 放在任意机器上,哪怕是云服务器都可以;(是的,appium 和 webdriver 天生适合云测试)。

(2) Session

session 就是一个会话,在 webdriver/appium,你的所有工作永远都是在session start 后才可以进行的。一般来说,通过 POST /session 这个 URL,然后传入 Desired Capabilities 就可以开启 session 了。

开启 session 后,会返回一个全局唯一的 session id,以后几乎所有的请求都必须带上这个 session id,因为这个 seesion id 代表了你所打开的浏览器或者是移动设备的模拟器。

进一步思考一下,由于 session id 是全局唯一,那么在同一台机器上启动多个 session 就变成了可能,这也就是 selenium gird 所依赖的具体理论根据。

(3) Desired Capabilities

Desired Capabilities 携带了一些配置信息。从本质上讲,这个东东是key-value 形式的对象。你可以理解成是 java 里的 map,python 里的字典,ruby 里的 hash 以及 js 里的 json 对象。实际上 Desired Capabilities 在传输时就是json 对象。

Desired Capabilities 最重要的作用是告诉 server 本次测试的上下文。这次是要进行浏览器测试还是移动端测试?如果是移动端测试的话是测试android 还是 ios,如果测试 android 的话那么我们要测试哪个 app? server 的这些疑问 Desired Capabilities 都必须给予解答,否则 server 不买账,自然就无法完成移动 app 或者是浏览器的启动。

(4) Appium Server

Appium Server 就是每次我们在命令行用 appium 命令打开的东西。

(5) Appium Clients

由于原生的 webdriver api 是为 web 端设计的,因此在移动端用起来会有点不伦不类。 appium 官方提供了一套 appium client , 涵盖多种语言ruby/java/python,在我看来 ruby client 是实现最好的。在测试的时候,一般要使用这些 client 库去替换原生的 webdriver 库。这实际上不是替换,算是client 对原生 webdriver 进行了一些移动端的扩展,加入了一些方便的方法, 比如 swipe 之类,appium client 让我们可以更方便的写出可读性更好的测试用例。

(6) Appium.app, Appium.exe

appium server 的 GUI 版本,前者用在 osx 上,后者是 windows 上。可视化、不需要装 node,可以看 app 的 UI 结构是这个东东的卖点。

Appium 与 Selenium

  • Selenium2 又叫 Selenium Webdriver
  • Appium Clients 扩展了 Selenium 的 WebDriver API
  • Appium Server 实现了 Selenium 中存在的大 部分方法,它属于 Selenium 的第三方 webdriver

Appium 环境搭建

学习 appium 最大的难处之一在于环境的安装,安装流程比较繁琐,安装的工具和步骤也较多,以下是基于 Windows 系统下的 Android 手机端的安装流程。就像我们在用 Selenium 进行 web 自动化测试的时候一样,我们需要一个浏览器来执行测试脚本。那么移动端自动化测试,我们同样需要一部 Android 手机(手机需要链接电脑)或者 Android 模拟器。

下节我们将为给为带来Appium的环境搭建与JDK的安装与运用。

END今天的分享到此结束了!点赞关注不迷路!

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

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

相关文章

CentOS 7 离线安装MySQL审计插件

命令行 cd /data/toolssz mariadb-10.2.38-linux-x86_64.tar.gztar -zxvf mariadb-10.2.38-linux-x86_64.tar.gzinstall lib/plugin/server_audit.so /usr/lib64/mysql/plugin/mysql -uroot -prootinstall plugin server_audit SONAME server_audit.so;show variables like &q…

【Apollo】ubuntu20.04源码安装apollo8.0

官方源码安装教程 https://blog.csdn.net/weixin_45929038/article/details/120113008 安装NVIDIA GPU驱动 Apollo 8.0 的一些模块的编译和运行需要依赖 NVIDIA GPU 环境(例如感知模块),如果有编译和运行这类模块的需求,则需要安…

Redis生产实战-热key、大key解决方案、数据库与缓存最终一致性解决方案

生产环境中热 key 处理 热 key 问题就是某一瞬间可能某条内容特别火爆,大量的请求去访问这个数据,那么这样的 key 就是热 key,往往这样的 key 也是存储在了一个 redis 节点中,对该节点压力很大 那么对于热 key 的处理就是通过热…

深入探索 Spring Boot:简化开发,加速部署的全方位利器

目录 导言 1. 自动配置(Auto-Configuration) 2. 起步依赖(Starter Dependencies) 3. 嵌入式 Web 服务器 4. Actuator 5. 外部化配置 6. 简化的安全性配置 7. Spring Boot CLI 8. Spring Boot DevTools 导言 在当今软件开…

【华为数据之道学习笔记】4-2信息架构原则:建立企业层面的共同行为准则

信息架构承载了企业如何管理数据资产的方法,需要从整个企业 层面制订统一的原则,这些原则不仅是对数据专业人员的要求,也是对业务的要求,因为业务才是真正的数据Owner。所以,公司所有业务部门都应该共同遵从信息架构原…

学习pytorch20 pytorch完整的模型验证套路

pytorch完整的模型验证套路 使用非数据集的测试数据,测试训练好模型的效果代码预测结果解决报错 B站小土堆pytorch学习视频 https://www.bilibili.com/video/BV1hE411t7RN/?p32&spm_id_frompageDriver&vd_source9607a6d9d829b667f8f0ccaaaa142fcb 使用非数…

postman接口测试之Postman配置环境变量和全局变量

前言  我们在测试的过程中,遇到最多的问题也可以是环境的问题了吧,今天开发用了这个测试环境,明天又换了另一个测试环境,这样对于我们测试非常的麻烦,特别最接口的时候需要来回的输入环境地址比较麻烦,今天…

基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(四)

目录 前言引言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建3. 模型训练及保存4. 模型生成 系统测试1. 训练准确率2. 测试效果 相关其它博客工程源代码下载其它资料下载 前言 博主前段时间发布了一篇有关方言识别和分类模型训练的博客&#xff…

动态规划学习——通符串匹配,正则表达式

目录 ​编辑 一,通符串匹配 1.题目 2.题目接口 3,解题思路及其代码 二,正则表达 1.题目 2.题目接口 3.解题思路及其代码 三,交错字符串 1.题目 2,题目接口 3.解题思路及其代码 一,通符串匹配 1…

基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(三)

目录 前言引言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建1)定义模型结构2)优化损失函数 3. 模型训练及保存1)模型训练2)模型保存3)映射保存 相关其它博客工程源代码下载其它资料下载…

让植被管理更精准:数据可视化的新利器

【小编整理了300可视化大屏源文件,需要可后台私~!】 在当今时代,数据可视化技术已经成为了一个非常重要的技术。对于植被管理来说,数据可视化也有着非常重要的作用。通过将植被管理数据可视化,我们可以更加清晰地了解植…

Apache Flink(十一):Flink集群部署-Standalone集群部署

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. 节点划分

SpringCloud-高级篇(七)

前面在微服务里整合了Seata,下面利用Seata去解决分布式事务的问题,回去学习Seata中的四种解决方案 :首先学习XA模式 (1)XA模式 RM在前面讲的是资源管理器,在XA标准中RM都是由数据库来实现的,数…

数据挖掘目标(Kaggle Titanic 生存测试)

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns1.数据导入 In [2]: train_data pd.read_csv(r../老师文件/train.csv) test_data pd.read_csv(r../老师文件/test.csv) labels pd.read_csv(r../老师文件/label.csv)[Su…

oracle详细安装教程(附带百度网盘资源)

一,下载安装包途径 1.官网 Unauthorized Request 2.百度网盘分析 https://pan.baidu.com/s/1n221gdTK0Fcho839oRab9g 提取码1q2w 二,安装教程 1.下载完安装包后点击 setup.exe 如果出现一下的问题,使用windows10等系统安装oracle 11g等版本的数据库…

二叉树的最大深度

问题描述: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入&#xff1…

ue4 解决角度万向锁的问题 蓝图节点

问题:当角度值从359-1变化的时候,数值会经历358、357… 解决方法:勾上Shortest Path,角度值的会从359-1

Ajax原理以及优缺点

Ajax原理 1.Ajax的原理简单来说是在用户和服务器之间加了—个中间层(AJAX引擎),通过XmlHttpRequest对象来向服务器发异步请求, 2.从服务器获得数据,然后用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。 3.这其中最关键的一…

「Verilog学习笔记」简易秒表

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule count_module(input clk,input rst_n,output reg [5:0]second,output reg [5:0]minute);always (posedge clk or negedge rst_n) begin if (~rst…

Axure电商产品移动端交互原型,移动端高保真Axure原型图(RP源文件手机app界面UI设计模板)

本作品是一套 Axure8 高保真移动端电商APP产品原型模板,包含了用户中心、会员成长、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 本模板由一百三十多个界面上千个交互元件及事件组…