Selenium 4新特性解析:关联定位器及其他创新功能

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 【10月更文挑战第6天】Selenium 是一个强大的自动化测试工具,广泛用于Web应用程序的测试。随着Selenium 4的发布,它引入了许多新特性和改进,使得编写和维护自动化脚本变得更加容易。本文将深入探讨Selenium 4的一些关键新特性,特别是关联定位器(Relative Locators),以及其他一些重要的创新功能。

Selenium 是一个强大的自动化测试工具,广泛用于Web应用程序的测试。随着Selenium 4的发布,它引入了许多新特性和改进,使得编写和维护自动化脚本变得更加容易。本文将深入探讨Selenium 4的一些关键新特性,特别是关联定位器(Relative Locators),以及其他一些重要的创新功能。
1111.png

关联定位器(Relative Locators)

在网页上,有时候我们很难直接通过ID、类名或CSS选择器来定位元素,特别是在动态生成的内容中。为了解决这个问题,Selenium 4引入了关联定位器,允许开发者基于页面上的其他元素来定位目标元素。

相对定位方法

  • above: 定位到某个元素上方的元素。
  • below: 定位到某个元素下方的元素。
  • to_left_of: 定位到某个元素左边的元素。
  • to_right_of: 定位到某个元素右边的元素。
  • near: 定位到靠近某个元素的元素。

示例代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.relative_locator import locate_with

driver = webdriver.Chrome()
driver.get("http://example.com")

# 假设我们要找到位于“Sign In”按钮右侧的输入框
sign_in_button = driver.find_element(By.ID, "signin-button")
search_input = driver.find_element(locate_with(By.TAG_NAME, "input").to_right_of(sign_in_button))

print(search_input.get_attribute("id"))  # 打印输入框的ID属性

在这个例子中,我们首先找到了“Sign In”按钮,然后使用to_right_of定位器来找到其右侧的输入框。

改进的WebDriver W3C标准支持

Selenium 4现在默认使用W3C WebDriver协议,这带来了一些底层的变化,并且提升了与现代浏览器的兼容性。例如,Capabilities和Actions API都进行了更新以符合W3C标准。

示例代码

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

capabilities = DesiredCapabilities.CHROME.copy()
capabilities['goog:chromeOptions'] = {
   
    'args': ['--headless', '--disable-gpu']
}

driver = webdriver.Chrome(desired_capabilities=capabilities)
driver.get("http://example.com")
print(driver.title)
driver.quit()

这里,我们指定了Chrome选项并启用了无头模式。

新窗口处理

在Selenium 4之前,切换到新打开的浏览器窗口可能会比较麻烦。现在,Selenium 4提供了一种更简洁的方式来处理新窗口。

示例代码

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("http://example.com")

# 打开一个新的标签页
driver.execute_script("window.open('');")
driver.switch_to.window(driver.window_handles[1])  # 切换到新的标签页
driver.get("http://another-example.com")  # 在新标签页加载另一个网站
print(driver.title)  # 打印新页面标题
driver.close()  # 关闭当前标签页
driver.switch_to.window(driver.window_handles[0])  # 切回原标签页

这段代码展示了如何打开新窗口,并在它们之间进行切换。

Chrome DevTools Protocol (CDP) 支持

Selenium 4还增加了对Chrome DevTools Protocol的支持,这意味着开发者可以直接与浏览器内部机制交互,获取性能数据、网络请求信息等。

示例代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
import json

options = webdriver.ChromeOptions()
service = ChromeService(executable_path='/path/to/chromedriver')

driver = webdriver.Chrome(service=service, options=options)

# 启用Performance日志
capabilities = options.to_capabilities()
capabilities['goog:loggingPrefs'] = {
   'performance': 'ALL'}
driver = webdriver.Chrome(service=service, desired_capabilities=capabilities)

driver.get("http://example.com")

# 获取所有性能日志条目
logs = driver.get_log('performance')
for log in logs:
    message = json.loads(log["message"])["message"]
    if "Network.response" in message["method"]:
        print(f"Response received: {message['params']['response']['url']}")

driver.quit()

这个示例显示了如何启用性能日志记录,并从这些日志中提取网络响应的信息。

结论

Selenium 4带来了许多令人兴奋的新特性,如关联定位器、改进的WebDriver W3C标准支持、新窗口处理以及对Chrome DevTools Protocol的支持。这些改进不仅简化了测试脚本的编写,而且提供了更多控制和灵活性。对于任何希望提高其自动化测试效率和可靠性的团队来说,升级到Selenium 4是一个值得考虑的选择。

