史上最全 Appium 自动化测试从基础到框架实战精华学习笔记(一)

2023-11-12

1080×402 31.8 KB


对测试人来说,Appium 是非常重要的一个开源跨平台自动化测试工具,它允许测试人员在不同的平台(iOS、Android 等)使用同一套 API 来写自动化测试脚本,这样可大幅提升代码复用率和工作效率。
本文汇总了从 Appium 基础到自动化测试高级实战中,所涉及到的方方面面的知识点精华内容(如下所示),希望对大家快速总结和复习有所帮助。
1.Appium 基础 1(环境搭建和简介)
2.Appium 基础 2(元素定位和元素常用方法)
3.Appium 基础 3(手势操作和 uiautomator 查找元素)
4.Appium 基础 4(显式等待)
5.Appium 基础 5(toast 和参数化)
6.Appium 基础 6(webview)
7.Appium_ 企业微信练习 (非 PO,增加和删除联系人)
8.Appium_ 企业微信练习 (PO–增加联系人)

  • 下载 1.8 的 jdk
  • 新建环境变量:JAVA_HOME 值为:D:\Program Files\Java\jdk1.7.0
  • 新建环境变量:CLASSPATH 值为:.;%JAVA_HOME%\lib;(注意:点号表示当前目录,不能省略)
  • 在系统变量 Path 的值的前面加入以下内容:%JAVA_HOME%\bin
  • 下载 sdk
  • 打开 sdk 的 sdk manager,安装 tools 前 3 个东西和 google 的 usb 驱动
  • 配置 Android home 里面的 platform-tools 和 tools
  • 安装 node.js,配置 node.js 的环境变量
  • npm install -g cnpm --registry=https://registry.npm.taobao.org
  • cnpm install -g appium
  • cnpm install -g appium-doctor
  • pip install appium-python-client
  • mumu 连接 adb 是:adb connect 127.0.0.1:7555
  • Android 是 uiautomator2
  • ios 是 xcuitest
  • webdriver 是基于 http 协议的,第一连接会建立一个 session 会话,并通过 post 发送一个 json 告知服务端相关测试信息
  • client/server 设计模式
  • 客户端通过 webdriver json wire 协议与服务器通讯
  • 多语言支持
  • server 可以放在任何地方
  • 服务器 nodejs 开发的 http 服务
  • appium 使用 appium-xcuitest-driver 来测试 iphone 设备,其中需要安装 Facebook 出的 WDA(webdriver agent) 来驱动 ios 测试
  • adb:Android 控制工具
  • appium Destkop:内嵌 appium server 和 inspector 的综合工具
  • appium server:appium 的核心工具,命令行工具
  • appium client:各种语言的客户端封装库,用户连接 appium server,包含 python、java、ruby 等
  • appcrawler 自动遍历工具
  • 获取当前元素界面:adb shell dumpsys activity top
  • 获取任务列表:adb shell dumpsys activity activities
  • 获取 app 的 package 和 activity:adb shell;然后 logcat | grep -i displayed
  • 启动应用:adb shell am start -W -n "com.xueqiu.android/.view.WelcomeActivityAlias -S
  • 文档地址:Desired Capabilities - Appium
  • platformName:android 通常都是写 android
  • deviceName:127.0.0.1:7555 这个通常是 adb devices 的名称
  • appPackage:com.xueqiu.android 这个是 app 的 package 包名
  • appActivity:.view.WelcomeActivityAlias 这个是 app 的 activity 名
  • noReset:true, false 是否重置测试的环境(例如首次打开弹框,或者登陆信息)
  • unicodeKeyboard:true, false 是否需要输入非英文之外的语言并在测试完成后重置输入法,比如输入中文
  • dontStopAppOnReset:true, false 首次启动的时候,不停止 app
  • skipDeviceInitialization:true, false 跳过安装,权限设置等操作
  • https://github.com/appium/appium/tree/master/sample-code/apps
  • Android 是通过容器的布局属性来管理子控件的位置关系,布局过程就是把界面上的所有的控件,根据他们的间距的大小,摆放在正确的位置
  • 线性布局:LinearLayout
  • 相对布局:RelativeLayout
  • 帧布局:FrameLayout
  • 绝对布局:AbsoluteLayout
  • 表格布局:TableLayout
  • 网格布局:GirdLayout
  • 约束布局:ConstraintLayout
  • activity:与用户交互的可视化界面
  • service:实现程序后台运行的解决方案,比如 qq 音乐的音乐在后台运行,没有界面
  • content provide:内容提供者,提供程序所需要的数据,比如?提供数据库?
  • broadcast receiver:广播接收器,监听外部事件的到来(比如来电)
  • TextView:文本控件
  • EditText:可编辑文本控件
  • Button:按钮
  • ImageButton:图标按钮
  • ToggleButton:开关按钮
  • ImageView:图片控件
  • CheckBox:复选框控件
  • RadioButton:单选框控件
  • dom:Document Object Model 文档对象模型
  • dom 应用:最早应用于 html 和 js 的交互,用户表示界的控件层级,界面的结构化描述,常见的格式为 html、xml。核心元素为节点和属性
  • xpath:xml 路径语言,用于 xml 中的节点定位
  • Android 的应用层级结构是定制的 xml
  • app source 类似于 dom,表示 app 的层级,表示界面里面所有的控件数的结构
  • 每个控件都有它的属性(resourceid、xpath、aid),没有 css 属性
  • driver.find_element_by_accessibility_id() 对应 content-desc
  • driver.find_element_by_id() 对应 resource-id
  • driver.find_element_by_name() 对应 text
  • driver.find_element_by_xpath() 对应 xpath
  • 首先要 from appium.webdriver.common.mobileby import MobileBy as By
  • self.driver.find_element(By.ID,"") 对应 resource-id
  • self.driver.find_element(By.XPATH,"") 对应 xpath
  • self.driver.find_element(By.ACCESSIBILITY_ID,"") 对应 content-desc
  • self.driver.find_element(By.NAME,"") 对应 text
  • driver.find_element_by_xpath("//*[@text=’ 扫一扫 ']")
  • driver.find_element_by_xpath("//*[@resource-id=‘com.taobao.taobao:id/tv_scan_text’]")
  • driver.find_element_by_xpath("//*[@content-desc=’ 帮助 ']")
  • driver.find_element(By.XPATH,"//*[@resource-id=‘com.xueqiu.android:id/name’ and @text=’ 阿里巴巴 ']") and 的使用
  • 父类和兄弟类的方法://[@text=’ 性别 ‘]/…//[@text=’ 男 ']。其中 /… 表示父类,//* 就是兄弟,孙子等类
  • //*[Contains(@text,“tong”)] 这是 xpath 的 text 模糊搜索的方法
  • 点击方法:element.click()
  • 输入操作:element.send_keys(“tong”)
  • 设置元素的值:element.set_value(“tongtong”)
  • 清除操作:element.clear()
  • 是否可见:element.is_displayed 返回 true or false
  • 是否可用:element.enabled() 返回 true or false
  • 是否被选中:element.is_selected() 返回 true or false
  • 获取属性值:element.get_attribute(name)
  • get_attribute(name) 获取的属性名称和 uiautomatorviewer 的一致,但是 index 的值获取不了
  • 真假获取的值是 true 和 false 的字符串,并不是 python 的 boolean 值
  • 获取元素文本:element.text
  • 获取元素坐标:element.location
  • 结果:{‘y’:19,‘x’:498}
  • 获取元素尺寸(高和宽):element.size
  • 结果:{‘width’:500,‘height’:22}
    9.打开雪球 app
    10.点击搜索输入框
    11.向搜索输入框输入 “阿里巴巴”
    12.在搜索的结果里选择阿里巴巴,然后点击
    13.获取这只上香港 阿里巴巴的股价,并判断这只股价的价格>200
    14.打开雪球首页
    15.定位首页的搜索框
    16.判断搜索框是否可用,并查看搜索框 name 属性值
    17.打印搜索框这个元素的左上角坐标和它的宽高
    18.向搜索框输入:alibaba
    19.判断阿里巴巴是否可见
    20.如果可见,打印搜索成功点击,如果不可见,打印搜索失败
    更多内容,我们在后续文章分享。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

