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

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

前言

之前两篇文章,我们介绍了playwright框架以及简单使用,作为一款web自动化测试工具,元素定位是最基础的也算最重要的部分,我们在界面上的任何操作,其实都是对页面元素的操作,所以这部分是我们学习的核心。

本篇文章我们就来介绍一下playwright的元素定位与操作。

元素定位与操作

我们都知道selenium支持xpath,css_selector,text以及id、name等HTML属性定位方法,我们最为常用的还是xpath和css_selector两种定位方法。playwright也支持xpath,css_selector等常用定位方法。

下面是我们的定位操作示例:

我们可以先定位再操作

# 先定位再操作
    page.locator('#kw').fill("theshy")
    page.locator('#su').click()

或者直接调用fill 和 click 方法,如下:

page.fill('#kw', "theshy")
page.click('#su')

很显然,直接调用fill和click的代码更为简洁,因此,我们推荐使用下面的方法进行操作。

CSS与xpath定位方法

CSS定位和xpath定位是我们最常用的定位方法,使用也较为简单,示例代码如下:

# CSS and XPath
page.fill('css=#kw', "theshy")
page.click('xpath=//*[@id="su"]')

当然,playwright很聪明,我们可以省略掉我们的定位方法,只保留定位表达式,playwright会自动识别我们的定位方法,只要我们的表达式没有错误,就能正常执行,示例如下:

page.fill('#kw', "theshy")
page.click('//*[@id="su"]')

text 文本定位

text文本定位是非常实用的定位方法,只需要将我们看到的文本写入表达式就可以进行定位,xpath选择器对于text的定位如下所示:

  • 完全匹配文本 //*[text()="theshy "]
  • 部分匹配文本 //*[contains(text(),"theshy")]

playwright 封装了text文本定位的方式,支持如下2种文本定位方式:

page.click("text=theshy")
page.click("text='Theshy'")

text=theshy 和 text='Theshy' 的区别:

  • text=theshy 没有加引号(单引号或者双引号),模糊匹配,对大小写不敏感
  • text='Theshy' 有引号,精确匹配,对大小写敏感

使用示例,比如点击百度首页上的“新闻” 文本,我们可以看到“新闻”是一个a标签

在这里插入图片描述

代码如下:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    page = browser.new_page()
    page.goto("https://www.baidu.com")
    print(page.title())
    page.click('text=新闻')
    page.wait_for_timeout(5000)
    browser.close()

除了a标签,文本定位也可以用于对button的定位,比如百度首页的“百度一下”按钮

在这里插入图片描述

定位代码如下:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    page = browser.new_page()
    page.goto("https://www.baidu.com")
    print(page.title())
    page.fill("#kw", "theshy")
    page.click('text=百度一下')
    page.wait_for_timeout(5000)
    browser.close()

其他定位方法

playwright还提供了其他内置的定位方法,常用的如下:

  • page.get_by_role()通过显式和隐式可访问性属性进行定位
  • page.get_by_text()通过文本内容定位
  • page.get_by_label()通过关联标签的文本定位表单控件
  • page.get_by_placeholder()按占位符定位输入
  • page.get_by_alt_text()通过替代文本定位元素,通常是图像
  • page.get_by_title()通过标题属性定位元素
  • page.get_by_test_id()根据data-testid属性定位元素(可以配置其他属性)

使用示例

page.get_by_label("User Name").fill("theshy")
page.get_by_label("Password").fill("secret-password")
page.get_by_role("button", name="Sign in").click()
expect(page.get_by_text("Welcome, theshy!")).to_be_visible()

总结

本篇文章主要介绍了playwright的定位方式,playwright支持CSS和xpath这两种最常用的定位方式,还有部分内置的定位方式。后续我们将介绍playwright对元素操作的方法。

相关文章
|
25天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
81 8
|
18天前
|
机器学习/深度学习 人工智能 jenkins
探索软件测试中的自动化与持续集成
【10月更文挑战第21天】 在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的进步和开发模式的转变,自动化测试和持续集成已经成为提高软件质量和效率的关键手段。本文将深入探讨自动化测试和持续集成的概念、实施策略以及它们如何相互配合以优化软件开发流程。我们将通过分析实际案例,展示这些技术如何在实际项目中发挥作用,以及面临的挑战和解决方案。此外,文章还将讨论未来趋势,包括人工智能在测试领域的应用前景。
67 17
|
30天前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
1月前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
65 4
|
1月前
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
40 4
|
1月前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
50 3
|
3月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
3月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
2月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
54 0
|
3月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。