Selenium基础 — Selenium自动化测试框架介绍

news2024/11/25 14:24:04

1、什么是selenium

  • Selenium是一个用于Web应用程序测试的工具。
  • 只要在测试用例中把预期的用户行为与结果都描述出来,我们就得到了一个可以自动化运行的功能测试套件。
  • Selenium测试套件直接运行在浏览器中,就像真正的用户在操作浏览器一样。
  • Selenium也是一款同样使用Apache License 2.0协议发布的开源框架。
  • Selenium工具的主要功能包括:

         测试程序与浏览器的兼容性,测试你的应用程序是否能够很好得工作在不同浏览器和操作系统之上。
         测试系统功能,创建回归测试检验软件功能和用户需求。
 

2、selenium的特点

  1. 开源,免费
  2. 多浏览器支持:FireFox、Chrome、IE、Opera、Safari
  3. 多平台支持:linux、windows、MAC
  4. 多语言支持:java、python、ruby、php、C#、JavaScript等
  5. 对web页面有良好的支持
  6. 简单(API简单)、灵活(用开发语言驱动)
  7. 支持分布式测试用例执行
     

3、Selenium版本

从2004年至今,Selenium经历了3个版本,即Selenium1.0,Selenium2.0,Selenium3.0。

(1)Selenium1.0
Selenium 1.0包括:Selenium IDE、Selenium Grid、Selenium RC三部分。

  • Selenium IDE:是Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。生成测试用例,可将测试用例转换为其他语言的自动化脚本。如果没有编程经验,可以通过Selenium IDE来快速熟悉Selenium的命令。(只适用于火狐浏览器)
  • Selenium Grid:分布式测试。用于运行在不同的机器,不同的浏览器并行测试的工具,目的在于加快测试用例运行的速度,从而减少测试运行的总时间。利用Grid可以很方便地实现在多台机器上和异构环境中运行测试用例。
  • Selenium RC:Selenium RC是Selenium1.0核心部分。简单的说,Selenium RC的功能就是通过代码操作浏览器。
     

(2)Selenium2.0
Selenium 2.0 = Selenium 1.0 + WebDriver
WebDriver比Selenium RC功能强大且简单。WebDriver是通过原生浏览器支持或者浏览器扩展来直接控制浏览器。WebDriver针对各个浏览器而开发,使用不同浏览器都需要对应浏览器驱动,与浏览器紧密集成,因此支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持之外,WebDriver还利用操作系统级的调用,模拟用户输入。我们在使用WebDriver时,可以看到,是先启动了浏览器对应driver,通过浏览器driver启动浏览器。

(3)Selenium3.0(推荐)
Selenium 3.0在Selenium2.0的基础上有了更多的改进,支持的原生驱动方面更为丰富。
去掉了对SeleniumRC的支持。
JDK的最低版本要求为JDK8(只有在测试分布式的时候,才需要Java环境)。

(4)提示
Selenium 3.0在Selenium 2.0的基础上增加了对win10系统的Edge浏览器和Mac系统Safari浏览器的支持,并且在启动Firefox浏览器时也必须使用浏览器驱动geckodriver。去掉了Selenium RC,因此Selenium 3.0的学习核心也是WebDriver。

(5)Selenium组件总结

 

4、拓展:WebDriver与Selenium RC的区别

(1)Selenium RC
Selenium RC 使用的是javascript注入的方式跟浏览器打交道。这样Selenium RC 需要启动一个Server,然后将操作页面元素的API 转成javascript脚本,再把这段脚本注入到浏览器中去执行。而通过这种javascript注入的方式一来太依赖翻译成javascript质量的好坏,二来javascript存在同源问题。这使测试变得不那么容易。
总结:
 

  1. Selenium RC需要Selenium Server才能运行测试用例。
  2. Selenium RC使用JavaScript来驱动浏览器运行测试用例。
  3. Selenium RC只能支持Web应用的测试。
  4. Selenium RC能支持所有浏览器但并不能及时支持最新版本。

(2)WebDriver