史上最全 Appium 自动化测试从基础到框架实战精华学习笔记(一) 的相关文章

  • WiFi技术概述

    1 概述 WLAN是无线局域网络的简称 全称为Wireless Local Area Networks 是一种利用无线技术进行数据传输的系统 该技术的出现能够弥补有线局域网络之不足 以达到网络延伸之目的 Wi Fi是无线保真的缩写 英文全称
  • spring加载一个或者多个properties配置文件方法

    在项目中有些参数需要经常修改 或者后期需要修改 比如IP 调用别人的接口地址 数据库地址及帐号密码等 那么我们就不能把这些参数写死在代码里 虽然也可以在代码里改 但是如果是不懂代码的运维人员去现场部署项目又怎么改你的代码 那我们最好把这些参
  • 关于Discuz X3.2如何设置邮箱验证的具体方法

    原文地址 兔子酱老师好久没发文章了的 是因为最近在学习和熟悉Discuz社区程序 这个PHP程序是一木主编推荐给我的 妹子我简单操作了几下 很是喜欢 这个程序目前的版本是X3 2 带有很多好玩的功能 听说这个程序早几年被腾讯收购了的 所以
  • 控制疫情蔓延嵌入式物联网能帮大忙

    联合国所订定之永续发展目标之一 便是针对防治传染病的蔓延做好准备 在新型冠状病毒 COVID 19 流行期间 防疫已成为当前最重要目标 科技在对抗传染病方面扮演重要角色 而物联网 IoT 相关技术正是我们重要的防疫武器 降低成本 自发自主性

