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

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

image.png

前言

我们在使用selenium进行web自动化测试工作时,有时需要通过添加显式等待的方式,判断元素是否可见或者是否可以点击,其实这些元素属性也可以用于断言中,playwright同样可以去获取元素的状态,用于我们的后续操作或者断言中。本篇文章就来给大家介绍一下playwright对元素状态的判断。

常见的元素状态判断方法

playwright提供了3种方式去获取元素状态并进行判断,分别是page对象调用判断方法,locator对象调用判断方法,元素句柄判断方法。

  1. page对象调用的判断方法, 传一个selector 定位参数

    • page.is_checked(selector: str) # checkbox or radio 是否选中
    • page.is_disabled(selector: str) # 元素是否可以点击或编辑
    • page.is_editable(selector: str) # 元素是否可以编辑
    • page.is_enabled(selector: str) # 是否可以操作
    • page.is_hidden(selector: str) # 是否隐藏
    • page.is_visible(selector: str) # 是否可见
  2. locator 对象调用的判断方法

  • locator.is_checked()
  • locator.is_disabled()
  • locator.is_editable()
  • locator.is_enabled()
  • locator.is_hidden()
  • locator.is_visible()
  1. 元素句柄的判断方法
  • element_handle.is_checked()
  • element_handle.is_disabled()
  • element_handle.is_editable()
  • element_handle.is_enabled()
  • element_handle.is_hidden()
  • element_handle.is_visible()

注:元素句柄(element_handle)是通过page.query_selector()方法调用返回的ElementHandle ,这种方法不常用。

locator 定位后判断元素

locator 对象调用的判断方法

  • locator.is_checked()
  • locator.is_disabled()
  • locator.is_editable()
  • locator.is_enabled()
  • locator.is_hidden()
  • locator.is_visible()

is_checked() 用于判断checkbox or radio 的状态是否被选中,示例的html文件如下:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
</head>
       <div>
           <label>运动:
               <input type="radio" name="sports" id="football" checked>足球
               <input type="radio" name="sports" id="table tennis">乒乓球
               <input type="radio" name="sports" id="basketball" disabled>篮球
           </label>
       </div>
       <div>
           <label>标签:
               <input type="checkbox" id="a1"> 运动
               <input type="checkbox" id="a2">看书
               <input type="checkbox" id="a3" checked >休息
               <input type="checkbox" id="a4" checked disabled>吃饭
           </label>
       </div>
</body>
</html>

image.png

使用locator方法判断元素属性,代码如下:

from playwright.sync_api import sync_playwright


with sync_playwright() as pw:
    browser = pw.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("page.html")
    print(page.locator('#football').is_checked())
    print(page.locator('#football').is_enabled())
    print(page.locator('#basketball').is_checked())
    print(page.locator('#basketball').is_enabled())
----------------------------------------------------

输出结果如下:
True
True
False
False

page对象调用判断

page对象调用的判断方法, 传一个selector 定位参数

  • page.is_checked(selector: str) # checkbox or radio 是否选中
  • page.is_disabled(selector: str) # 元素是否可以点击或编辑
  • page.is_editable(selector: str) # 元素是否可以编辑
  • page.is_enabled(selector: str) # 是否可以操作
  • page.is_hidden(selector: str) # 是否隐藏
  • page.is_visible(selector: str) # 是否可见

仍然使用上述的HTML文件为例,代码如下:

from playwright.sync_api import sync_playwright


with sync_playwright() as pw:
    browser = pw.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("page.html")
    print(page.is_checked('#a3'))
    print(page.is_enabled('#a3'))
    print(page.is_checked('#a4'))
    print(page.is_enabled('#a4'))
-------------------------------------------
输出结果如下:
True
True
True
False

总结

本文主要介绍了playwright判断元素状态的方法,判断元素状态为我们的自动化工作提供了很好的依据,不管是操作元素还是进行断言,元素状态都可以为我们提供依据。

