Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Appium移动自动化框架功能概括?

Appium移动自动化框架功能概括?

提问于 2018-03-06 12:21:35
回答 1关注 0查看 518

小编说:Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API 来编写测试用例。本文对Appium自动化测试框架的功能进行了概括。

本文选自《软件自动化测试开发》,了解本书详情请点击阅读原文。

中间六边形分割线

Appium 框架的功能

(1)支持iOS、Android,可在多台机器上并行App 自动化,测试机型适配。

(2)代码实现关键字驱动:

测试集:关联Excel 测试用例和脚本配置。

测试数据:Excel 存储输入数据、控件元素、测试结果。

测试脚本:由Java 和TestNG 编写,分层结构有case、log、config、report 以及data 等。

(3)自动测试用例执行:

从功能测试用例中抽取需重复执行的、主要的功能进行用例覆盖。

支持用例failed(失败)时自动截屏。

failed(失败)用例自动重复执行数遍。

(4)持续集成环境Jenkins,定时自动构建和执行测试任务。

测试结果报告展示,自动邮件展示。

Appium 自动化测试一个App 的基本过程如下:

测试App 的基本过程

基于Appium 自动化测试框架,我们要进行的是连接电脑、连接手机、解锁、安装App、卸载App、启动App、元素定位、元素的操作、屏幕的操作、页面等待、异常处理截图、数据校验、日志、报告等一系列自动化测试执行的详细过程。

Appium 自动化框架元素控件的捕获,根据捕获到的元素控件进行相应的操作。

Appium 元素控件有多种定位方法,最常用的是元素的ID(即By.id)和元素的值(即By.name)。还可以通过元素类型TagName、元素的位置XPath、手机设备的坐标等进行定位操作。安卓的元素控件可以通过SDK 中的uiautomatorviewer.bat 文件进行录制和捕获定位,如下图所示。

上图中,Node Detail 下面的resource-id com.test.seller:id/phone_edit1 对应Excel 和代码中的定位方法By.id,控件元素数据text 13798359580 对应Excel 和代码中的操作方法sendkeys(),控件元素赋值数据为13798359580。

可以这样理解:首先找到这个文本框,接着给这个文本框输入数据。即通过ID属性值com.test.seller:id/phone_edit1,找到此用户名文本框的控件元素,然后通过sendkeys()方法输入用户名数据13798359580 到此用户名文本。其他自动化测试步骤的定位方法、控件元素以及操作方法也都与此类似。实际上,自动化测试就是通过程序代码来实现模拟手动测试去操作一遍的过程。

上面介绍了用户名文本框输入用sendkeys()方法,那么其他元素的操作方法有哪些呢?元素操作方法大致有单击(click)、输入(sendkeys)、元素滑动 、页面滑动、长按、下拉、弹出、屏幕放大缩小等,最常用的就是单击和输入。

数据校验。其实元素本身就是数据校验,当程序找不到元素时,用例就会失败。

另外,测试用例时可以加入一个或多个断言进行验证数据,还可设置步骤等待延迟时间。

测试结果。测试用例中记录了运行后的测试结果,如pass、failed 或是skip。

(此部分会在《软件自动化测试开发》第4章中进行详细讲解)

Appium 介绍(参考Appium 官方资料)

Appium 是一个移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台。

Appium 是跨平台的,即可以针对不同的平台用一套API 来编写测试用例。

Appium 是一个C/S 架构,核心是一个 Web 服务器,它提供了一套 REST 的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,最后将执行结果放在 HTTP 响应中返还给客户端。

Session

自动化始终围绕一个Session(会话)进行。客户端初始化一个Session 来与服务端交互,不同的语言有不同的实现方式,但是它们最终都是发送一个POST 请求给服务端,请求中包含一个JSON 对象,其被称作“Desired Capabilities”。此时,服务端就会开启一个自动化的 Session,然后返回一个Session ID,Session ID 将会被用户发送后续的命令。

Desired Capabilities

Desired Capabilities 是一些键值对的集合(比如一个 map 或者 hash)。客户端将这些键值对发送给服务端,告诉服务端我们想要怎样测试。比如,我们可以把platformName capability 设置为 iOS,告诉Appium 服务端,我们想要一个iOS 的session,而不是一个 Android 的session。

Appium Server 服务端

Appium Server 是用 Node.js 写的,我们既可以用源码编译,也可以从 NPM 直接安装。