随机推荐

  • matlab 求单/多元函数极值

    matlab 求单 多元函数极值 单元函数极值 平时如果手算的话 就会先求导数 再求驻点 最终代值算出极值 如果用matlab代码求的话 就可以减少很多不必要的计算 fun inline 0 5 x exp x 2 ezplot fun 0
  • java复习第7天---7.4---IO流---递归、文件过滤器

    java复习第7天 7 4 IO流 递归 文件过滤器 目录 文章目录 1 递归 1 1 递归概述和分类 2 过滤器 后记 内容 1 递归 1 1 递归概述和分类 递归 在方法内调用自己 递归分类 递归分为直接递归和间接递归 直接递归 方法内
  • python的gzip库解压某一路径下的所有.gz文件

    今天 做机器学习 解压数据集的时候 参考大佬咯咯哒鸭的文章想到的方法 代码如下 encoding utf 8 Author Mr Pan 学狂 finish time 2022 2 15 import sys import gzip imp
  • 入门级题解5. 最长回文子串

    题目 给你一个字符串 s 找到 s 中最长的回文子串 思路 找到最小的那个字串 aba或者aa 然后向两边发散 伪代码 for 1 s length 第一种情况 if s i s i 1 aa bb cc形式 第二种情况 if s i 1
  • layui跨域问题

    由于浏览器存在同源策略 所以如果 layui 里面含图标字体文件 所在的地址与你当前的页面地址不在同一个域下 即会出现图标跨域问题 所以要么你就把 layui 与网站放在同一服务器 要么就对 layui 所在的资源服务器的 Response
  • JavaWeb中文件上传与下载

    JavaWeb中文件上传与下载 一 文件上传 1 文件上传的应用 比如个人信息的管理 上传头像 比如商品信息的管理 上传商品的图片 这些都需要通过浏览器客户端将图片上传到服务器的磁盘上 文件上传原理 所谓的文件上传就是服务器端通过reque
  • idea中连接mysql插入成功数据 在navicat中刷新表格没有数据_数据分析之路——sql入门...

    1 基础知识点 数据库 按照数据结构来组织 存储和管理数据的仓库 是一个长期存储在计算机内的 有组织的 可共享的 统一管理的大量数据的集合 关系型数据库 采用关系模型来组织数据的数据库 其以行和列的形式存储数据 以便于用户理解 多张表 各表
  • 0xc000007b的解决办法(续)

    最后更新 2021 3 1 请大家首先确定已经按照原文的方法及步骤尝试过 但是还是没有解决问题再来看这篇文章 如果你还没有看过原文 请先看原文 http blog csdn net VBcom article details 6070705
  • 基于ZYNQ的掌上超声成像系统前端设计与实现

    http www doc88 com p 6631786569315 html
  • LeetCode刷题——排序(python语言)

    LeetCode刷题 排序 python语言 一 排序 顾名思义 排序就是将数组按照从小到大的顺序排列 广义的排序分为内部排序方法和外部排序方法 排序的方法有很多种 常用的冒泡 选择 插入 希尔 归并 快速 堆 计数 桶 基数排序 按照时间
  • 尝试将RxJava和Retrofit

    http www jianshu com p 2b0aeb6b6b61 安卓学习 记住3点 现在安卓发展的足够成熟 遇到的需求 别人也遇到了 遇到的bug别人遇见过了 不要想着走捷径 这些留下的人 不一定靠技术 也许靠脸皮 所以只管学习 快
  • [洛谷 P3376] 网络最大流

    题目链接 题目描述 如题 给出一个网络图 以及其源点和汇点 求出其网络最大流 输入格式 第一行包含四个正整数 n n n m m m s
  • Redis——zset类型详解

    概要 zset是有序集合 将zset中的members引入一个属性score 根据这个属性值来进行排序 其中members不可以重复 score可以重复 按照字典序排序 默认按照升序排序 有序集合中提供指定分数和元素范围查找 计算成员排名功
  • grep中加单引号与不加引号的区别

    今天写命令时本想查找最后带标点的句子 结果发现不带引号时无法识别 grep n exp grep n exp 貌似不加单引号无法达到我们想要的效果 上网搜了一下 有人说是因为引号的作用 其实这在shell变量中就有介绍 明显的是 这里单引号
  • 借力计算机视觉及深度学习,纽卡斯尔大学开发实时、自动化奶牛跛行检测系统

    本文首发自 HyperAI超神经微信公众号 内容一览 近期 纽卡斯尔大学联合费拉科学有限公司联合开发了一个针对多头奶牛的自动化 实时跛行检测系统 该系统能够按照跛行评分系统将奶牛进行分类 并且准确度高达 94 100 目前 该研究成果已发表
  • Spring Boot系列 - 3. SpringBoot项目学习汇总

    原文地址 https blog csdn net hemin1003 article details 53217489 网络上很多关于SpringBoot的资料和代码 但有一些根本运行不了 有些博主的代码还故意藏着掖着 一定要加他的微信才能
  • php 文件上传抓包,详解文件上传漏洞

    介绍 在现代互联网网站中 上传文件基本上是一种常见的功能 允许用户上传一些图片 视频以及其他类型的文件 如果网站出现文件上传漏洞 那么恶意用户就可以将可执行脚本程序上传到web服务器中 获得网站权限 进一步 gongji web服务器 当上
  • skywalking agent监控java服务

    一 前言 skywalking agent可以监控的服务类型有多种 python go java nodejs服务等都可以监控 现在通过java服务来演示skywalking agent的使用 并且是使用容器的方式实现 二 部署skywal
  • 拓闻

    大数据时代的来临为众多企业带来了更多的全新的发展机遇 而搜索引擎已经成为大数据领域的一个核心应用 其重要性不言而喻 很多公司在大数据离线统计分析方面已经具备了一定的能力 但是 很多应用场景往往要求在数秒内完成对几亿 几十亿甚至几百上千亿的数
  • 史上最全 Appium 自动化测试从基础到框架实战精华学习笔记(一)

    1080 402 31 8 KB 对测试人来说 Appium 是非常重要的一个开源跨平台自动化测试工具 它允许测试人员在不同的平台 iOS Android 等 使用同一套 API 来写自动化测试脚本 这样可大幅提升代码复用率和工作效率 本文