与Selenium RC 不同的是Selenium WebDriver针对不同的浏览器进行独立开发Driver,利用浏览器的原生API去直接操作浏览器和页面元素,这样大大提高了测试的稳定性和速度。当然因为不同的浏览器对Web元素操作和呈现多多少少会存在一些差异,这也就造成现在不同的浏览器需要有对应不同的Driver。
总结:

  1. WebDriver不需要Selenium Server就可以运行测试用例。
  2. WebDriver独立使用原生浏览器来运行测试用例。
  3. WebDriver既可以测试传统桌面Web应用,也可以测试手机上的应用程序,如iPhone或Android上的app程序。
  4. WebDriver能支持大多数浏览器的最新版本。
     

总结:

 

5、Webdriver工作原理

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

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

相关文章

TPU-MLIR实战——ResNet18部署

1.编译ONNX模型 本章以 resnet18.onnx 为例, 介绍如何编译迁移一个onnx模型至BM1684X TPU平台运行。 该模型来自onnx的官网: models/vision/classification/resnet/model/resnet18-v1-7.onnx at main onnx/models GitHub 本例模型和代码在 http://219.142.246.77:65000//…

MySQL密码授权

目录 更改密码策略 方法1:临时修改​编辑 方法2:初始化时不启用​编辑 方法3:修改配置文件 远程登录 法一: 1、配置root密码(或 use mysql) 2、更新为所有主机 3、刷新权限表 法二:添加权限 更改密码策略 方法1:临时修改…

github中Mermaid的用法

这个东西是最近推出&#xff0c;首先是自己的repository中新建一个readme.md文件 需要一点前端的知识&#xff0c;就是先导入一个依赖文件&#xff0c;然后再写甘特图&#xff0c;如下&#xff1a; ### 甘特图 [<a href"https://mermaid-js.github.io/mermaid/#/gant…

【macOS 系列】如何在mac 邮件客户端配置QQ邮箱和第二个账号

文章目录 一、配置QQ邮箱二、添加新的账户 一、配置QQ邮箱 需要在QQ邮箱账户设置中开启&#xff1a; 开启时&#xff0c;会让你发短信到指定号码&#xff0c;然后就会弹出一个验证码 也就是添加邮箱的密码不是QQ密码&#xff0c;而是这个验证码&#xff0c;这个可以生成多个&…

Stable Diffusion WebUI 汉化 Ubuntu 22.04平台

当前状态 下载汉化扩展到extension目录 cd /home/yeqiang/Downloads/ai/stable-diffusion-webui/extensions https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN.git 重启webui 在Extensions中&#xff0c;查看状态&#xff0c;已经列出来汉化扩展 点击Se…

企业内部安全:利用 ADAudit Plus 管理与加强安全审计

在现代数字化时代&#xff0c;企业面临着日益复杂和不断变化的安全威胁。为了保护敏感数据、遵守合规要求以及防范内部威胁&#xff0c;企业需要有效的安全审计解决方案。ADAudit Plus 是一款强大而全面的安全审计工具&#xff0c;可以帮助企业管理和加强内部安全。 ADAudit Pl…

【分布式应用】Zabbix监控6.0

目录 一、Zabbix简介1.1监控软件的作用1.2zabbix是什么1.3zabix监控原理1.4 Zabbix6.0新特性1.4.1 Zabbix server高可用防止硬件故障或计划维护期的停机&#xff1a;1.4.2 Zabbix 6.0 LTS新增Kubernetes监控功能&#xff0c;可以在Kubernetes系统从多个维度采集指标&#xff1a…

15---三数之和

给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例 1&…

k8s1.19使用ceph15 rbd块存储

一、ceph集群操作 #创建rbd #创建存储池,指定pg和pgp的数量, pgp是对存在于pg的数据进行组合存储,pgp通常等于pg的值 # 创建存储池 ceph osd pool create kubernetes 128 128#对存储池启用 RBD 功能 ceph osd pool application enable kubernetes rbd#通过 RBD 命令对存储池…

