软件测试|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对元素操作的方法。

相关文章
|
5天前
|
监控 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
54 20
|
2月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
148 31
Selenium IDE:Web自动化测试的得力助手
|
2月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
266 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
3月前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
3月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
3月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
81 0
|
4月前
|
网络安全 开发工具 数据安全/隐私保护
|
5月前
|
存储 JSON API
实战派教程!Python Web开发中RESTful API的设计哲学与实现技巧,一网打尽!
在数字化时代,Web API成为连接前后端及构建复杂应用的关键。RESTful API因简洁直观而广受欢迎。本文通过实战案例,介绍Python Web开发中的RESTful API设计哲学与技巧,包括使用Flask框架构建一个图书管理系统的API,涵盖资源定义、请求响应设计及实现示例。通过准确使用HTTP状态码、版本控制、错误处理及文档化等技巧,帮助你深入理解RESTful API的设计与实现。希望本文能助力你的API设计之旅。
96 3
|
4月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!

热门文章

最新文章