Appium 服务端有很多语言库,如 Java、Ruby、Python、PHP、JavaScript 以及C#等,这些库都实现了 Appium 对 WebDriver 协议的扩展。当使用 Appium 的时候,你只需使用这些库代替常规的 WebDriver 库就可以了。

Appium Clients 客户端

此客户端的概念不是我们传统意义上的客户端,更好的理解方式是一个扩展的WebDriver 协议库,当你用自己喜欢的语言写case 时,会将该语言扩展的WebDrvier库添加到自己的环境中,这时你可以把它理解为这就是个客户端。

Appium Clients 客户端的安装包如下。

Mac 机器上直接运行Appium.dmg;Windows 机器上运行Appium.exe。

Appium Android/iOS 工作原理

API 接口调用Selenium 的接口,Appium Server 接收WebDriver 标准请求,解析请求内容,调用对应的框架响应操作。代码将DesiredCapability 中的键值对组合成一个JSON,然后通过HTTP 协议发送到Appium服务器创建一个session。代码与Appium的所有交互都是围绕着这个session 进行的。session 创建成功后,Appium 再通过USB接口与手机之间创建TCP 连接,先安装一些服务端App,比如Android API 4.2+是uiautomator,Android 2.3+是Instrumentation;如果是iOS,则是UiAutomation。手机的操作都是由Appium 发送指令到uiautomator,然后再由uiautomator 进行控制的。

Appium 原理图如下。

Appium 的核心是一个遵守REST 设计风格的Web 服务器,它接收客户端的连接和命令,在手机设备上执行命令,然后通过HTTP 的响应收集命令执行的结果。这种架构给我们提供了很好的开放特性:只要某种语言有HTTP 客户端的API,我们就可以通过这个语言写自己的测试代码。

回答 2

此昵称已隐藏_

发布于 2018-03-14 07:33:22

看看运行 - >编辑配置对话框,你应该点击添加新配置(左上角的[+]图标)。然后你需要选择项目类型(可能是Python),指定你的脚本(.py)文件,参数,Python解释器等等。一旦选择了配置,你应该能够在调试器中运行你的应用程序。

HelloWorld代码:

代码语言:javascript
运行
AI代码解释
复制
def main():
    print "Hello World"

if __name__ == "__main__":
    main()

okchina

发布于 2018-03-14 08:42:50

我想说明如何设置参数,因为它花了我一段时间才做到这一点:

找到“运行”按钮旁边的下拉菜单:

选择你想要配置的文件,然后点击“编辑配置”:

添加脚本参数:

和开发者交流更多问题细节吧,去 写回答
相关文章
pycharm如何调试python程序_Pycharm断点调试Python程序的步骤方法
self.biases=[np.random.randn(y,1) for y in sizes[1:]]
全栈程序员站长
2022/11/15
6930
pycharm如何调试python程序_Pycharm断点调试Python程序的步骤方法
pycharm如何调试代码_pycharm调试debug入门
3.step over 也就是 F8 进行单击调试,只有光标在哪一行就是即将运行的代码 只有光标跳到下一行,这一行才会执行
全栈程序员站长
2022/09/25
8280
pycharm写脚本_pycharm运行python脚本
$ {MONTH_NAME_SHORT} – 月份名称的前3个字母。 示例:1月,2月等
全栈程序员站长
2022/11/17
2.2K0
pycharm写脚本_pycharm运行python脚本
pycharm远程调试python_pycharm调试教程
打开pycharm,tools->Deployment->Configuration, 在左边栏点“+“号添加远程服务器。
全栈程序员站长
2022/09/27
6700
pycharm远程调试python_pycharm调试教程
pycharm调试python_pycharm调试快捷键
http://www.cnblogs.com/tsingke/p/7392800.html
全栈程序员站长
2022/09/27
1.6K0
pycharm调试python_pycharm调试快捷键
python中使用pycharm变量与程序调试
调试:所谓调试,就是要看到程序运行的过程,且需要知道自己在程序中写的所有的变量的值的变化。
刘金玉编程
2019/08/20
1.1K0
python中使用pycharm变量与程序调试
【说站】python中Pycharm如何调试视图
调试器列出断点处,当前线程正在运行的方法,每个方法对应一个“栈帧”。最上面的是当前断点所处的方法。
很酷的站长
2022/11/23
3850
【说站】python中Pycharm如何调试视图
Pycharm Debug调试使用+代码调试理解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/15
1.1K0
Pycharm Debug调试使用+代码调试理解
Pycharm Debug调试python程序
若函数A内存在子函数a时,不会进入子函数a内执行单步调试,而是把子函数a当作一个整体,一步执行。
全栈程序员站长
2022/11/17
8900
Pycharm Debug调试python程序
pycharm调试教程_pycharm 调试
2、用debug模式运行代码 注意是debug模式。如果还是直接右键run这个代码。它还是会直接运行,不会理会断点 。如下图所示,首先在代码标签页上点击右键,然后选择“Debug……”菜单。
全栈程序员站长
2022/09/27
1K0
pycharm调试教程_pycharm 调试
pycharm如何调试代码_pycharm怎么分段运行代码
  (2)已经创建了一个python工程并且添加了内容,具体参考: Getting Started tutorial
