WebDriver 原理

注:学会根据执行顺序看底层代码web

 《如下内容摘自大师兄博客》chrome

WebDriver设计模式

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

webdriver的做用就是建立一个新的浏览器实例,也就是启动一个Server端。浏览器

(Starts the service and then creates new instance of chrome driver)restful

server端就是咱们的Remote server,也就是咱们经过各个不一样浏览器所启动的浏览器实例,在咱们脚本启动浏览器后,这个浏览器就能够称之为咱们的Remote server,它的职责就是等待client发送请求并作出相应处理。session

client 就是咱们的测试代码,咱们测试代码中的全部操做,好比打开浏览器,寻找元素,点击都是以http请求的方式发送给被测试浏览器,也就是咱们的Remote server,remote server接受请求,并执行相应操做,并在response中返回执行状态、返回值等信息(这里调用的接口是浏览器的源生API,而每个浏览器都有本身的一套接口信息,这也就是为何咱们要安装不一样的驱动的缘由)工具

WebDriver工做流程测试

一、经过WebDriver建立一个浏览器服务,启动的浏览器实例将做为WebDriver 的 remote server。优化

二、脚本启动时会在新的线程中启动一个浏览器,并绑定特定的端口,每一个浏览器有不一样的端口段。

三、client 建立1个session,在该session中经过http请求向remote server发送restful(HTTPRequest)的请求,remote server解析请求,完成相应操做并返回response。

四、分析response,继续执行脚本仍是结束执行

command.py

Command类中定义了WebDriver的一些经常使用的常量。

remote\webdrvier.py

全部浏览器webdrvier的基类,其中包含了全部webdriver的api接口

remote\remote_connection.py

包含启动Remote WebDrvier server,执行client请求,self._commands是selenium的核心请求参数,根据对应的Command常量,发送不一样的http请求。

Page Object Model(POM)的优点
1.    POM提供了一种在UI层操做、业务流程与验证分离的模式,这使得测试代码变得更加清晰和高可读性
2.    对象库与用例分离,使得咱们更好的复用对象,甚至能与不一样的工具进行深度结合应用
3.    可复用的页面方法代码会变得更加优化
4.    更加有效的命名方式使得咱们更加清晰的知道方法所操做的UI元素。例如咱们要回到首页,方法名命名为: gotoHomePage(),经过方法名便可清晰的知道具体的功能实现。

相关文章
相关标签/搜索