我们非常高兴地宣布Selenium 4的发布。这适用于Java、.net、Python、Ruby和Javascript。你可以从你最喜欢的包管理器或GitHub下载它!

https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.0.0

如果您已经是一个Selenium用户,那么这个更新应该很简单,只需改变依赖从3.x切换4.0.0即可。我们一直在努力确保这是一个无痛升级,重点是保持公共API尽可能稳定。

当然,我们已经做了一些更改,所以如果您依赖于那些标记为Selenium内部的代码,或者那些已弃用的代码,那么您可能会遇到一些问题。请查看我们的文档,了解如何处理我们所知道的每个常见问题。

https://www.selenium.dev/documentation/getting_started/how_to_upgrade_to_selenium_4/

Selenium4 不仅仅是一个稳定的版本!它带来了一大堆新的和令人兴奋的特性,我们希望这些特性将使您的测试编写起来更加有趣!运行时更稳定!让我们来看看其中的一些新功能!

相对定位器

我们已经介绍了相对定位器。它们允许您使用人们也使用的语言指定在页面上可以找到元素的位置;比如在那个元素之上,或者在另一个元素的右边。这将为您提供一种工具来应对复杂定位器,使您的测试读起来更清楚一些,并更能适应页面DOM的变化。我们不是第一个想到这个主意的人——这个荣誉属于Sahi(注:Sahi一款web自动化工具)——但如果你以前没有用过,我们希望你喜欢!

from selenium.webdriver.common.by import By
from selenium.webdriver.support.relative_locator import locate_with passwordField = driver.find_element(By.ID, "password")
emailAddressField = driver.find_element(locate_with(By.TAG_NAME, "input").above(passwordField))

above() 用于要查找的元素在指定元素的上方。

基于Firefox/Chromium的新功能

如果你使用的是火狐或源自于Chromium的浏览器,我们也增加了一大堆新功能。这些方法包括处理“基本”和“摘要”身份验证;网络监听(Are you an HTTP 418?);以及执行常见请求的任务,如等待DOM的更新,或提供查看Javascript错误的方法。

  • 认证
const {Builder} = require('selenium-webdriver');

(async function example() {
try {
let driver = await new Builder()
.forBrowser('chrome')
.build(); const pageCdpConnection = await driver.createCDPConnection('page');
await driver.register('username', 'password', pageCdpConnection);
await driver.get('https://the-internet.herokuapp.com/basic_auth');
await driver.quit();
}catch (e){
console.log(e)
}
}())

注:python 没有register() 方法,目前还不确定是否为bug。

  • Are you an HTTP 418?

这就是个玩笑。IETF在1998年愚人节时发布的一个笑话RFC,具体可以参考RFC 2324 - Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)超文本咖啡壶控制协议。htcpcp1.0协议中的418的意义是:当客户端给一个茶壶发送泡咖啡的请求时,茶壶就返回一个418错误状态码,表示"我是一个茶壶" 或者 "我是个杯具"。

  • 等待DOM的更新
const {Builder, until} = require('selenium-webdriver');
const assert = require("assert"); (async function example() {
try {
let driver = await new Builder()
.forBrowser('chrome')
.build(); const cdpConnection = await driver.createCDPConnection('page');
await driver.logMutationEvents(cdpConnection, event => {
assert.deepStrictEqual(event['attribute_name'], 'style');
assert.deepStrictEqual(event['current_value'], "");
assert.deepStrictEqual(event['old_value'], "display:none;");
}); await driver.get('dynamic.html');
await driver.findElement({id: 'reveal'}).click();
let revealed = driver.findElement({id: 'revealed'});
await driver.wait(until.elementIsVisible(revealed), 5000);
await driver.quit();
}catch (e){
console.log(e)
}
}())

我们以一种与现有api相适应的方式添加了这些新特性。没有必要重写您的测试:只要在您觉得合适的时候使用新特性即可。

Selenium Grid

我们还重建了Selenium Grid,借鉴了Zalenium和Selenoid等成功项目的经验,以增强其能力。这个新的Grid就像在传统的HubNode配置中一样,可以在单台机器上运行单个进程,但它也支持完全分布式模式,用于运行Kubernetes的现代基础设施。它具有更好的内置安全性,因为我们知道保护Grid可能是一项困难的任务。在所有这些规模和大小,我们添加到语言绑定的所有新特性都将按照预期工作。

Grid还可以管理本地机器上的Docker容器,拉出独立的firefox服务器之类的图像,这样您的基础设施维护就会稍微轻松一些。

最后,Grid更容易管理。我们修改了UI,将其置于GraphQL模型之上,任何人都可以自由查询并使用它来创建自己的Grid可视化或监视器。如果您想查看正在运行的会话,可以打开并与之交互的实时VNC(虚拟网络计算机)预览,从而更好地了解正在发生的事情。如果你想要更多的信息,我们已经在网格中集成了对OpenTelemetry的支持,所以现在你可以确切地知道发生了什么,在哪里,什么时候。

感谢

我知道说这是一种“非常愉快”的陈词滥调,但说实话,这是真的。开发这个新版本的Selenium是一个与一些了不起的工程师一起工作的机会,也是一个充满活力和活力的社区的一部分。与这些人一起编写这些代码非常有趣,在这里向尽可能多的人说“谢谢”感觉是正确的。所以,不用再等了。

