原生应用:指那些用IOS,Android,或者windows SDKs编写的应用
移动web应用:是移动端浏览器访问对的应用(appium支持ios上的Safari,chrome和android上的内置浏览器)
混合应用:带有一个webview的包装器,用来和web内容交互的原生空间
一、appium是一个自动化开源工具,支持IOS,Android,windows桌面平台上的原生,移动web和混合应用的自动化;
appium是跨平台的,允许你用同样的api对多个平台(IOS,Android,windows)写测试,做到字ios,Android,windows测试套件之间复用代码
2、appium为什么是跨平台的
appium使用了系统自带的自动化框架,ios9.3以及以上:苹果的XCUITest,ios9.3以下:苹果的UIAumation(已弃用),
Android4.3+:谷歌的UIAotomat
appium把系统本身提供的框架包进一套API–webDriver API中,webDriver规定了一个客户端-服务端协议,按照这中客户端-服务端架构,可以使用任何你想用的测试运行起和测试框架,客户端程序库不是一个简单的http客户端;
appium支持多种语言就是我们写的脚本会转化成命令发送到server.server会调用WDA操作app
二、appium的概念
1、客户端/服务器架构
appium的核心是一个暴露的rest api的web服务器,它接受来自客户端的连接,监听命令并在移动设备上执行,答复http响应来描述执行结果;
appium的服务端–appium server,默认端口4723
appium desktop—appium图形化工具,可以启用appium,管理appium
appium的客户端:针对各个语言都有自己对应的客户端
java:java-client
javaScript(Node.js):wd
2、会话(session)
自动化始终在一个会话的上下文中执行,这些客户端程序库已各自的方式发起与服务器的会话,但最终都会发给服务器一个POST/session请求,请求包含一个被称为deired capabilities的json对象,这是服务器就会开启这个自动化会话,并返回一个用于发送后续的会话ID
3、预期能力(Desired Capabilities)
是发送给appium服务器的键值对集合,它告诉服务器我们要求启动什么类型的自动化会话,也有很多能力可以修改服务器在自动化过程中的行为,如可以修改platformName为ios
platformName:需要进行自动化操作的平台名称
platformVersion:需要进行自动化操作的平台版本
deviceName:自动化设备
app:需要进行自动化的app路径
automationName:需要的驱动名称