我们非常高兴地宣布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. Spring之BeanFactory:解析getBean()方法

    初探getBean()方法 在使用Spring的时候可以通过如下方式调用getBean方法来获取某个Bean: User user = context.getBean(User.class); Abs ...

  2. python3 爬虫五大模块之四:网页解析器

    Python的爬虫框架主要可以分为以下五个部分: 爬虫调度器:用于各个模块之间的通信,可以理解为爬虫的入口与核心(main函数),爬虫的执行策略在此模块进行定义: URL管理器:负责URL的管理,包括 ...

  3. 三剑客之awk 逐行读取

    目录: 一.awk工作原理 二.按行输出文本 三.按字段输出文本 四.通过管道,双引号调用shall命令 五.CPU使用率 六.使用awk 统计 httpd 访问日志中每个客户端IP的出现次数 一.a ...

  4. JD 评论晒图爬虫

    JD 评论晒图爬虫 #coding=utf-8 import requests import re import os __author__ = 'depy' """ j ...

  5. 密码学系列之:bcrypt加密算法详解

    目录 简介 bcrypt的工作原理 bcrypt算法实现 bcrypt hash的结构 hash的历史 简介 今天要给大家介绍的一种加密算法叫做bcrypt, bcrypt是由Niels Provos ...

  6. mybatis整理笔记

    以下是idea2018辑编器 新建 Maven工程 1  file ->new ->project 新建后编程器在右下角加载插件.,这个时候需要会儿,  加载好后,软件目录会多一个ja包 ...

  7. vue-cookies使用

    一.安装 vue-cookies npm install vue-cookies --save 二.引入并声明使用 import Vue form 'Vue' import VueCookies fr ...

  8. Jenkins 进阶篇 - 任务关联

    有时候我们的一个任务里面会进行很多的步骤,例如构建一个后端的 Java 服务,可能会有代码静态扫描,静态扫描通过后会打包成 jar 或者 war 文件,打包成功后可能还会对制品进行存档备份,然后可能会 ...

  9. Postman 如何调试加密接口?

    大家好,我是安果! 众所周知,Postman 是一款非常流行且易用的 API 调试工具,在接口调试或测试时经常被使用针对普通 API 接口,我们可以直接在 Postman 中输入 URL.Query ...

  10. 替代jquery中的几个函数

    // https://open.alipay.com/developmentAccess/developmentAccess.htm var $ = window.jQuery; (function( ...