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

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

WebDriver

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

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

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

server端就是我们的Remote server,也就是我们通过各个不同浏览器所启动的浏览器实例,在我们脚本启动浏览器后,这个浏览器就可以称之为我们的Remote server,它的职责就是等待client发送请求并做出相应处理。

client 就是我们的测试代码,我们测试代码中的所有操作,比如打开浏览器,寻找元素,点击都是以http请求的方式发送给被测试浏览器,也就是我们的Remote server,remote server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息(这里调用的接口是浏览器的源生API,而每一个浏览器都有自己的一套接口信息,这也就是为什么我们要安装不同的驱动的原因)

WebDriver工作流程

1、通过WebDriver创建一个浏览器服务,启动的浏览器实例将作为WebDriver 的 remote server。

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

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

4、分析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(),通过方法名即可清晰的知道具体的功能实现。

WebDriver 原理的更多相关文章

  1. selenium-webdriver(python) (十四) -- webdriver原理

    之前看乙醇视频中提到,selenium 的ruby 实现有一个小后门,在代码中加上$DEBUG=1 ,再运行脚本的过程中,就可以看到客户端请求的信息与服务器端返回的数据:觉得这个功能很强大,可以帮助理 ...

  2. selenium-webdriver(python) (十四) -- webdriver原理(转)

    之前看乙醇视频中提到,selenium 的ruby 实现有一个小后门,在代码中加上$DEBUG=1 ,再运行脚本的过程中,就可以看到客户端请求的信息与服务器端返回的数据:觉得这个功能很强大,可以帮助理 ...

  3. Selenium WebDriver原理(二):Selenium是如何操纵浏览器的?

    前言 上一篇文章<selenium webdriver 是怎么运行的>用了一个简单的例子--搭出租车,形象地讲解selenium webdriver 是如何运行的,而这一篇文章可以理解为深 ...

  4. Selenium(十三):验证码的处理、WebDriver原理

    1. 验证码的处理 对于Web应用来说,大部分的系统在用户登录时都要求用户输入验证码.验证码的类型很多,有字母数字的.有汉字的,甚至还需要用户输入一道算术题的答案的.对于系统来说,使用验证码可以有效地 ...

  5. Selenium WebDriver原理

    WebDriver原理 WebDriver是按照Server-Client的经典设计模式设计的. Server端就是RemoteServer,可以是任意的浏览器,当我们的脚本启动浏览器后,该浏览器就是 ...

  6. Selenium 2自动化测试实战24(webdriver原理)

    一.webdriver原理 webdriver是按照Server-Client的经典设计模式设计的.Server端就是Remote Server,可以是任意的浏览器.当我们的脚本启动浏览器后,该浏览器 ...

  7. webdriver原理及操作

    webdriver原理: 1. WebDriver 启动目标浏览器,并绑定到指定端口.该启动的浏览器实例,做为 webdriver 的 remote server. 2. Client 端通过 Com ...

  8. webdriver原理、协议

    1.webdriver client的原理是什么? 当测试脚本启动firefox的时候,selenium-webdriver 会首先在新线程中启动firefox浏览器.如果测试脚本指定了firefox ...

  9. Selenium WebDriver原理(一):Selenium WebDriver 是怎么工作的?

    首先我们来看一个经典的例子: 搭出租车 在出租车驾驶中,通常有3个角色: 乘客 : 他告诉出租车司机他想去哪里以及如何到达那里 对出租车司机说: 1.去阳光棕榈园东门 2.从这里转左 3.然后直行 2 ...

随机推荐

  1. 腾讯地图api将物理地址转化成坐标

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. bg和fg命令

    linux提供的fg和bg命令,可以让我们轻松调度正在运行的任务   假如你发现前天运行的一个程序需要很长的时间,但是需要干前天的事情,你就可以用ctrl-z挂起这个程序,然后可以看到系统的提示: [ ...

  3. onkeydown-onkeypress-onkeyup

      CreateTime--2016年12月17日22:28:36Author:Marydononkeydown.onkeypress和onkeyup参考链接:http://www.jb51.net/ ...

  4. eclispe Missing artifact...

      eclispe Missing artifact... CreateTime--2018年4月24日18:47:21 Author:Marydon 1.情景再现 eclipse pom.xml报错 ...

  5. jQuery写缓存之:sessionStorage的运用,配合PHP将不同tab页的数据写入后台

    JS(jQuery)写缓存之:sessionStorage的运用: 结果就是讲存储的DOM对象value传到后台PHP,进行foreach(){} 解析JSON成二维数组 示例页面:http://ww ...

  6. JavaScript-关于在IE下JavaScript的Stack overflow at line错误可能的原因

    1.注册表混乱使基于IE内核的浏览器无法正常显示图片尤其是png格式, 修改一下注册表(网上搜) 2.重定义了系统的触发事件名称作为自定义函数名如: onclick / onsubmit…  都是系统 ...

  7. Centos5 下redmine的安装及配置

    Redmine: 这是基于ROR框架开发的一套跨平台项目管理系统,是项目管理系统的后起之秀,据说是源于Basecamp的ror版而来,支持多种数据库,除了和 DotProject的功能大致相当外,还有 ...

  8. 学习Tkinter

    tutorial point这个网站教程很多,无所不包.还包括一堆在线IDE,值得收藏 一.第一个tkinter程序 import tkinter top = tkinter.Tk() # Code ...

  9. Linux 常用脚本

    Linux 常用脚本   修改表列属性   sql可任意修改,若数据库正好在执行机器上,可去掉ip地址 echo 为输出   #!/bin/shfor((i=0;i<256;i++));do   ...

  10. C# MediaPlayer的详细用法

    AxWindowsMediaPlayer的详细用法 作者:龙昊雪 AxWindowsMediaPlayer的详细用法收藏 function StorePage(){d=document;t=d.sel ...