selenium原理学习笔记
一,selenium工作原理(参考文档:https://blog.csdn.net/dawei_yang000000/article/details/87639928)
自动化测试代码发送请求给到浏览器驱动,比如chromedriver.exe(需要下载并放置在python安装目录的同级目录下即可),浏览器驱动解析后并发送给浏览器,
浏览器执行解析后的命令。如下图:

对于每一条Selenium脚本,http请求会被创建并且发送给浏览器的驱动,浏览器驱动中包含了一个用来接收这些http请求的HTTP Server ,它接收到请求后根据请求来具体操控对应的浏览器,浏览器执行具体的测试步骤,然后浏览器将步骤执行结果返回给HTTP Server,HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息。

# 1.创建webDriver对象,浏览器对象
# 通过进入cmd,运行chromedriver.exe,启动浏览器驱动
# 然后初始化客户端,这个客户端采用一个UIL lib3
# python通过subprocess库命令行的形式启动chromeserver.exx,即启动服务
# urllib3 ==>requests,进行http请求
browser = webdriver.Chrome()
使用HTTP协议的原因:
因为HTTP协议是一个浏览器和Web服务器之间通信的标准协议,而几乎每一种编程语言都提供了丰富的http libraries,这样就可以方便的处理客户端Client和服务器Server之间的请求request及响应response,WebDriver的结构中就是典型的C/S结构,WebDriver API相当于是客户端,浏览器驱动是服务器端。
为什么同一个浏览器驱动即可以处理Java语言的脚本,也可以处理Python语言的脚本呢?
因为WebDriver是基于JSON Wire Protocol的,它是在HTTP协议的基础上,对HTTP请求及响应信息的BODY部分的数据进一步规范, BODY部分主要传送具体的数据,在WebDriver中这些数据都是以JSON的形式存在并进行传送的,这就是JSON Wire protocol。
所以在Client和Server之间,只要是基于JSON Wire Protocol来传递数据,就与具体的脚本语言无关了,这样同一个浏览器的驱动就即可以处理Java语言的脚本,也可以处理Python语言的脚本了。
selenium原理学习笔记的更多相关文章
- Selenium Grid 学习笔记
Selenium Grid 学习笔记http://www.docin.com/p-765680298.html
- Unity3D 骨骼动画原理学习笔记
最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭哧吭哧的~ 首先列出学习参考的前人的文章,本文较多的参考了其中的表述: 1. ...
- Java并发之底层实现原理学习笔记
本篇博文将介绍java并发底层的实现原理,我们知道java实现的并发操作最后肯定是由我们的CPU完成的,中间经历了将java源码编译成.class文件,然后进行加载,然后虚拟机执行引擎进行执行,解释为 ...
- TCP/IP协议原理学习笔记
昨天学习了杨宁老师的TCP/IP协议原理第一讲和第二讲,主要介绍了OSI模型,整理如下: OSI是open system innerconnection的简称,即开放式系统互联参考模型,它把网络协议从 ...
- elasticsearch原理学习笔记
https://mp.weixin.qq.com/s/dn1n2FGwG9BNQuJUMVmo7w 感谢,透彻的讲解 整理笔记 请说出 唐诗中 包含 前 的诗句 ...... 其实你都会,只是想不起 ...
- 个人MySQL的事务特性原理学习笔记总结
目录 个人MySQL的事务特性原理笔记总结 一.基础概念 2. 事务控制语句 3. 事务特性 二.原子性 1. 原子性定义 2. 实现 三.持久性 1. 定义 2. 实现 3. redo log存在的 ...
- Selenium WebDriver 学习笔记
1. 打开VS2012 2. 新建工程(单元测试工程或控制台程序都可以, 看需求) 3. 工具->NuGet程序包管理器->程序包管理器控制台 4. 输入"Install-Pac ...
- selenium webdriver 学习笔记(三)
selenium webdriver 一.上传文件操作 上传文件夹一般要打开一个本地窗口,从窗口选择本地文件添加.所以一般会卡在如何操作本地窗口添加上传文件. 其实,在selenium webdriv ...
- selenium webdriver 学习笔记(二)
selenium webdriver 一.定位一组元素: webdriver可以很方便的使用findElement 方法来定位某个物定的对象.不过有时候我们却要定位一组对象,这时候就需要使用findE ...
随机推荐
- Hexo + Github Pages搭建个人网站主页
1.GitHub创建个人仓库 登录GitHub创建账号,同时拥有一个自己设定的用户名(username).点击New Repositories创建仓库.仓库名必须为username.github.io ...
- [翻译] 发布双屏预览SKD,公布MICROSOFT 365开发者日日期
[前置提示]:本文翻译工作尚未完工,您可以先看原文QUQ 原文标题:Announcing dual-screen preview SDKs and Microsoft 365 Developer Da ...
- Appium之启动第一个App
搭建appium自动化环境真是各种问题呀. 如何启动在真机上启动App? 执行操作:操作Android真机上打开手机淘宝app,并搜索“熊猫”. 脚本源码如下: from appium import ...
- charles安装破解步骤
访问该地址https://www.zzzmode.com/mytools/charles/ 安装——生成破解工具charles.jar——替换
- [LeetCode]66. 加一(数组)
###题目 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 ...
- oracle使用impdp和expdp导入导出数据
1. 导出数据 开始导出数据前,要创建一个directory,因为导入时需要指定directory,导出的dump文件和日志会保存在该directory对应的目录下 SQL> create di ...
- 最好用的流程编辑器bpmn-js系列之基本使用
最好用的流程编辑器bpmn-js系列文章 BPMN(Business Process Modeling Notation)是由业务流程管理倡议组织BPMI(The Business Process M ...
- 高可用集群之keepalived+lvs实战2
keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...
- springcloud一些博文记录
自己搭建完整demo后看的一个系列博文https://my.oschina.net/u/3375733/following 现在看着这个系列的后期文章估计出差前不会看了 一个博主的系列的git地址和博 ...
- 使用 mysqld_safe 启动 mysqld 服务
目录 mysqld_safe 介绍 启动 停止 mysqld_safe 介绍 mysqld_safe is the recommended way to start a mysqld server o ...