selenium,appium原理

selenium将浏览器原生api封装成webdriver api,脚本运行,打开指定浏览器,webdriver将目标浏览器绑定特定端口,浏览器则作为webdriver的remote server,客户端(脚本)通过ComandExecutor发送http请求给server,webdriver通过浏览器原生组件,转化web service命令为浏览器原生调用

Appium的加载过程

在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调用UiAutomator的命令,实现App的自动化测试。UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。

  1. client端也就是我们 test script是我们的webdriver测试脚本。

  2. 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调用对应的框架响应操作。

  3. appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现。

  4. 最后Bootstrap将执行的结果返回给appium server。

  5. appium server再将结果返回给 appium client。

在IOS端,appium同样使⽤WebDriver的一套协议。appium ios封装了apple的 Instruments框架,主要用了Instrument里的UI Automation(Apple的自动化测试框架),然后在设备中注入bootstrap.js进⾏行监听。

  1. client端 依然是 test script是我们的webdriver测试脚本。

  2. 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调用对应的框架响应操作。

  3. appium server调用instruments.js 启动一个socket server,同时分出一个子进程instruments.app,将bootstrap.js(一个UIAutomation脚本)注入到device和外界进行交互

  4. 最后Bootstrap.js将执行的结果返回给appium server

  5. appium server再将结果返回给 appium client。

所以我们可以看到android与ios区别在于appium 将请求转发到bootstrap.jar或者bootstrap.js.然后由bootstrap 驱动UiAutomator和UIAutomation去devices上完成具体的动作。

Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试。

appium及webdriver如何做到支持多语言的?

appium选择了client-server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是

---by littleyang 测试就是测试一下
原文地址:https://www.cnblogs.com/littleyang/p/7218815.html