WebDriver是一个浏览器远程控制协议,是一个既定标准,它本身的内容非常丰富,本文不可能全部介绍,本文仅粗略带大家了解一下WebDriver的部分内容以及一个小的实际应用。想深入了解的请参考W3C文档WebDriver.

问题背景

开发的同学都知道公司为了便于开发和测试都会有多套环境,比如dev开发环境、qa测试联调环境、pre预发模拟线上环境、online线上环境。经常切环境也是一个比较繁琐的事情,简单来说,作为一个前端开发,频率最高的操作路径是:

1.通过SwitchHosts切换host

2.选择目录和网关(由于环境不够用,但是又需要部署多套代码。为了解决这个问题,我们利用nginx来在一台机器上配置多个目录,每个目录对应不同的代码,当你访问这个页面的时候,网关会记住你所选择的目录,进而对你的请求进行相应的转发)

3.登录网页进行ui调试和接口联调

SwitchHosts切换host还算方便,但是选择目录、选择网关、打开网页输入用户名密码然后点登录,这个过程操作频率比较高,有点繁琐。能不能自动化这个过程呢?熟悉自动化测试的同学对这个就非常了解了,端到端测试就是利用自动化测试套件模拟用户访问网页的过程。这里我采用selenium-webdriver这个库,通过node来执行自动化脚本,代码如下。

那么selenium-webdriver到底是如何与浏览器进行交互的?如何与不同的浏览器进行交互呢?

下面就要引入主角了—— WebDriver, WebDriver是W3C的一个标准,它是一个标准,所以不同的浏览器都会有自己的实现,而selenium-webdriver是通过WebDriver协议与浏览器进行交互的。

WebDriver是什么

WebDriver是W3C的一个标准,是一个远程控制协议,它提供了跨平台和跨语言的方式来远程操控浏览器,它提供了一系列接口来访问和操作DOM,进而控制浏览器的行为。它使得web开发者能写一些自动化脚本来测试网页。

WebDriver的工作过程

(主要参考:https://blog.csdn.net/ant_ren...)
浏览器在启动后会在某一个端口启动基于WebDriver协议的Web Service,接下来我们调用WebDriver的任何api时,都需要借助一个ComandExecutor发送一个命令(也就是给监听端口上的Web Service发送一个http请求),这个命令会告诉浏览器接下来要做什么。

WebDriver的实际应用

selenium-webdriver

这是一个浏览器自动化库,它提供了许多浏览器自动化接口,用于测试web应用。
除了通过npm安装selenium-webdriver之外,还需要安装浏览器相应的驱动。
它相应的api和用法selenium-webdriver

在我们new一个WebDriver的过程中,selenium首先会确认浏览器的native component是否存在可用而且匹配的版本,然后就在目标浏览器里启动一整套Web Service,这套Web Service使用了selenium自己设计定义的协议,名字叫做The WebDriver Wire Protocol。这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等等。

参考资料

https://www.cnblogs.com/linbo...
https://cloud.tencent.com/dev...
http://www.cnblogs.com/sunada...

浏览器自动化操作标准--WebDriver相关推荐

  1. 11-selenium浏览器自动化

    selenium - 概念: Selenium 是一个 Web 应用的自动化框架 自动化:通过它,我们可以写出自动化程序,像人一样在浏览器里操作web界面. 比如点击界面按钮,在文本框中输入文字 等操 ...

  2. [转载] 使用selenium_一日一技:使用Selenium的浏览器自动化

    参考链接: 使用Selenium的浏览器自动化 Selenium是用于通过程序控制Web浏览器的强大工具. 它适用于所有浏览器,可在所有主要操作系统上运行,并且其脚本以各种语言(即Python,Jav ...

  3. ChromeDriver/Selenium/Python浏览器自动化初体验

    目录 ChromeDriver安装 Selenium安装 Python脚本 ChromeDriver安装 在浏览器地址栏输入,查看chrome当前版本: chrome://version 在浏览器地址 ...

  4. selenium+Headless Chrome实现不弹出浏览器自动化登录

    目前由于phantomjs已经不维护了,而新版的Chrome(59+)推出了Headless模式,对爬虫来说尤其是定时任务的爬虫截屏之类的是一大好事. 不过按照网络上的一些方法来写的话,会报下面的错误 ...

  5. 浏览器自动化的一些体会8 访问angular页面的一个问题

    发现浏览器自动化有一个重要方面没有提及,即所谓的无页面浏览器,不过最近没有需求,不想尝试,先记上一笔,以后有需求时,可以有个思路. 大约一两个月前(现在比较懒散,时间不知不觉过去,连今天是几号有时候都 ...

  6. python怎么模拟浏览器交互_python+webdriver 模拟用户交互工具

    概述: 使用webdriver(引用摘抄于"Python模拟登陆万能法-微博|知乎" 使用selenium库 步骤: 安装webdriver: Windows: pc:chrome ...

  7. python 浏览器自动化_Python利用splinter实现浏览器自动化操作方法

    利用Splinter开发浏览器自动化操作,编写代码比较简单. 案例一: from splinter import Browser with Browser() as browser: # Visit ...

  8. 微软开源的浏览器自动化工具-Playwright

    软开源了一个 Python 项目:Playwright,从此又多了一个浏览器自动化工具.之前一直用 selenium 或 splinter. Playwright 可通过单个 API 自动执行 Chr ...

  9. 浏览器自动化框架沦为攻击者的工具

    5月27日消息,安全公司Team Cymru的研究人员表示,越来越多的威胁参与者正在使用免费的浏览器自动化框架作为其攻击活动的一部分. 研究人员表示,该框架的技术准入门槛故意保持在较低水平,以创建一个 ...

最新文章

  1. 测试脚本的实用性:谈嵌入式系统在型式试验中的脚本应用
  2. php推荐引擎算法,推荐系统,第 2 部分: 开源引擎简介
  3. pat 1123(AVL)
  4. 经典面试题|讲一讲JVM的组成
  5. 高效算法之动态规划(第15章)
  6. php读取gitlab用户信息,gitlab api获取所有用户的记录
  7. BZOJ3450 Easy
  8. 直方图均衡化的原理及实现
  9. ruby 安装问题的 一二事
  10. 如何通过github实现个人网页上传
  11. java 周几_java实现根据日期判断周几
  12. 多人共享的待办事项app有哪些
  13. javascript之内置函数
  14. Opegnl ES之四边形绘制
  15. Java_7.1 ArrayList应用点名器
  16. WAP 构建 Java 应用 和 WAP经验总结
  17. 全国计算机技术与软件专业技术考试----(高级资格/高级工程师)各资格证详细介绍
  18. 与EEG信号的相关的基础知识以及运动想象信号的生理活动
  19. 基于hbuilder开发的微信小程序音乐播放系统,可添加本地音乐(含源码)
  20. Linux系统下生成证书 https证书

热门文章

  1. 生成路径 vs 设置_Simulink代码生成之模型配置
  2. java jre 中导入导出证书
  3. 视觉工程师面试指南_选择正确视觉效果的终极指南
  4. OO第二单元作业小结
  5. GreenPlum数据库故障恢复测试
  6. Android中文API-ViewStub
  7. Shell 快速指南
  8. HybridTime - Accessible Global Consistency with High Clock Uncertainty
  9. 软件项目送上门来了,还要学会说不,接了项目拿了定金噩梦才刚刚开始
  10. 如何识别是三层交换机还是二层交换机