Selenium+Appium底层原理
selenium 从某一方面来讲其实就是一个web服务器。
我们启动webdriver服务时,会在webdriver服务里生成对应的session,只要服务启动起来了,无论什么类型的客户端,理论上只要获取到了生成的session,请求时带上此session,应该都是可以和webdriver服务交互的,也就可以操作浏览器了。
当我们selenium脚本执行时,会启动对应浏览器的driver,这个driver其实就是webdriver,启动后会在本地开启一个web服务,默认端口在9515
开启服务后可以本地访问9515的服务
可见时有服务存在的,若此时将服务关闭,此时web页面时反问不到数据的。由此可见,在执行自动化脚本时会启动对应浏览器的driver,生成一个webdriver服务。
我们在执行自动化代码时,例如:
from selenium import webdriverdriver = webdriver.Chrome()
url = 'https://www.baidu.com'
driver.get(url)
get方法对应的api:
此处driver.get()方法,其实就是在我们启动webdriver服务后,访问服务对应的api,例如里面有个/get的api路由,此时访问进去,会触发webdriver里的get方法里对应的代码,可以从源码中查看:
get方法里面其实又执行了Command.GET方法,参数是:{'url':url},代表想要执行的url.后续会通过Command.GET方法告诉浏览器,这里是get方法,去打开对应的网址吧。
element对应的api:
又或者,当我们的脚本中需要访问的api方法是elemen时,例如:
from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
url = 'https://www.baidu.com'
driver.get(url)
res = driver.find_element(By.ID,'xxx')
当我们调用webdriver对应的element方法时,此时会执行被启动的webdriver服务里面的Command.FIND_ELEMETN方法:
此时webdriver通过http协议告诉浏览器,你去执行相关的查找元素的方法吧,参数如上,浏览器接收到信息后会调用js方法:document.getElementById('xxx')方法,并返回webdriver服务相关的执行结果,webdriver再将执行结果返回我们的客户端脚本。
其他方法原理类似
appium:其实就是将selenium2的那一套api做了封装,用在移动端,所以slenium和appium因为webdriver的session机制存在,所以可以跨平台。
test script也就是我们client端 ,客户端会传递 Desired Capabilities 给 Appium Server 创建一个会话.Appium Server 会调用 appium-uiautomator2-driver 同时将 UiAutomator2 Server 的两个 apk 安装到测试设备上.
脚本命令通过webdriver协议解析,解析后的指令传给Appium Server。
appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调用UiAutomator的命令来实现。
最后Bootstrap将执行的结果返回给appium server。
appium server再将结果返回给 appium client。
Selenium+Appium底层原理相关推荐
- python +appium实现原理_python_appium使用原理
一. appium介绍 Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试. 它使用WebDriver协议驱动iOS,Android和Windows应用程序. 多平台支持: ...
- Appium学习日记(一)——Appium工作原理及其主要组件
Appium工作原理及其主要组件 Appium的工作原理(how Appium works) Appium的核心是一个服务器,它侦听符合API规范WebDriver的传入HTTP请求.对于那些过去 ...
- 全网最全appium工作原理以及appium自动化测试环境搭建教程
目录:导读 一.前言 二.Appium简介 三.搭建Appium+Python自动化测试环境 1.安装JDK并配置JDK的环境变量. 2.安装SDK并配置SDK的环境变量. 3.安装夜神模拟器并在模拟 ...
- Appium工作原理简介
Appium工作原理 一.Appium简介 Appium是一个开源.跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台.Appium驱动苹 ...
- 没有与参数列表匹配的 重载函数 getline 实例_面试题:方法重载的底层原理?...
前语:微信改版后,大量读者还没养成点赞的习惯,如写得好,望大家阅读后在右下边"好看"处点个赞,以示鼓励!长期坚持原创真的很不容易,多次想放弃,坚持是一种信仰,专注是一种态度. 关于 ...
- synchronized底层原理_你用过synchronized吗?它的底层原理是什么?Java经典面试题来了...
并发编程已经成为程序员必备技能 作为Java程序员,不懂得并发编程显然已经不能满足市场需求了,尤其是在面试过程中将处于被动地位,也有可能面试将就此终结. 那么作为Java开发者的你,日常虽然可以基于J ...
- iOS底层原理 - 常驻线程
iOS底层原理 - 常驻线程 在 AFN 2.0 时代,会经常看到 AFN 创建一个常驻线程的方式: 0️⃣ AFN 2.0 时代的常驻线程 + (NSThread *)networkRequestT ...
- elasticsearch原理_ElasticSearch读写底层原理及性能调优
ES写入/查询底层原理 1. Elasticsearch写入数据流程 客户端随机选择一个ES集群中的节点,发送POST/PUT请求,被选择的节点为协调节点(coordinating node) 协调节 ...
- 嘿嘿,我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他...
来自:烟雨星空 前言 上篇文章介绍了 HashMap 源码后,在博客平台广受好评,让本来己经不打算更新这个系列的我,仿佛被打了一顿鸡血.真的,被读者认可的感觉,就是这么奇妙. 原文:面试官再问你 Ha ...
- 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看
来自:烟雨星空 前言 HashMap 源码和底层原理在现在面试中是必问的.因此,我们非常有必要搞清楚它的底层实现和思想,才能在面试中对答如流,跟面试官大战三百回合.文章较长,介绍了很多原理性的问题,希 ...
最新文章
- 在项目管理工具Redmine中使用SubVersion进行版本管理(转)
- 算法之如何进行算法复杂度分析
- 在线进位制计算机,计算机基础知识进位计数制.pdf
- Java提高篇 —— Java关键字之static的四种用法
- Redmi K50全系售价曝光:电竞版颠覆骁龙8旗舰定价
- SPOJ 104 Highways(最小生成树计数)
- Linux Oracle卸载步骤
- android cpu型号采集,Android查看CPU型号设备信息等
- ubuntu死机咋办_Ubuntu16.04死机解决方案
- Django微信抢票大作业总结
- 【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
- 微信小程序 | 人脸识别的最终解决方案
- source insight教程:常用设置、快捷键、附带source insight3.5和4的对比
- 基于近场动力学的二维疲劳裂纹扩展模型_如何抑制高强铝合金裂纹等缺陷,就在《铝及铝合金铸轧成形与裂纹扩展》...
- 办公室常用赞美英语经典句子
- 云HIS源码:云HIS系统操作指南
- 看懂这篇文章-你就懂了信息安全的密码学
- OpenGL 几何知识
- 计算机科学与技术算是理学么,桂林雁山【计算机科学与技术考研】,计算机属于工学还是理学。...
- 坚持#第308天~我找到了一种字体非常好,Helvetica,我非常喜欢,写文档专用,昨天晚上加班到1点钟把技术文档写完了,