通过上述示例,您应该能够开始探索Selenium 4的新功能,并将它们应用到您的项目中。随着更多实践和经验的积累,您可以进一步挖掘这些特性的潜力,创造出更加高效和强大的自动化解决方案。

目录
相关文章
|
4月前
|
弹性计算 运维 安全
优化管理与服务:操作系统控制平台的订阅功能解析
本文介绍了如何通过操作系统控制平台提升系统效率,优化资源利用。首先,通过阿里云官方平台开通服务并安装SysOM组件,体验操作系统控制平台的功能。接着,详细讲解了订阅管理功能,包括创建订阅、查看和管理ECS实例的私有YUM仓库权限。订阅私有YUM仓库能够集中管理软件包版本、提升安全性,并提供灵活的配置选项。最后总结指出,使用阿里云的订阅和私有YUM仓库功能,可以提高系统可靠性和运维效率,确保业务顺畅运行。
|
3月前
|
存储 前端开发 JavaScript
调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
本方案基于DeepSeek API增强版,提供纯前端实现的文件上传与内容解析功能。通过HTML和JavaScript,用户可选择文件并调用API完成上传及解析操作。方案支持多种文件格式(如PDF、TXT、DOCX),具备简化架构、提高响应速度和增强安全性等优势。示例代码展示了文件上传、内容解析及结果展示的完整流程,适合快速构建高效Web应用。开发者可根据需求扩展功能,满足多样化场景要求。
1213 64
|
2月前
|
数据采集 Web App开发 前端开发
Python+Selenium爬虫:豆瓣登录反反爬策略解析
Python+Selenium爬虫:豆瓣登录反反爬策略解析
|
4月前
|
人工智能 API 语音技术
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
250 31
|
4月前
|
供应链 监控 搜索推荐
反向海淘代购独立站:功能解析与搭建指南
“反向海淘”指海外消费者购买中国商品的现象,体现了中国制造的创新与强大。国产商品凭借高性价比和丰富功能,在全球市场备受欢迎。跨境电商平台的兴起为“反向海淘”提供了桥梁,而独立站因其自主权和品牌溢价能力逐渐成为趋势。一个成功的反向海淘代购独立站需具备多语言支持、多币种支付、物流跟踪、商品展示、购物车管理等功能,并通过SEO优化、社交媒体营销等手段提升运营效果。这不仅助力中国企业开拓海外市场,还推动了品牌全球化进程。
151 19
|
4月前
|
SQL 运维 监控
高效定位 Go 应用问题:Go 可观测性功能深度解析
为进一步赋能用户在复杂场景下快速定位与解决问题,我们结合近期发布的一系列全新功能,精心梳理了一套从接入到问题发现、再到问题排查与精准定位的最佳实践指南。
|
4月前
|
算法 前端开发 定位技术
地铁站内导航系统解决方案:技术架构与核心功能设计解析
本文旨在分享一套地铁站内导航系统技术方案,通过蓝牙Beacon技术与AI算法的结合,解决传统导航定位不准确、路径规划不合理等问题,提升乘客出行体验,同时为地铁运营商提供数据支持与增值服务。 如需获取校地铁站内智能导航系统方案文档可前往文章最下方获取,如有项目合作及技术交流欢迎私信我们哦~
242 1
|
4月前
|
JSON 自然语言处理 前端开发
WebSocket调试工具深度对比:Postman与Apipost功能实测解析
本文深入对比了Postman与Apipost两款WebSocket调试工具。作为实时通讯系统工程师,作者在开发智能客服系统时遇到了传统工具调试复杂、文档管理不便的问题。通过引入Apipost的智能连接池、消息分组管理和自动化文档生成等功能,实现了多环境自动切换、消息分类和接口文档自动生成,极大提升了调试效率和团队协作效果。最终,使用Apipost使接口调试时间减少40%,文档维护成本降低70%,跨团队沟通效率提升50%。
|
4月前
|
人工智能 搜索推荐 数据挖掘
销售易CRM:功能与优势全解析
销售易CRM是国内领先的客户关系管理系统,提供从线索获取到订单成交的完整销售漏斗管理,涵盖销售、客户、营销管理和AI赋能等功能。其强大的销售管理功能包括线索与商机管理、销售预测等;全方位客户管理实现360度客户视图;丰富的营销自动化工具支持多渠道营销活动;智能AI技术提升销售效率和客户满意度;灵活的开放性平台满足定制化需求;现代化界面设计简洁直观,支持多设备访问;移动端功能齐全,协同工具丰富;优质的客户服务确保快速响应和技术支持。销售易CRM助力企业优化业务流程,推动销售增长。
|
4月前
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。

热门文章

最新文章

推荐镜像

更多
  • DNS