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机制存在,所以可以跨平台。

Appium底层工作流

  1. test script也就是我们client端 ,客户端会传递 Desired Capabilities 给 Appium Server 创建一个会话.Appium Server 会调用 appium-uiautomator2-driver 同时将 UiAutomator2 Server 的两个 apk 安装到测试设备上.

  2. 脚本命令通过webdriver协议解析,解析后的指令传给Appium Server。

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

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

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

Selenium+Appium底层原理相关推荐

  1. python +appium实现原理_python_appium使用原理

    一. appium介绍 Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试. 它使用WebDriver协议驱动iOS,Android和Windows应用程序. 多平台支持: ...

  2. Appium学习日记(一)——Appium工作原理及其主要组件

    Appium工作原理及其主要组件 Appium的工作原理(how Appium works)   Appium的核心是一个服务器,它侦听符合API规范WebDriver的传入HTTP请求.对于那些过去 ...

  3. 全网最全appium工作原理以及appium自动化测试环境搭建教程

    目录:导读 一.前言 二.Appium简介 三.搭建Appium+Python自动化测试环境 1.安装JDK并配置JDK的环境变量. 2.安装SDK并配置SDK的环境变量. 3.安装夜神模拟器并在模拟 ...

  4. Appium工作原理简介

    Appium工作原理 一.Appium简介 Appium是一个开源.跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台.Appium驱动苹 ...

  5. 没有与参数列表匹配的 重载函数 getline 实例_面试题:方法重载的底层原理?...

    前语:微信改版后,大量读者还没养成点赞的习惯,如写得好,望大家阅读后在右下边"好看"处点个赞,以示鼓励!长期坚持原创真的很不容易,多次想放弃,坚持是一种信仰,专注是一种态度. 关于 ...

  6. synchronized底层原理_你用过synchronized吗?它的底层原理是什么?Java经典面试题来了...

    并发编程已经成为程序员必备技能 作为Java程序员,不懂得并发编程显然已经不能满足市场需求了,尤其是在面试过程中将处于被动地位,也有可能面试将就此终结. 那么作为Java开发者的你,日常虽然可以基于J ...

  7. iOS底层原理 - 常驻线程

    iOS底层原理 - 常驻线程 在 AFN 2.0 时代,会经常看到 AFN 创建一个常驻线程的方式: 0️⃣ AFN 2.0 时代的常驻线程 + (NSThread *)networkRequestT ...

  8. elasticsearch原理_ElasticSearch读写底层原理及性能调优

    ES写入/查询底层原理 1. Elasticsearch写入数据流程 客户端随机选择一个ES集群中的节点,发送POST/PUT请求,被选择的节点为协调节点(coordinating node) 协调节 ...

  9. 嘿嘿,我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他...

    来自:烟雨星空 前言 上篇文章介绍了 HashMap 源码后,在博客平台广受好评,让本来己经不打算更新这个系列的我,仿佛被打了一顿鸡血.真的,被读者认可的感觉,就是这么奇妙. 原文:面试官再问你 Ha ...

  10. 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看

    来自:烟雨星空 前言 HashMap 源码和底层原理在现在面试中是必问的.因此,我们非常有必要搞清楚它的底层实现和思想,才能在面试中对答如流,跟面试官大战三百回合.文章较长,介绍了很多原理性的问题,希 ...

最新文章

  1. 在项目管理工具Redmine中使用SubVersion进行版本管理(转)
  2. 算法之如何进行算法复杂度分析
  3. 在线进位制计算机,计算机基础知识进位计数制.pdf
  4. Java提高篇 —— Java关键字之static的四种用法
  5. Redmi K50全系售价曝光:电竞版颠覆骁龙8旗舰定价
  6. SPOJ 104 Highways(最小生成树计数)
  7. Linux Oracle卸载步骤
  8. android cpu型号采集,Android查看CPU型号设备信息等
  9. ubuntu死机咋办_Ubuntu16.04死机解决方案
  10. Django微信抢票大作业总结
  11. 【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
  12. 微信小程序 | 人脸识别的最终解决方案
  13. source insight教程:常用设置、快捷键、附带source insight3.5和4的对比
  14. 基于近场动力学的二维疲劳裂纹扩展模型_如何抑制高强铝合金裂纹等缺陷,就在《铝及铝合金铸轧成形与裂纹扩展》...
  15. 办公室常用赞美英语经典句子
  16. 云HIS源码:云HIS系统操作指南
  17. 看懂这篇文章-你就懂了信息安全的密码学
  18. OpenGL 几何知识
  19. 计算机科学与技术算是理学么,桂林雁山【计算机科学与技术考研】,计算机属于工学还是理学。...
  20. 坚持#第308天~我找到了一种字体非常好,Helvetica,我非常喜欢,写文档专用,昨天晚上加班到1点钟把技术文档写完了,

热门文章

  1. SSH.ASDM:远程管理
  2. cocos creator休闲小游戏源码《躲避高空抛物》源码H5+安卓+IOS三端源码
  3. Gson将json转Map的那些坑
  4. 浙江大学-西湖大学联合培养博士生
  5. steam账号被盗找回概率_如何找回忘记的Steam密码
  6. java菜鸟突破面试系列-终章
  7. 用C#开发.NET CF蓝牙通信模块
  8. cocos creator 游戏框架
  9. 阿拉丁指数丨《2021 年度小程序互联网发展白皮书》4.5 亿+DAU 小程序的 6 大发展趋势
  10. 上海浦东软件园入园企业