Selenium4 IDE,它终于来了
❝新版的Selenium4 IDE,更强,更全,更好用。 ❞
在之前的文章我介绍了,Selenium4.0的更新路线,其中提到了Selenium IDE的发展。
- Selenium 4 Java的最佳测试框架
- Selenium 4.0 Alpha更新日志
- Selenium 4.0 Alpha更新实践
- JUnit 5和Selenium基础(一)
- JUnit 5和Selenium基础(二)
- JUnit 5和Selenium基础(三)
Chrome的「Selenium IDE」支持现已可用。可以从以下网址下载它:https://selenium.dev/selenium-ide/
众所周知,「Selenium IDE」是一种记录和回放工具。现在它将具有以下更丰富和高级的功能:
- 新的插件系统。任何浏览器都可以轻松插入新的Selenium IDE。您将能够拥有自己的定位器策略和Selenium IDE插件。新的CLI运行器。它将完全基于NodeJS,而不是基于HTML的旧运行器,并将具有以下功能:
- WebDriver播放。新的Selenium IDE运行程序将完全基于WebDriver。
- 并行执行。新的CLI运行器还将支持并行测试用例执行,并将提供有用的信息,例如花费的时间,通过和失败的测试用例。
主角Selenium4 IDE
早期的测试人员通常会避免使用「Selenium IDE」等记录和重播工具进行自动化测试,而宁愿选择使用Selenium Webdriver
,WebDriverIO
,Cypress
等脚本框架。毕竟,为什么不使用这些工具,事实证明它们是更有效,对测试的帮助更多!
尽管「Selenium IDE」提供了易用性,但它仍然存在很多问题,它不支持跨浏览器测试,运行并行测试等等。这就是原因,当「Selenium IDE」的开发于2017年停止更新时,许多测试人员都对「Selenium IDE」死亡并不感到惋惜。
但是,随着「Selenium4 IDE」再次受到关注并且其使用率逐渐增加,这种情况最近有所改变。原因是「Selenium4 IDE」克服了以前的局限性,现在支持跨浏览器测试
、并行测试
、脚本注入
、debug调试
、CI/CD
等等!
Selenium IDE历史回顾
「Selenium IDE」于2006年推出,是一种用于开发Selenium测试用例的记录和重播工具。Selenium IDE
易于上手,因为不需要任何特殊设置和基础。要开始使用「Selenium IDE」进行Selenium
测试自动化,只需要为相应的浏览器安装扩展(或附加组件)。Selenium IDE
提供了一个GUI,用于记录与网站的交互。
尽管「Selenium IDE」先前仅适用于Firefox,但现在也适用于Chrome。「Selenium IDE」的最新版本是3.17.0。可以使用下面的链接下载Selenium IDE的Chrome和Firefox扩展。
- Selenium IDE的Chrome扩展:https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd?hl=en
- Selenium IDE的Firefox插件:https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/
安装扩展后,就可以开始记录测试。与网站的交互被记录并归类为以下几类:命令、目标对象、值、说明(可选)。
欢迎页
主页面
Selenium4 IDE的主要功能
「Selenium4 IDE」是一个易于使用的工具,可提供即时反馈,并可以使用「Selenium IDE」的SIDE文件
(或命令行)运行器在任何浏览器+操作系统组合上运行测试。
以下是一些关键功能:
- 执行测试(和测试套件):Selenium4 IDE可以执行特定的测试或包含一组测试的完整测试套件。
- 跨浏览器测试:它可以用于自动浏览器测试,因为可以使用
SIDE文件
运行器执行跨浏览器测试。 - 调试:设置断点并暂停异常,可以很容易地从
IDE
本身调试测试。 - 丰富的命令集:
Selenium4 IDE
支持许多命令,这些命令可用于处理断言、插入脚本、创建循环等。 - 逻辑控制:「Selenium4 IDE」具有广泛的命令集,可启用控制流结构。
if
、if..else
、while
等命令有助于从IDE
执行条件判断的测试。 - 测试用例重用:运行命令使您可以在另一个测试用例(或测试套件)中重用特定的测试用例。
-
Selenese
命令的分组:「Selenium4 IDE」支持Selenese
命令(或Selenium
命令集)的分组,可以运行测试,一系列Selenese
命令构成一个测试脚本。 - 轻松修改和比较测试用例–使用「Selenium4 IDE」创建的测试脚本存储为
JSON
文件。这样可以轻松比较,修改和检查测试。
下面显示了我们的「Selenium4 IDE」教程录制了一个使用必应搜索「FunTester」的教程,随手点击一个链接进去。
{
"id": "ab514091-68ca-4b4c-a232-587a0b82fcaa",
"version": "2.0",
"name": "FunTester",
"url": "https://cn.bing.com",
"tests": [{
"id": "e34fd206-9ab8-4a6c-a543-0f80d1ba3fe9",
"name": "FunTester",
"commands": [{
"id": "92e8a427-e37e-4c6b-88c4-718d4e6c606e",
"comment": "",
"command": "open",
"target": "/",
"targets": [],
"value": ""
}, {
"id": "780adf28-4694-4c22-bfd1-74e09bf80775",
"comment": "",
"command": "setWindowSize",
"target": "1680x1027",
"targets": [],
"value": ""
}, {
"id": "2d8284e8-8475-4d75-9740-b407d6317b95",
"comment": "",
"command": "click",
"target": "id=sb_form_q",
"targets": [
["id=sb_form_q", "id"],
["name=q", "name"],
["css=#sb_form_q", "css:finder"],
["xpath=//input[@id='sb_form_q']", "xpath:attributes"],
["xpath=//form[@id='sb_form']/div/input", "xpath:idRelative"],
["xpath=//input", "xpath:position"]
],
"value": ""
}, {
"id": "ddd0e97d-6474-4a3e-a260-02f3a573f84f",
"comment": "",
"command": "type",
"target": "id=sb_form_q",
"targets": [
["id=sb_form_q", "id"],
["name=q", "name"],
["css=#sb_form_q", "css:finder"],
["xpath=//input[@id='sb_form_q']", "xpath:attributes"],
["xpath=//form[@id='sb_form']/div/input", "xpath:idRelative"],
["xpath=//input", "xpath:position"]
],
"value": "FunTester"
}, {
"id": "959e1353-de22-4997-9b26-3ed02a55d3d6",
"comment": "",
"command": "sendKeys",
"target": "id=sb_form_q",
"targets": [
["id=sb_form_q", "id"],
["name=q", "name"],
["css=#sb_form_q", "css:finder"],
["xpath=//input[@id='sb_form_q']", "xpath:attributes"],
["xpath=//form[@id='sb_form']/div/input", "xpath:idRelative"],
["xpath=//input", "xpath:position"]
],
"value": "${KEY_ENTER}"
}, {
"id": "d964cc49-1d76-41e2-b2aa-e0ad34da2999",
"comment": "",
"command": "click",
"target": "linkText=FunTester - 知乎",
"targets": [
["linkText=FunTester - 知乎", "linkText"],
["css=.b_algo:nth-child(5) > h2 > a", "css:finder"],
["xpath=//a[contains(text(),'FunTester - 知乎')]", "xpath:link"],
["xpath=//ol[@id='b_results']/li[5]/h2/a", "xpath:idRelative"],
["xpath=//a[contains(@href, 'https://www.zhihu.com/people/ba-yin-xian/posts')]", "xpath:href"],
["xpath=//li[5]/h2/a", "xpath:position"],
["xpath=//a[contains(.,'FunTester - 知乎')]", "xpath:innerText"]
],
"value": "",
"opensWindow": true,
"windowHandleName": "win2584",
"windowTimeout": 2000
}]
}],
"suites": [{
"id": "5915a8a1-cce3-42f9-ad68-5022d7fcfc1f",
"name": "Default Suite",
"persistSession": false,
"parallel": false,
"timeout": 300,
"tests": ["e34fd206-9ab8-4a6c-a543-0f80d1ba3fe9"]
}],
"urls": ["https://cn.bing.com/"],
"plugins": []
}
对于需要进行自动浏览器测试的测试人员,「Selenium4 IDE」是一个非常值得探索的选择。
关于「Selenium4 IDE」的新特性,如果各位有需求的话,我会逐个更新简单的入门讲解,由于本人现在主要从事服务端的测试工作,对于「Selenium4 IDE」后面的高阶功能,如:并行测试、分布式兼容性测试等等略显有心无力,可能更新会比较慢。
- 如何在Redhat7.3安装CDH5.14
- CDSW1.3的新功能
- 如何在Hue中配置HiveServer2的负载均衡
- 如何修改CDH集群的IP地址
- 如何在Kerberos环境的CDH集群部署Livy
- 如何在Kerberos环境下使用Haproxy实现HiveServer2负载均衡
- Hive与Impala的关键字
- 如何通过Livy的RESTful API接口向非Kerberos环境的CDH集群提交作业
- 如何编译Livy并在非Kerberos环境的CDH集群中安装
- Livy,基于Apache Spark的开源REST服务,加入Cloudera Labs
- 如何在RedHat7上使用Bind搭建DNS服务
- 如何在Redhat7.3的CDH5.14中启用Kerberos
- 如何使用SAML配置Cloudera Manager的身份验证
- 如何使用Shibboleth搭建IDP服务并集成OpenLDAP
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试官问我啥是OAuth 2.0,两个案例讲懂他~
- 年轻代频繁ParNew GC,导致http服务rt飙高
- JWT 使用 nimbus-jose-jwt 进行解码
- linux centos7 编译安装python3 --shell脚本
- Qt音视频开发36-USB摄像头解码qcamera方案
- JS中属性描述符
- CSS3实现彩色炫酷文字
- 动态import来拆分代码后发布问题
- webpack中动态import()打包后的文件名称定义
- springboot通过javaconfig配置jackson
- ASR6505 LoRaWAN通信(二)
- PHP下ajax跨域的解决方案之jsonp实例分析
- PHP终止脚本执行的实例代码
- leetcode之有多少小于当前数字的数字
- HTTP/2内核剖析