zoukankan      html  css  js  c++  java
  • selenium WebDriver的实现原理

    感觉这篇博客写的很详细:

    献上地址:https://blog.csdn.net/yoyocat915/article/details/80246744

    在WebDriver中也有类似的三个角色:

    • 工程师写的自动化测试代码:自动化测试代码发送请求给浏览器的驱动(比如火狐驱动、谷歌驱动)
    • 浏览器的驱动:它来解析这些自动化测试的代码,解析后把它们发送给浏览器
    • 浏览器:执行浏览器驱动发来的指令,并最终完成工程师想要的操作。

    下面再从技术上解释下WebDriver的工作原理:

    从技术上讲,也同样是上面的三个角色:

    1. WebDriver API(基于Java、Python、C#等语言)

    对于java语言来说,就是下载下来的selenium的Jar包,比如selenium-java-3.8.1.zip包,代表Selenium3.8.1的版本

    2. 浏览器的驱动(browser driver)

    每个浏览器都有自己的驱动,均以exe文件形式存在

    比如谷歌的chromedriver.exe、火狐的geckodriver.exe、IE的IEDriverServer.exe

    3. 浏览器

    浏览器当然就是我们很熟悉的常用的各种浏览器。

    那在WebDriver脚本运行的时候,它们之间是如何通信的呢?为什么同一个browser driver即可以处理java语言的脚本,也可以处理python语言的脚本呢?让我们来看一下,一条Selenium脚本执行时后端都发生了哪些事情:

    1)对于每一条Selenium脚本,一个http请求会被创建并且发送给浏览器的驱动
    2)浏览器驱动中包含了一个HTTP Server,用来接收这些http请求
    3)HTTP Server接收到请求后根据请求来具体操控对应的浏览器
    浏览器执行具体的测试步骤
    1)浏览器将步骤执行结果返回给HTTP Server
    2)HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息。

    为什么使用HTTP协议呢?
    WebDriver的结构中就是典型的C/S结构,WebDriver API相当于是客户端,而小小的浏览器驱动才是服务器端

    那为什么同一个浏览器驱动即可以处理Java语言的脚本,也可以处理Python语言的脚本呢?

    这就要提到WebDriver基于的协议:JSON Wire protocol。

    body部分主要传送具体的数据,在WebDriver中这些数据都是以JSON的形式存在并进行传送的,这就是JSON Wire protocol。

    JSON是一种数据交换的格式,是对XML的升级与替代

    常常感恩
  • 相关阅读:
    20120109_1
    .NET(C#)开源代码分析
    Vue filter API All In One
    js 千位分隔符 All In One
    css fontfeaturesettings All In One
    vue 子组件不使用 watch 如何更新组件 All In One
    miro whiteboard All In One
    转载:sql注入的危害(登陆并获取数据库的名字,表的名称和字段)
    Windows 7/windows server 2008 R2 64位版IIS不能连接Access数据库,80004005报错的解决办法
    LINQ如何做SELECT TOP操作
  • 原文地址:https://www.cnblogs.com/prince365/p/10449658.html
Copyright © 2011-2022 走看看