Selenium2原理

原文URL: https://www.cnblogs.com/leeboke/p/5014058.html

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,如下图截图:

各种WebDriver的工作原理

从上图中我们可以看出,不同浏览器的WebDriver子类,都需要依赖特定的浏览器原生组件,例如Firefox就需要一个add-on名字叫webdriver.xpi。而IE的话就需要用到一个dll文件来转化Web Service的命令为浏览器native的调用。另外,图中还标明了WebDriver Wire协议是一套基于RESTful的web service。如果不明白什么是RESTful的,可以参见作者之前另外一篇介绍REST的blog(http://blog.csdn.net/ant_yan/article/details/7963517)关于WebDriver Wire协议的细节,比如希望了解这套Web Service能够做哪些事情,可以阅读Selenium官方的协议文档。

Selenium Grid

https://www.cnblogs.com/cherrysu/p/7866877.html

Selenium的Page Object模式


https://blog.csdn.net/u012111923/article/details/80704552

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Selenium是ThoughtWorks公司研发的一个强大的基于浏览器的开源自动化测试工具,它通常用来编写web...
    zhouhaifeng阅读 5,648评论 0 0
  • Selenium经历了两个版本,selenium1.0和selenium2.0,本次仅介绍selenium2.0的...
    测试猴阅读 6,504评论 0 1
  • 最近正在编写seleniumwebdriver自动化框架,经过几天的努力,目前基本已经实现了一套即能满足数据驱动、...
    smooth00阅读 10,850评论 0 2
  • 洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出...
    厲铆兄阅读 11,708评论 3 47
  • Selenium 官网Selenium WebDriver官网webdriver实用指南python版本 WebD...
    顾顾314阅读 47,221评论 0 34

友情链接更多精彩内容