Selenium 经历了两个版本,Selenium 1.0 和 Selenium 2.0,本文仅介绍Selenium2的原理,在Selenium 2.0 主推的是WebDriver,Selenium2又名Selenium Webdriver。

Selenium2简介

Selenium是一个用于Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试,Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。

Webdriver的一个简单的架构图,如下图所示:

Selenium2原理

webdriver是按照server–client的经典设计模式设计的:

server端就是remote server,可以是任意的浏览器:我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;

client端简单说来就是我们的测试代码:们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;

简单介绍一下webdriver的工作原理:

  • 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。
  • 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
  • Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

注:

the WebDriver Wire Protocol是Selenium自己设计定义的协议,这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。

WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。

例如FirefoxDriver初始化成功,默认从http://localhost:7055开始IE则是http://localhost:52432,如下图截图:

转载于:https://www.cnblogs.com/william126/p/10889196.html

测试开发面试准备之Selenium 工作原理相关推荐

  1. 测试开发面试技巧_面试技巧将给您带来信心并帮助您获得开发工作

    测试开发面试技巧 by John Cobb 约翰·科布(John Cobb) 面试技巧将给您带来信心并帮助您获得开发工作 (Interview tips that will give you conf ...

  2. 曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作

    一.前言 上篇文章我们学习了Selenium页面操作原理及如何高效的进行元素定位 那Selenium的工作原理又是什么?是如何驱动浏览器的呢?这篇文章为你讲解Selenium工作原理及Webdrive ...

  3. 一道大厂测试开发面试真题,你需要几分钟解答?

    又到一年年底!年底其实是跳槽换坑的绝佳时机,毕竟可以「年前面试,年后入职」,而且面试越早,好坑位较多,可选择的余地也较大.对于做好准备的测试同学来说,是绝对要鼓励多发简历,多找找面试机会的.哪怕为接下 ...

  4. 【骐程】【深信服测试开发面试】首次面试互联网

    [骐程][深信服测试开发面试]首次面试互联网 面试中出现的问题.主要就是 一面: 主要对自己的项目中使用的技术不是很熟悉,尤其是对自己项目中的hashmap等这些东西的基础底层原理没有看,也没有掌握, ...

  5. python开发面试题目_Python测试开发面试笔试题

    Python 测试开发面试笔试题 一,中文单项选择题(30 分,每个 3 分) 1.下列哪个语句在 Python 中是非法的? A.x = y = z = 1 B.x = (y = z + 1) C. ...

  6. selenium工作原理详解

    selenium简介 Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11), ...

  7. 【面试总结】测试开发面试题目

    摘要 从三月初开始找工作到现在,先后面试了阿里巴巴.支付宝.字节跳动.网易.快手的测试开发岗. 大公司对于测试发开的要求相比来说高很多,要求掌握的知识点的广度和深度层次也比较高,遂整理了这两个月的面试 ...

  8. 一篇文章带你了解-selenium工作原理详解

    前言 Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla ...

  9. 美团 测开|测试开发 面试真题|面经 汇总

    美团测开一面 时长:1小时 介绍一下项目 说一下为什么选择测开 项目中用到的ES说一下 你项目实现过程中有没有遇到什么问题? 微信朋友圈的功能性测试,要从那些方面考虑 测试的一般流程 linux用的多 ...

最新文章

  1. 苹果运行内存比较_决定手机流畅度到底是看CPU还是运行内存,你知道么?
  2. Swift中使用构建配置来支持条件编译-b
  3. 业界率先支持 MCP-OVER-XDS 协议,Nacos 2.0.1 + 1.4.2 Release 正式发布
  4. 指针作为函数参数引用数组的任意元素
  5. 热血动漫番太好看了!用Python爬取了1T的动漫,内存都爆了
  6. 联想服务器RD450 配置RAID5阵列图文方法
  7. 基于HEVC的UHD(超高清4K)视频质量评价
  8. 数据结构笔记(九)-- 单链队列
  9. PHP中H5棋牌开发的异常处理
  10. SpringBoot学习之文件结构和配置文件
  11. python俄罗斯方块代码34行_Python:游戏:300行代码实现俄罗斯方块
  12. AD14 如何设置PCB板框大小及形状
  13. oracle 导入报错ORA-39126,ORA-06502,LPX-00230
  14. 从400亿估值的链家网成长为4000亿的房地产产业平台,贝壳做对了这三点创新
  15. ✨❤️CSDN标题党❤️,创意无极限,那不直接全网站都花的飞起?
  16. android耳机检测驱动,[RK3288][Android6.0] 有线耳机驱动小结
  17. javamail模拟邮箱功能--邮件删除-中级实战篇【邮件标记方法】(javamail API电子邮件实例)
  18. python-某旗小说app的学习过程
  19. RichEdit的用法总结
  20. 爬虫系列:读取 CSV、PDF、Word 文档

热门文章

  1. oracle数据库查表_Oracle面试问题-技术篇
  2. centos路由查看命令_CentOS下使用Route命令添加路由
  3. github图---小章鱼图标
  4. 线上CPU飚高(死循环,死锁……)?帮你迅速定位代码位置
  5. spring boot 整合 (全)
  6. 公共平台服务治理与鉴权
  7. js中如何删除json对象的某一个选项
  8. 编码文件AndroidStudio初体验:解决Execution failed for task ':TestAndroid:compileDebug'.
  9. 值类型 引用类型 堆栈 堆 之 异想
  10. 在iview的Table中添加Select(render)