zoukankan      html  css  js  c++  java
  • WebDriver 原理

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

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

    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的一些常用的常量。

    remotewebdrvier.py

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

    remote emote_connection.py

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

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

  • 相关阅读:
    bzoj 1053: [HAOI2007]反素数ant 搜索
    bzoj 1040: [ZJOI2008]骑士 環套樹DP
    对主席树的一些理解
    POJ 2777 Count Color【线段树】
    POJ 2420 A Star not a Tree?【爬山法】
    生物遗传学 整理人PYJ (恋_紫花地丁)
    POJ3321Apple Tree【dfs 树状数组】
    POJ1450:Gridland 【杂题】
    POJ 1088 滑雪【记忆化搜索】
    Poj3253:Fence Repair 【贪心 堆】
  • 原文地址:https://www.cnblogs.com/chendai21/p/8966888.html
Copyright © 2011-2022 走看看