最后

本文试着对《Announcing Selenium 4》进行了简单的翻译,本来怀着激动的心情来的,结果当我一一验证这些新特性的时候,非常糟糕!这特么就是打磨这么久出的 4.0 正式版。

  1. python(Selenium)API缺失。
  2. 官方文档的例子不完整,还有错误。

https://github.com/SeleniumHQ/seleniumhq.github.io/issues/800

selenium 4.0 发布的更多相关文章

  1. selenium 3.0发布

    记得3年前selenium core team就放出风声selenium3.0将在某个圣诞节发布,然而大家等了3年,就在所有人都不再关注selenium进度的时候,selenium3.0 beta1悄 ...

  2. Selenium 4即将发布:每个QA都应该知道的

    阅读原文 Simon Stewart(Selenium的创始成员)在班加罗尔的Selenium大会议上正式确认了Selenium4.0的发布日期和一些主要更新.我们先来提前了解一下Selenium 4 ...

  3. selenium V1.0和V2.0差别对比

    Selenium 1.0 Selenium 1.0版本,就是大家所熟知的Selenium RC,其中 RC 是 Remote Control 的缩写.Selenium RC 的工作原理是 利用 Jav ...

  4. Selenium WebDriver 2.34.0 发布,支持Firefox22

    Selenium WebDriver 2.34.0 发布,支持Firefox22http://automationqa.com/forum.php?mod=viewthread&tid=270 ...

  5. 【译】Selenium 2.0 WebDriver

    Selenium WebDriver   注意:我们正致力于完善帮助指南的每一个章节,虽然这个章节仍然存在需要完善的地方,不过我们坚信当前你看到的帮助信息是精确无误的,后续我们会提供更多的指导信息来完 ...

  6. Selenium 2.0与Selenum 3.0介绍

    什么是Selenium Selenium是一组web自动化测试工具集,它由以下几个部分构成: Selenium IDE(Integrated Development Environment)这是Fir ...

  7. Selenium 4.0 Alpha更新日志

    早在2018年8月,整个测试自动化社区就发生了一件重大新闻:Selenium的创始成员Simon Stewart在班加罗尔Selenium会议上正式确认了Selenium 4的发布日期和一些重要更新. ...

  8. selenium 3.0 beta2 初体验

    经过漫长的等待,终于迎来了selenium 3.0 从selenium 1.0 至今,差不多有十多年的历史.这个月终于迎来了selenium3.0 那么selenium3.0 为我们带来了什么? 看一 ...

  9. Visual Studio Code 1.0发布,支持中文在内9种语言

    Visual Studio Code 1.0发布,支持中文在内的9种语言:Simplified Chinese, Traditional Chinese, French, German, Italia ...

随机推荐

  1. Python:MySQL拒绝从远程访问的解决方法

    MySQL连接数据库 #!/usr/bin/python # -*- coding: UTF-8 -*- import pymysql # 打开数据库连接 db = pymysql.connect(& ...

  2. Linux中MySQL的安装以及卸载

    一.MySQL MySQL是一种开放源代码的关系型数据库管理系统,开发者为瑞典MySQL AB公司.在2008年1月16号被Sun公司收购.而2009年,SUN又被Oracle收购.目前 MySQL被 ...

  3. tomcat配置启动不了

    关于ideatomcat配置问题 1.第一步配置tomcat启动器 2.配置启动的网址 3.配置启动器的启动 ---更多java学习,请见本人小博客:https://zhangjzm.gitee.io ...

  4. SSH整合(二)

    SSH框架实现登录.新闻增删改查.树形菜单 项目结构 pom.xml 网不好不要一次引入太多,容易下不全 <project xmlns="http://maven.apache.org ...

  5. fetch ios低版本兼容cannot clone a disturbed response

    报错信息 ios 11以下 cannot clone a disturbed response github.com/github/fetc- 问题发生场景 使用了一个或者多个三方库 三方库或者自己的 ...

  6. Spring Cloud Eureka 实践(二)

    接上一篇的内容,Eureka服务已经启动成功后,可以尝试开发服务的提供者与消费者,并注册到Eureka来实现服务的发现与调用. 首先,在父工程中继续创建服务提供者的Module,最新的目录结构如下图所 ...

  7. CSS003. 盒子水平垂直居中简写属性(place-items)

    place-items  CSS 中的 place-items 是一个简写属性 ,它允许你在相关的布局(如 Grid 或 Flexbox)中可以同时沿着块级和内联方向对齐元素 (例如:align-it ...

  8. 清除router路由后面的参数

    清除router参数: 1.this.$router.push({ query: {}}) 2.var path = this.$route.path; //获取路由路径    this.$route ...

  9. djang2.1教育平台02

    在次申明,之所以重做这个资料是因为原幕课教程漏洞太多,新手根本没有办法正常照些学习,我凭着老男孩python 课程基础,重做这个教程 ,更改版本为当前最新版本,为了方法以后的人学习,并不是照着原文照  ...

  10. 洛谷P1088——火星人(全排列+数学模拟)

    题目描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学 ...