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

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

playwright判断元素是否存在

前言

我们在进行web自动化测试的过程中,有时候我们需要判断元素是否存在,才可以进行下一步的点击操作或断言,如果我们使用的是selenium,可以使用显式等待方式,或者使用find_elements判断列表长度,但是playwright有另外一个判断方式,直接计算元素数量来判断元素是否存在,比起selenium来说,步骤更为简单,本文就为大家介绍playwright判断元素是否存在的方法。

locator 定位元素

我们使用locator定位元素时,不论元素存不存在,都会返回一个locator 对象,所以我们可以使用count来计数,如果count不为0,则元素就存在,如果count为0,那元素就不存在。示例如下:

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")
    # 元素存在
    loc1 = page.locator("id=kw")
    print(loc1)
    print(loc1.count())
    # 元素不存在
    loc2 = page.locator('id=muller')
    print(loc2)
    print(loc2.count())

with sync_playwright() as playwright:
    run(playwright)

----------------------------------
输出结果如下:
<Locator frame=<Frame name= url='https://www.baidu.com/'> selector='id=kw'>
1
<Locator frame=<Frame name= url='https://www.baidu.com/'> selector='id=muller'>
0

注:locator 是定位当前页面上的元素,不会自动等待,如果用click等方法结合使用,会自动去等待元素处于可点击状态

query_selector 定位

ElementHandle 表示页内 DOM 元素。ElementHandles 可以使用page.query_selector()方法创建。
Locator和ElementHandle之间的区别在于后者指向特定元素,而 Locator 捕获如何检索该元素的逻辑。

元素存在返回元素句柄,元素不存在返回None,示例如下:

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")
    # 元素存在
    loc1 = page.query_selector('#kw')
    print(loc1)
    # 元素不存在
    loc2 = page.query_selector('#muller')
    print(loc2)

with sync_playwright() as playwright:
    run(playwright)


-------------------------------------------------
输出结果如下:

JSHandle@node
None

selenium可以使用find_elements来返回一个元素列表,playwright也可以使用query_selector_all 复数定位方式返回一个列表,示例如下:

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")
    # 元素存在
    loc1 = page.query_selector_all('#kw')
    print(loc1)  

    # 元素不存在
    loc2 = page.query_selector_all('#muller')
    print(loc2) 

with sync_playwright() as playwright:
    run(playwright)

----------------------------------------
输出结果如下:
[<JSHandle preview=JSHandle@node>]
[]

总结

本文主要介绍了playwright判断元素是否存在的方法,playwright对于元素是否存在的判断相比selenium更为直接。

相关文章
|
14天前
|
自然语言处理 安全 测试技术
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
36 0
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
|
1月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
53 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
1月前
|
安全 JavaScript Java
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
35 12
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
|
1月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
83 20
|
3月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
167 31
Selenium IDE:Web自动化测试的得力助手
|
3月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE是开源的Web自动化测试工具,适用于Chrome、Firefox等多款浏览器。它提供简单的录制与回放功能,用户可通过录制浏览器操作自动生成测试脚本,支持导出为多种编程语言,便于非专业测试人员快速上手,有效提升测试效率与质量。
489 6
Selenium IDE:Web自动化测试的得力助手
|
3月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
306 17
Selenium:强大的 Web 自动化测试工具
|
4月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
90 0
|
5月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
5月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。