2023Selenium自动化测试框架入门整理(建议收藏)

news2024/9/23 5:30:32

本文主要针对Selenium自动化测试框架入门整理,只涉及总体功能及框架要点介绍说明,以及使用前提技术基础要求整理说明。作为开发人员、测试人员入门参考。

本文参考:Selenium框架最新技术规范及相关资料

简介

Selenium也是一款同样使用Apache License 2.0协议发布的开源框架。Selenium也是一套完整的Web应用程序测试系统工具,它包含了:

  • Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上;
  • 测试的录制(Selenium IDE);
  • 编写及运行(Selenium Remote Control)(3.X移除了);
  • 测试的并行处理(Selenium Grid);
  • Selenium2.X包含该了WebDriver和SeleniumRC(兼容以前版本)。Selenium3.X只包含WebDriver,移除了SeleniumRC。

Selenium整体产品结构如下:(3.x以后版本去除了SeleniumRC)

Selenium IDE:

是一个用于构建脚本的初级工具,其实是FireFox的一个插件,拥有一个易于使用的界面。它拥有记录功能,能够记录用户执行的操作,并可以导出为可重复使用的脚本。如果没有编程经验,可以通过Selenium IDE来快速熟悉Selenium的命令。该工具实际使用不多。Selenium-core 是使用HTML的方式来编写测试脚本,你也可以使用 Selenium-IDE来录制脚本,但是目前Selenium-IDE只有 FireFox 版本。

Selenium-RC(Selenium3.X 移除):

selenium-remote control 缩写,是使用具体的语言来编写测试类。Selenium RC支持多种不同的语言编写自动化测试脚本,通过SeleniumRC的服务器作为代理服务器去访问应用,从而达到测试的目的。主要包含以下两大部分:

  • ClientLibraries库主要用于编写测试脚本,用来控制SeleniumServer的库。
  • SeleniumServer负责控制浏览器行为。SeleniumServer包含三部分:Launcher,Http Proxy和Core。其中,Selenium Core是被Selenium Server嵌入到浏览器页面中的,其实SeleniumCore就是一堆JavaScript函数的集合,即通过这些JavaScript函数,我们才可以实现用程序对浏览器进行操作。Launcher用于启动浏览器,把Selenium Core加载到浏览器页面当中,并把浏览器的代理设置为SeleniumServer的HttpProxy。

WebDriver:

Selenium2.x提出了WebDriver的概念之后,它提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。由于使用的是浏览器原生的API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的FirefoxDriver,Chrome就有专门的ChromeDriver等等。(甚至包括了AndroidDriver和iOS WebDriver)

Selenium Grid:

实现测试的并行处理。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

基于Selenium进行测试的方式及流程

Selenium RC方式(3.X以后版本移除该方式):

  • 测试用例通过Http请求建立与 Selenium-RC server 的连接;
  • Selenium RC Server 驱动一个浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy;
  • 执行用例向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作并注入 JS 代码;
  • Selenium Core执行接受到的指令并操作;
  • 当浏览器收到新的请求时,发送http请求;
  • Selenium Server接收到浏览器发送的Http请求后,自己重组Http请求,获取对应的Web页面;
  • Selenium Server中的Http Proxy把接受到的页面返回给浏览器。

WebDriver(目前主流方式):

Selenium 2.X启动SeleniumRC至今为止还保留着,应该是考虑到向前兼容。Selenium 3.X完成移除了SeleniumRC。

Selenium2.X增加了WebDriver,保持RC向前兼容。WebDriver项目是由Simon Stewart创建的,它是一个非常便捷的自动化测试工具。WebDriver对不同浏览器的处理方式和RC有着明显的不同,RC是不管什么浏览器都是JavaScript来处理,而WebDriver是选择浏览器最容易接受的语言来处理。比如,在IE中,C++最合适,在Firefox中, JavaScript最合适等等。通过灵活选择最合适的语言来处理多浏览器,我们可以很好的回避某些浏览器对JavaScript的安全限制。而且WebDriver不仅仅具有这些能力,它还能够调用操作系统API,尤其是当用户需要模拟鼠标和键盘进行真实的页面操作的时候,这项能力的作用尤为明显。

现在支持的WebDriver:AndroidDriver,ChromeDriver, FirefoxDriver, HtmlUnitDriver, EventFiringWebDriver,InternetExplorerDriver, IPhoneDriver, IPhoneSimulatorDriver, RemoteWebDriver。

Selenium Grid(目前主流的方式):