相关文章
|
7天前
|
敏捷开发 机器学习/深度学习 Java
Java中的异常处理机制深入理解与实践:持续集成在软件测试中的应用探索自动化测试在敏捷开发中的关键作用
【4月更文挑战第29天】在Java编程中,异常处理是一个重要的概念。它允许开发者在程序执行过程中遇到错误或异常情况时,能够捕获并处理这些异常,从而保证程序的稳定运行。本文将详细介绍Java中的异常处理机制,包括异常的分类、异常的处理方式以及自定义异常等内容。 【4月更文挑战第29天】 随着敏捷开发和DevOps文化的兴起,持续集成(CI)已成为现代软件开发周期中不可或缺的一环。本文将探讨持续集成在软件测试领域内的关键作用、实施策略以及面临的挑战。通过对自动化构建、测试用例管理、及时反馈等核心要素的详细分析,揭示持续集成如何提高软件质量和加速交付过程。 【4月更文挑战第29天】 在当今快速发
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:智能化测试用例生成策略
【4月更文挑战第28天】 随着软件开发的复杂性不断增加,传统的软件测试方法面临巨大挑战。为了提高测试覆盖率并确保软件质量,需要投入大量的时间和资源去设计、执行和维护测试用例。本文探讨了一种基于人工智能(AI)技术的智能化测试用例生成策略,该策略能够自动识别关键的测试路径,动态调整测试用例,并优化测试集合。通过引入智能化工具和算法,显著提升了软件测试过程的效率和有效性。
|
9天前
|
测试技术
【测试】优化软件测试:有效测试用例设计的关键
【测试】优化软件测试:有效测试用例设计的关键
|
9天前
|
jenkins 测试技术 持续交付
深入探索软件测试中的持续集成与自动化测试实践
【4月更文挑战第27天】 在当今软件开发的快速迭代过程中,持续集成(CI)和自动化测试已成为确保代码质量和加快交付速度的关键因素。本文将探讨如何通过实施持续集成流程,并结合自动化测试策略来优化软件测试工作。我们将分析持续集成的原理、自动化测试的最佳实践以及如何将这些方法应用于实际项目中,旨在为读者提供一套完整的解决方案,以提高软件项目的效率和质量。
13 3
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:智能化测试用例生成策略
【4月更文挑战第25天】 在软件开发生命周期中,高效的测试用例设计是确保产品质量的关键步骤。随着人工智能和机器学习技术的不断进步,智能化测试用例生成已成为提高软件测试效率和效果的有力工具。本文将探讨智能化测试用例生成的策略,包括基于模型的学习、自然语言处理以及遗传算法等,并分析其对传统测试方法的影响,最后提出实施智能化测试的实践建议。
|
14天前
|
XML Web App开发 测试技术
python的Web自动化测试
【4月更文挑战第16天】Python在Web自动化测试中广泛应用,借助Selenium(支持多浏览器交互)、BeautifulSoup(解析HTML/XML)、Requests(发送HTTP请求)和Unittest(测试框架)等工具。测试步骤包括环境搭建、编写测试用例、初始化浏览器、访问页面、操作元素、验证结果、关闭浏览器及运行报告。注意浏览器兼容性、动态内容处理和错误处理。这些组合能提升测试效率和质量。
15 6
|
1月前
|
jenkins 测试技术 持续交付
软件测试|docker搭建Jenkins+Python+allure自动化测试环境
通过以上步骤,你可以在Docker中搭建起Jenkins自动化测试环境,实现Python测试的自动化执行和Allure报告生成。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
50 6
|
1月前
|
敏捷开发 运维 测试技术
深入探索软件测试中的持续集成与自动化测试实践
【4月更文挑战第3天】 在现代软件开发的快速迭代过程中,持续集成(Continuous Integration, CI)和自动化测试已成为确保产品质量和加快交付速度的关键实践。本文旨在探讨CI/CD流程中自动化测试的实施策略、面临的挑战以及优化方法。通过对自动化测试工具选择、测试用例设计、集成到CI流程的实践案例分析,为读者提供一套系统的实施指南和性能优化技巧,以期帮助团队提升测试效率,降低错误率,最终实现软件开发周期的缩短和质量的提升。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率:AI驱动的自动化测试策略
【2月更文挑战第30天】随着人工智能(AI)在软件开发周期中的日益普及,其在提高软件测试效率方面的潜力正受到越来越多的关注。本文探讨了如何通过集成AI技术来优化自动化测试流程,从而减少重复工作、提高错误检测率和加快反馈速度。我们将分析当前AI在自动化测试中的应用,并提出一系列策略以利用AI改进测试案例生成、执行和维护过程。
99 0
|
24天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。