软件测试|web自动化测试神器playwright教程(三十七)

简介: 软件测试|web自动化测试神器playwright教程(三十七)

image.png

使用Playwright的highlight()方法突出显示Web元素

简介

Playwright是一个强大的自动化测试工具,可以与Python集成,用于测试Web应用程序和执行自动化任务。其中,highlight()方法是Playwright的一个有用功能,可以突出显示Web页面上的元素,方便调试和可视化操作。本文将介绍Playwright库中的highlight()方法,以及如何使用Python进行集成和应用。

问题

我们在日常工作中,有时会遇到一个定位表达式,会同时定位到多个元素的可能,并且,有的元素是不可见的,这样一来,容易导致我们的测试用例执行失败,那么我们如何在调试定位的时候就让我们定位到的全部元素都比较直观的展示在我们眼前呢?selenium需要我们逐一去查看,而playwright就直接提供了一个高亮的方法来突出展示web页面上的元素。

实际示例

我们以百度首页为例,比如我们要定位百度首页的新闻元素,并且进行点击,那么我们的脚本应该如下:

from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://www.baidu.com/")
    page.get_by_text("新闻").click()
    page.wait_for_timeout(10000)
    context.close()
    browser.close()
with sync_playwright() as playwright:
    run(playwright)

脚本运行结果如下:

playwright._impl._api_types.Error: Error: strict mode violation: get_by_text("新闻") resolved to 3 elements:
    1) <a target="_blank" href="http://news.baidu.com" cla…>新闻</a> aka get_by_role("link", name="新闻")
    2) <span class="text-color">互联网新闻信息服务许可证11220180008</span> aka get_by_role("paragraph").filter(has_text="互联网新闻信息服务许可证11220180008").locator("span")
    3) <span class="text-color">互联网新闻信息服务许可证11220180008</span> aka locator("div").filter(has_text="京ICP证030173号互联网新闻信息服务许可证11220180008").locator("span")

=========================== logs ===========================
waiting for get_by_text("新闻")
============================================================

我们可以发现,脚本运行报了发现多个元素,导致我们的点击操作报错。如果我们能在编写脚本之前就发现多个元素的问题,那么我们就能避免这个报错,这个时候我们需要引入playwright的元素高亮的操作,让我们的表达式找出的元素都高亮显示,我们就能知道我们需要的是哪个元素了。

highlight 操作

playwright提供了highlight()方法来帮助我们进行调试,等到代码正常运行时,我们其实不需要元素高亮。实现高亮的代码如下:

from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://www.baidu.com/")
    page.get_by_text("新闻").highlight()
    page.wait_for_timeout(10000)
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

运行代码,界面如下:

image.png

总结

本文主要介绍了在代码调试阶段使用highlight()方法使得元素高亮显示,帮助我们确认定位代码是否有问题,灵活使用高亮显示,可以提高我们的工作效率!

相关文章
|
22天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
75 19
Selenium IDE:Web自动化测试的得力助手
|
24天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
142 17
Selenium:强大的 Web 自动化测试工具
|
23天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE是开源的Web自动化测试工具,适用于Chrome、Firefox等多款浏览器。它提供简单的录制与回放功能,用户可通过录制浏览器操作自动生成测试脚本,支持导出为多种编程语言,便于非专业测试人员快速上手,有效提升测试效率与质量。
177 6
Selenium IDE:Web自动化测试的得力助手
|
2月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
2月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
34 4
|
3月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
171 3
|
28天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
199 45
|
2月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
34 7
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。