传统的无Grid的模式,只能在一台机器上进行测试。Selenium可以在上面两种方式下进行执行,第一种是每台机器都是一致的,第二种是可以指定特定的浏览器或者特定的操作系统执行。

自动化测试脚本编制要求

  • 前提熟悉:HTML /XML/...
  • 前提熟悉:XPath(XML路径语言 http://www.runoob.com/xpath/xpath-tutorial.html)
  • 开发语言:Java/Python/C#/PHP/…,最起码熟悉一种开发语言。
  • FIT模式:Selenium脚本(JS):命令用法 。
  • Driver模式:库(不同语言有不同客户端)的熟练使用:方法、函数等。
  • 可采用Selenium WebDriver + TestNG框架(TestNG 是一个测试 Java 应用程序的新框架)模式。
  • 建立测试用例脚本的编制规范(针对WebDriver模式)
  • 可利用Jenkins集成Selenium Grid + WebDriver,及 Selenium Report插件。

测试结果报告展现方式

要结合其他框架的测试报告模板,例如TestNG的测试结果报告、ReportNg等;

Jenkins集成selenium,可利用 selenium report 插件输出;

可结合自主开发测试结果展现处理平台,关联到任务平台当中。

集成成本及方式

需进行Selenium脚本的学习以及相关技术的学习;

基于Selenium的WebDriver模式,测试用例的编制要求具备数据一种开发语言(主流模式);

如结合TestNG,则需熟悉Java。

我们可采用Jenkins + Selenium + TestNG + Selenium report (ReportNG) 集成的模式进行Web应用的自动化测试。在DevOps产品研发中,可融合封装使用Selenium进行WEB应用自动化测试。

如需深入了解,请在网络上参考官方的文档及相关资料等。如果觉得有用,就请关注、点赞、在看、分享到朋友圈吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现分片上传、断点续传、秒传 (JS+NodeJS)(TypeScript)

一、引入及效果 上传文件是一个很常见的操作,但是当文件很大时,上传花费的时间会非常长,上传的操作就会具有不确定性,如果不小心连接断开,那么文件就需要重新上传,导致浪费时间和网络资源。 所以&#xff0…

Wpf 使用 Prism 实战开发Day02

一.设计首页导航条 导航条的样式,主要是从Material DesignThemes UI 拷贝过来修改的,项目用了这个UI组件库,就看自己需要什么,就去拷过来使用,界面布局或其他组件使用,不做介绍。 直接下载源码,编译运行就可…

【鸿蒙软件开发】ArkTS基础组件之TextTimer(文本显示计时)、TimePicker(时间选择)

文章目录 前言一、TextTimer1.1 子组件1.2 接口参数TextTimerController 1.3 属性1.4 事件1.5 示例代码 二、TimePicker2.1 子组件2.2 接口参数 2.3 属性2.4 事件TimePickerResult对象说明 2.5 示例代码 总结 前言 通过文本显示计时信息并控制其计时器状态的组件。 时间选择组…

防火墙的技术(NAT NAT地址池 升级版本 ) 第二一课

防火墙的技术(NAT NAT-Server 策略路由 ) 第二十课 官方文档分享 菜鸟教程 - 学的不仅是技术&#xff0c;更是梦想&#xff01; 环境的准备工作 1 配置如图所示的所有的IP地址 1 配置IIP地址 2 配置防火墙中的基本配置 防火墙的默认管理口的ip地址 <USG6000-ISP-LOCAL&…

吴恩达《机器学习》2-2->2-4:代价函数

一、代价函数的概念 代价函数是在监督学习中用于评估模型的性能和帮助选择最佳模型参数的重要工具。它表示了模型的预测输出与实际目标值之间的差距&#xff0c;即建模误差。代价函数的目标是找到使建模误差最小化的模型参数。 二、代价函数的理解 训练集数据&#xff1a;假设我…

基于springboot实现校园志愿者管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现校园志愿者管理系统演示 摘要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;校园志愿者管理系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff…

论文阅读——InstructGPT

论文&#xff1a;Training_language_models_to_follow_instructions_with_human_feedback.pdf (openai.com) github&#xff1a;GitHub - openai/following-instructions-human-feedback 将语言模型做得更大并不能从本质上使它们更好地遵循用户的意图。例如&#xff0c;大型语…

共享股东模式:规则、优势与亮点

在当今高度信息化的时代&#xff0c;共享经济正在改变人们的生活方式。其中&#xff0c;共享股东模式作为一种新型的商业模式&#xff0c;正在受到越来越多企业的关注。本文将对共享股东模式的规则、优势和亮点进行详细介绍。 一、共享股东模式规则 共享股东模式是一种将闲置资…

接口自动化测试要做什么?一文3个步骤带你成功学会!

先了解下接口测试流程&#xff1a; 1、需求分析 2、Api文档分析与评审 3、测试计划编写 4、用例设计与评审 5、环境搭建&#xff08;工具&#xff09; 6、执行用例 7、缺陷管理 8、测试报告 了解了接口测试的工作流程&#xff0c;那"接口自动化测试"怎么弄&#xff1…

山西电力市场日前价格预测【2023-10-29】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-29&#xff09;山西电力市场全天平均日前电价为318.01元/MWh。其中&#xff0c;最高日前电价为537.50元/MWh&#xff0c;预计出现在18:15。最低日前电价为0.00元/MWh&#xff0c;预计出…

vue项目package.json与package-lock.json作用及区别

package.json文件介绍和使用 运行项目&#xff0c;命令行: npm run dev “dependencies” 运行依赖&#xff0c;需引入页面使用 “devDependencies” 开发依赖(生产环境使用)&#xff0c;只是开发阶段需要 我们每次新建一个项目的时候会发现在项目中会有这么俩个相似的文件&am…

Go语言标准输入

文章目录 Go语言标准输入函数使用 Go语言标准输入 函数 Scan // 使用stdin读取内容&#xff0c;读取的内容以空白&#xff08;换行也属于空白&#xff09;分隔&#xff0c;赋值给函数参数。返回读取的个数和错误 func Scan(a ...interface{}) (n int, err error)Scanf // 和…

《算法通关村—最大小栈问题解析》

《算法通关村—最大小栈问题解析》 最小栈 描述 leetCode 155: 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现最小栈 MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop()…

计算线阵相机 到 拍摄产品之间 摆放距离?(隐含条件:保证图像不变形)

一物体被放置在传送带上&#xff0c;转轴的直径为100mm。已知线阵相机4K7u&#xff08;一行共4096个像素单元&#xff0c;像素单元大小7um&#xff09;&#xff0c;镜头35mm&#xff0c;编码器2000脉冲/圈。保证图像不变形的条件下&#xff0c;计算相机到产品之间 摆放距离&…

Docker的架构与自制镜像的发布

一. Docker 是什么 Docker与自动化测试及其测试实践 大家都知道虚拟机吧&#xff0c;windows 上装个 linux 虚拟机是大部分程序员的常用方案。公司生产环境大多也是虚拟机&#xff0c;虚拟机将物理硬件资源虚拟化&#xff0c;按需分配和使用&#xff0c;虚拟机使用起来和真实操…

[计算机提升] Windows系统各种开机启动方式介绍

1.14 开机启动 在Windows系统中&#xff0c;开机启动是指开启电脑后&#xff0c;自动运行指定的程序或服务的技术。一些程序或服务需要在开机后自动启动&#xff0c;以便及时响应用户操作&#xff0c;比如防安防软件、即时通信工具、文件同步软件等。 同时&#xff0c;一些系统…

5.OsgEarth加载地形

愿你出走半生,归来仍是少年&#xff01; 在三维场景中除了使用影像体现出地貌情况&#xff0c;还需要通过地形体现出地势起伏&#xff0c;还原一个相对真实的三维虚拟世界。 osgEarth可通过直接加载Dem数据进行场景内的地形构建。 1.数据准备 由于我也没有高程数据&#xff0c…

在Centos7中配置NIS的详细过程

在Centos7中配置NIS的详细过程 原理 NIS(Network Information Service) 在有多台linux服务器的环境中&#xff0c;且一台linux服务器的账号又有很多且可能会相同&#xff0c;所以会出现理员很难管理的现象。NIS的主要功能是对主机账号系统等系统信息提供集中的管理。 当NIS客户…

C# 图解教程 第5版 —— 第10章 语句

文章目录 10.1 什么是语句&#xff08;*&#xff09;10.2 表达式语句10.3 控制流语句10.4 if 语句&#xff08;*&#xff09;10.5 if ... else 语句&#xff08;*&#xff09;10.6 while 循环&#xff08;*&#xff09;10.7 do 循环&#xff08;*&#xff09;10.8 for 循环10.8…

centos7虚拟机部署苍穹私有云环境记录

物理机建议16G内存以上&#xff0c;不然安装gpass过程中带不动虚拟机 步骤1&#xff1a;迅雷下载centos7.9镜像文件&#xff0c;并创建虚拟机&#xff0c;手动安装 http://ftp.sjtu.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 后面安装gpass时会有校验…