《MySQL》对库进行操作(DDL语句)

文章目录 &#x1f4a1;创建库&#x1f4a1;修改库&#x1f4a1;删除库&#x1f4a1;备份库 学习DDL前&#xff0c;先掌握一下几个常用的查看指令 # 查看库 show databases; # 选中库 use [库名] # 查看连接情况 show processlist;&#x1f4a1;创建库 # &#xff08;如果不存…

TLS/SSL 协议

TLS/SSL 协议的工作原理 TLS/SSL 协议的工作原理 • 身份验证 • 保密性 • 完整 TLS/SSL 发展 TLS 协议 • Record 记录协议 • 对称加密 • Handshake 握手协议 • 验证通讯双方的身份 • 交换加解密的安全套件 • 协商加密参 TLS 安全密码套件解 对称加密的工作原理&am…

Leetcode1217. 玩筹码

Every day a Leetcode 题目来源&#xff1a; 解法1&#xff1a;贪心 首先很容易得出&#xff1a; 从某一个偶&#xff08;奇&#xff09;数位置改变到另一个偶&#xff08;奇&#xff09;数位置&#xff0c;此时的最小开销为 0&#xff1b;从某一个偶&#xff08;奇&#x…

剑指 Offer 57 - II: 和为s的连续正数序列

这里从0开始先然是不对的&#xff01;滑动窗口思想很好用&#xff0c;相等了必定移动左边&#xff01;让他变小&#xff01;这都想不到&#xff01; 首先看到返回值和题给条件明确这是一个滑动窗口任务/可变数组 &#xff0c;所以要使用List&#xff0c;然后其中元素又是数组&a…

新建vue3项目并启动访问(mac)

mac 安装、配置vue开发环境&新建vue项目并启动访问 一、 安装hbuilderx二、 安装node.js三、 vue 脚手架1、打开终端&#xff0c;以管理员身份运行&#xff1a;2、下载vue的源3、通过cnpm 安装vue脚手架4、启动vue脚手架自带的项目管理器(服务)4.1、创建空的vue项目4.2、安…

WeNet的Runtime编译与应用

一、下载visual studio 下载&#xff1a;百度输入 visual studio 官网&#xff0c;下载 visual studio并安装&#xff0c;安装完要配置环境变量&#xff0c;即把cmake路径配置进去 环境配置&#xff1a;将C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\ID…

【Python爬虫与数据分析】爬虫Json数据解析

目录 一、Json文件数据解析 二、Json数据包解析获取图片资源 三、Json数据包解析获取视频资源 一、Json文件数据解析 json字符串&#xff1a;通常类似python数据类型中的列表和字典的结合&#xff0c;也可能是单独的列表或者字典格式&#xff0c;通常可以通过json模块的函数…

蓝桥杯专题-真题版含答案-【连号区间数】【剪格子】【买不到的数目】【翻硬币】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

java获取文件夹里文件最近修改时间

概述 本人项目需要获取文件夹里面文件最近的修改时间&#xff0c;函数lastModified直接获取文件夹修改时间&#xff0c;达不到效果。 因此本人通过遍历文件夹文件&#xff0c;来一一比较获取最近的文件里面文件(夹)修改时间。原理简单&#xff0c;下面是所有的代码&#xff0c…

MySQL中这些关键字的用法,佬们get到了嘛

前言&#xff1a; 最近粉丝问了一个问题&#xff0c;是关于Limit分页的用法&#xff0c;他没有理解清楚&#xff0c;因此本篇文章主要讲解MySQL的关键字的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出&#xff0c…

MOdaHub魔搭社区:AI大模型应用落地的三大阻碍

目录 一是基于通用大模型研发行业大模型的难度。 二是私有数据的安全隐患。 三是落地成本的可控性。 To B 的探索并非现在才开始。自 ChatGPT 开放 API 插件以来&#xff0c;国内的多家云厂商在推出通用大模型时&#xff0c;也往往同步其对行业赋能的意愿。但大模型 To B 探…