1 Appium概念(官网 http://appium.io )
1)概念:appium是一个自动化测试开源工具,支持IOS、Android平台上的原生应用、web应用和混合应用
2)原生应用:是指使用ios或者android编写的应用
web应用:是指移动浏览器访问的应用,即H5页面
混合应用:原生代码和web内容交互,即APP内嵌的H5页面
2 Appium理念
1)无需为了自动化而重新编译或者修改你的应用
appium真正的工作引擎是第三方自动化框架(例如ios的Uiautomation,Android 4.2+的UiAutomator,Android 2.3+的Instrumentation->Instrumentation由单独项目Selendroid支持),这样就不需要再你的应用中植入aooium相关或者第三方的代码。
2)你不必局限于某种语言或者框架来写和运行测试脚本
将上述的第三方框架封装成一套API,webDriver(即Selenium WebDrier)。指定了客户端到服务端的协议。使用这种客户端-服务端架构,就可以使用任何语言来编写客户端,向服务端发送HTTP请求。客户端就是简单的HTTP客户,你可以使用任何测试套件或者测试框架(目前已经实现了大多数流行语言版本的客户端)编写刻画段的代码。换句话说:Appium和webDriver客户端不是技术意义上的测试框架,而是“自动化库”,你可以在你的测试环境中随意使用这些自动化库。
3)一个移动自动化的框架不应该在接口上重读造轮子(移动自动化的接口应该统一)
事实上webDriver已经成为web浏览器自动化的标准,也成了W3C的标准,所以Appium扩充了webDriver的协议,在原有的基础上添加移动自动化相关的API
4)无论精神上还是名义上,都必须开源
appium是开源的
3 Appium几个重要的概念
1)C/S架构
Appium 的核心是一个 web 服务器,它提供了一套 REST 的接口。它收到客户端的连接,监听到命令,接着在移动设备上执行这些命令,然后将执行结果放在 HTTP响应中返还给客户端。事实上,这种客户端/服务端的架构给予了许多的可能性:比如我们可以使用任何实现了该客户端的语言来写我们的测试代码。比如我们可以把服务端放在不同 的机器上。比如我们可以只写测试代码,然后使用像 Sauce Labs 这样的云服务来解释命令。
2)Session
自动化始终围绕一个session进行,客户端初始化一个seesion(会话)来与服务端交互,不同的语言有不同的实现方式,但是他们最终都是发送为一个POST请求给服务端,请求中包含一个JSON对象,被称作“desired capabilities”。此时,服务端就会开启一个自动化的 session,然后返回一个 session ID,session ID将会被用户发送后续的命令。
3)Desired Capabilities
Desired capabilities 是一些键值对的集合 (比如,一个 map 或者 hash),客户端将这些键值对发给服务端,告诉服务端我们想要怎么测试。比如,我们可以把platformName 设置为 iOS,告诉 Appium 服务端,我们想要一个iOS 的 session,而不是一个 Android 的。我们也可以设置 safariAllowPopups 为 true,确保在 Safari 自动化 session 中,我们可以使用 javascript 来打开新窗口。参见 capabilities 文档,查看完整的 capabilities 列表。
4)Appium Server
Appium server 是用 Node.js 写的。我们可以用源码编译或者从 NPM 直接安装。
5) Appium 服务端
Appium 服务端有很多语言库 Java, Ruby, Python, PHP, JavaScript 和 C#,这些库都实现了 Appium 对 WebDriver 协议的扩展。当使用 Appium 的时候,你只需使用这些库代替常规的 WebDriver 库就可以了。
以上内容转载至:https://testerhome.com/topics/14772
4 Appium工作原理
Appium是Node.js写的http服务器,用来创建和控制webDriver的session。
Appium服务器接收 json 格式的request请求,根据不同平台对这些请求采取不同的处理方式。我们执行脚本时,脚本会转换成json数据,通过http请求发送给Appium Server,Appium Server将请求转换成command,发送给平台工具(ios:instruments;android:uiautomator)在设备上查找Appium 推送上来的bootstrap.js(bootstrap.js 是Appium架构 放在手机端的一个服务器),来执行这些命令。执行完后,客户端将结果和log发送回Appium Server。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。