全栈程序员站长
2022/09/27
2.3K0
pycharm如何调试代码_pycharm怎么分段运行代码
pycharm如何使用&python书写规范
目录 1、pycharm如何使用 2、python 书写规范 1、pycharm如何使用 #主题的选择 file >> settings >> Editor >> color Scheme # pycharm 切换解释器 file >> settings >> Project >> python Interpreter #如何创建python脚本文件 new >> python file #如何调节字体大小 file >> settings >> Editor >> general >> 勾选cha
HammerZe
2022/03/25
1.3K0
pycharm如何使用&python书写规范
pycharm中html怎么运行_pycharm如何调试代码
PyCharm调试程序,cmd中输入的变量的设置方法 CMD dos定义变量,DOS下也只有环境变量可以用; SET [variable=[string]] variable 指定环境变量名。 string 指定要指派给变量的一系列字符串。 要显示当前环境变量,键入不带参数的 SET。
全栈程序员站长
2022/09/25
2.8K0
pycharm中html怎么运行_pycharm如何调试代码
Python新手之pycharm调试指南
当然,在程序运行报错的时候,也可以在可能出现错误的地方(一般在报错信息的上下几行),打印一下相应的变量信息。
吾非同
2020/10/26
6630
Python新手之pycharm调试指南
教你使用PyCharm实现远程调试
最近手头被交接了几个测试脚本,都需要进行二次开发或者持续维护,这几个测试脚本分别被部署在不同的服务器中,使用的Python环境也各不相同,因此如果在本地进行二次开发再部署到服务器中,会很麻烦,所以在本地PyCharm上搭建一个远程调试功能,对脚本进行远程调试和运行,就会特别方便啦。
用户5521279
2019/06/02
1.3K0
pycharm的调试功能_pycharm运行调试配置
Debug调试,是对于学习编程人员来说是一项重要的技能。只有当你学会 debug 了以后,才可以正确的知道程序的走向流程是如何的,DEBUG是排除程序故障的意思。debug 则是通过工具来对代码进行调试,进而一步步找出程序中出现 bug 的位置,也就是程序中具体错误代码的位置。
全栈程序员站长
2022/09/25
2.2K0
pycharm的调试功能_pycharm运行调试配置
pycharm断点运行_python断点调试技巧
断点调试是在开发过程中常用的功能,能清楚看到代码运行的过程,有利于代码问题跟踪。对我这个小白开发来说,还有一个作用是快速熟悉代码,拿到别人写的代码,有时看不太懂或看的很吃力,光这样看很无感,但是通过断点调试,可以很清楚的看到代码是怎么走的,每一步的参数的值等,驱动代码熟悉。
全栈程序员站长
2022/09/27
2.1K0
pycharm断点运行_python断点调试技巧
Pycharm断点调试
在我们写程序的时候,很容易遇到各种各样的bug,然后编译器提示程序出错的地方。很多时候可以通过提示的信息修改程序,但是有时我们想得到更多的信息,这个时候就需要进行断点调试。
全栈程序员站长
2022/08/26
2.1K0
Pycharm断点调试
pycharm远程调试python_pycharm怎么建立新项目
一般代码本地调试完成后,需要运行到服务器上,比如自动化测试脚本、爬虫脚本等,所以第一步需要将项目上传到服务器,然后在服务器上进行调试和运行。
全栈程序员站长
2022/09/27
6070
pycharm远程调试python_pycharm怎么建立新项目
点击加载更多

相似问题

pycharm连接SWL中的python解释器后,pycharm导库报错?

061

如何在Google Chrome中进行调试时终止脚本执行?

21.6K

Centos7 如果python脚本使用了talib包,crontab自动执行python脚本失败?

1315

pycharm_moduleNOTfound?

0425

使用ini文件运行python脚本还是用argparse然后记录脚本对python工程更好?

056
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
擅长3个领域
擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档