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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 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的新功能,并将它们应用到您的项目中。随着更多实践和经验的积累,您可以进一步挖掘这些特性的潜力,创造出更加高效和强大的自动化解决方案。

目录
相关文章
|
1月前
|
数据可视化 数据挖掘 BI
团队管理者必读:高效看板类协同软件的功能解析
在现代职场中,团队协作的效率直接影响项目成败。看板类协同软件通过可视化界面,帮助团队清晰规划任务、追踪进度,提高协作效率。本文介绍看板类软件的优势,并推荐五款优质工具:板栗看板、Trello、Monday.com、ClickUp 和 Asana,助力团队实现高效管理。
57 2
|
18天前
|
搜索推荐 UED Python
实现一个带有昼夜背景切换的动态时钟:从代码到功能解析
本文介绍了一个使用Python和Tkinter库实现的动态时钟程序,具有昼夜背景切换、指针颜色随机变化及整点和半点报时功能。通过设置不同的背景颜色和随机变换指针颜色,增强视觉吸引力;利用多线程技术确保音频播放不影响主程序运行。该程序结合了Tkinter、Pygame、Pytz等库,提供了一个美观且实用的时间显示工具。欢迎点赞、关注、转发、收藏!
129 94
|
7天前
|
数据可视化 项目管理
项目计划与进度跟踪:甘特图的强大功能解析
甘特图是现代项目管理中不可或缺的工具,通过时间线和任务条直观展示项目进度,支持任务分解、依赖关系管理和进度跟踪。结合板栗看板,可实现任务可视化与实时协作,提升团队效率。定期更新甘特图并灵活应对变化,确保项目顺利推进。
|
1月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
18天前
|
人工智能 自然语言处理 搜索推荐
销售易、悟空、神州云动CRM:全方位功能解析与优势特色盘点
销售易CRM、悟空CRM和神州云动CRM各自具备独特的产品功能与优势,适用于不同类型的企业。销售易CRM提供移动化、社交化和AI驱动的全流程管理,适合大型企业及跨国公司;悟空CRM以智能数据分析和移动办公支持见长,适合中大型企业;神州云动CRM则凭借灵活定制和多行业适配能力,特别适合大中型企业。企业在选择时应根据自身需求和发展战略,挑选最适合的CRM系统,以实现客户关系管理的最大化效益。
|
1月前
|
存储 数据库 对象存储
新版本发布:查询更快,兼容更强,TDengine 3.3.4.3 功能解析
经过 TDengine 研发团队的精心打磨,TDengine 3.3.4.3 版本正式发布。作为时序数据库领域的领先产品,TDengine 一直致力于为用户提供高效、稳定、易用的解决方案。本次版本更新延续了一贯的高标准,为用户带来了多项实用的新特性,并对系统性能进行了深度优化。
48 3
|
1月前
|
供应链 数据可视化 数据挖掘
企业服务品牌深度解析:销售易、用友、白码功能与特色对比
在企业服务领域,销售易、用友、白码等品牌凭借独特的产品和解决方案占据重要地位。销售易专注于CRM,提供客户管理、销售自动化、市场营销等功能,提升销售效率与客户满意度。用友作为领先的企业服务提供商,涵盖ERP、财务管理、人力资源管理等,助力企业资源优化配置。白码则以低代码开发平台为核心,支持快速构建业务应用,具备高度可定制化和易于维护的特点。三者各具特色,共同推动企业数字化转型。
|
1月前
|
存储 安全 数据安全/隐私保护
深入解析iOS 14隐私保护功能:用户数据安全的新里程碑
随着数字时代的到来,个人隐私保护成为全球关注的焦点。苹果公司在最新的iOS 14系统中引入了一系列创新的隐私保护功能,旨在为用户提供更透明的数据使用信息和更强的控制权。本文将深入探讨iOS 14中的几项关键隐私功能,包括App跟踪透明性、简化的隐私设置以及增强的系统安全性,分析它们如何共同作用以提升用户的隐私保护水平。
155 3
|
2月前
|
编译器 PHP 开发者
PHP 8新特性解析与实战应用####
随着PHP 8的发布,这一经典编程语言迎来了诸多令人瞩目的新特性和性能优化。本文将深入探讨PHP 8中的几个关键新功能,包括命名参数、JIT编译器、新的字符串处理函数以及错误处理改进等。通过实际代码示例,展示如何在现有项目中有效利用这些新特性来提升代码的可读性、维护性和执行效率。无论你是PHP新手还是经验丰富的开发者,本文都将为你提供实用的技术洞察和最佳实践指导。 ####
45 1
|
2月前
|
数据安全/隐私保护 iOS开发 开发者
iOS 14隐私保护新特性深度解析####
随着数字时代的到来,隐私保护已成为全球用户最为关注的问题之一。苹果在最新的iOS 14系统中引入了一系列创新功能,旨在增强用户的隐私和数据安全。本文将深入探讨iOS 14中的几大隐私保护新特性,包括App跟踪透明度、剪贴板访问通知和智能防追踪功能,分析这些功能如何提升用户隐私保护,并评估它们对开发者和用户体验的影响。 ####

推荐镜像

更多