1. 两者区别
- Selenium2 将浏览器原生的API封装成WebDriver API ,webdriver 是基于 http协议的;
- appium是基于 webdriver 协议添加对移动设备自动化api扩展而成的,基于tcp/ip协议(使用了socket接口)
2. selenium原理
- Selenium 是将各个浏览器的API封装成" Selenium自己设计定义的协议,名字叫做The WebDriver Wire Protocol " 的webdriver API
2.1 selenium操作
- 测试人员编写UI自动化测试脚本(java,python等等),运行脚本后,程序会打开指定的webdriver浏览器
- webdriver浏览器作为一个remote-server 接受脚本的命令,同时webservice会打开一个端口:
http://localhost:46350
浏览器则会监听这个端口 - webservice会将脚本语言翻译成json格式传递给浏览器执行操作命令
2.2 selenium逻辑
- 测试人员执行测试脚本后,就创建了一个session, 通过http 请求向webservice发送了restfull的请求。
- webservice翻译restfull的请求为浏览器能懂的脚本,然后接受脚本执行结果。
- webservice将结果进行封装--json 给到客户端client/测试脚本 ,然后client就知道操作是否成功,同时测试也可以进行校验了。
3. appium原理
1、首先是PC端, 测试人员执行测试脚本(java,python等脚本)通过appium client 转换为json格式传递给appium server
2、 appiumserver 启动了一个监听端口例如4724, 同时向手机端adb push 一个bootstrap.jar/bootstrap.js 的脚本,手机端通过该脚本同时监听端口4724
3、PC和手机端就通过这个端口实现了通信和交互,基于socket通信(一个封装了TCP/IP协议的接口)
4、手机端通过该端口传输的命令执行APP, bootstrap里面封装了安卓和苹果的自动化测试框架UIautomator(低版本的安卓是instrumentation ) 执行相应的命令
5、执行完操作后通过端口返回给PC端,PC端根据返回结果 json 做校验,同时也知道了操作是否执行成功