Playwright元素定位技巧详解

963 篇文章 0 订阅
150 篇文章 0 订阅

在使用Playwright进行UI自动化测试时,正确地定位页面元素是非常重要的一步。以下是一些常用的元素定位技巧,可以帮助您更有效地编写测试脚本:

1. CSS选择器 (CSS Selectors)

CSS选择器是最常用也是最直观的方式之一,它几乎可以匹配任何HTML元素。Playwright支持标准的CSS选择器语法。

  • 基本选择器:如#id.classelement

  • 组合选择器:如div p表示选择所有<p>元素,这些元素位于任何<div>元素内部。

  • 属性选择器:如[name]选择所有具有name属性的元素,或者[name="value"]选择具有特定属性值的元素。

示例:
1await page.click('#submit-button');
2await page.fill('input[type="text"]', 'Hello World');

2. XPath表达式 (XPath Expressions)

XPath是一种在XML文档中查找信息的语言,尽管HTML不是严格意义上的XML,但XPath同样可以在HTML文档中使用。

  • 绝对路径:从根节点开始选择,如//html/body/div/input

  • 相对路径:相对于当前节点选择,如./input选择当前节点下的所有<input>元素。

  • 节点测试:如//input[@type='text']选择所有类型为text<input>元素。

示例:
1await page.evaluate((selector) => document.querySelector(selector).click(), '//button[text()="Submit"]');

3. 数据属性 (Data Attributes)

HTML5引入了data-*属性,允许开发者存储小块的数据,这在定位元素时非常有用

1await page.click('[data-testid="my-button"]');

4. 文本匹配 (Text Matching)

有时我们需要根据文本内容来定位元素,Playwright提供了几种方式来实现这一点。

  • 精确匹配:直接使用包含特定文本的元素作为选择器。

  • 模糊匹配:使用正则表达式进行部分匹配。

示例:
1await page.click('text=Sign In');
2await page.click(`text=${RegExp.escape("Sign In")}`);

注意:RegExp.escape不是一个真正的JavaScript函数,这里假设你有一个类似的函数来转义正则表达式中的特殊字符。

5. 等待元素出现 (Waiting for Elements)

在自动化测试中,经常需要等待某些条件成立后才继续执行下一步操作。

  • 等待元素可见:page.waitForSelector(selector, { state: 'visible' })

  • 等待元素隐藏:page.waitForSelector(selector, { state: 'hidden' })

  • 等待函数返回真值:page.waitForFunction(expression)

示例:
1await page.waitForSelector('.modal', { state: 'visible' });

6. 使用辅助函数

为了简化定位过程,可以编写一些辅助函数来处理常见的定位任务。

1async function clickByText(page, text) {
2    await page.click(`text=${text}`);
3}
4
5await clickByText(page, 'Login');

通过结合使用以上技巧,您可以更加灵活和高效地在Playwright中定位页面元素。记得在编写测试脚本时,尽量选择唯一性较高的选择器,这样可以减少测试脚本的脆弱性。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

Playwright是一个用于自动化浏览器操作的工具,它提供了多种元素定位方式来定位网页中的元素。以下是一些常用的Playwright元素定位方式: 1. 基础定位方式: - 通过选择器定位元素:使用`page.$(selector)`方法,其中`selector`是一个CSS选择器字符串。 - 通过XPath定位元素:使用`page.$x(expression)`方法,其中`expression`是一个XPath表达式字符串。 2. 进阶定位方式: - 定位元素:可以使用`element.$(selector)`方法来定位一个元素的子元素,其中`element`是一个已经定位到的元素对象。 - 定位相邻元素:可以使用`element.nextSibling`和`element.previousSibling`属性来定位一个元素的相邻元素。 - 定位元素:可以使用`element.$xpath(expression)`方法来定位一个元素的父元素,其中`expression`是一个XPath表达式字符串。 3. 使用剧作家选择器(playwright-relative-selector): - 剧作家选择器是一个Playwright的扩展包,它允许您相对于其他元素定位元素。 - 首先,您需要安装`playwright-relative-selector`包:`npm install --save-dev playwright-relative-selector`。 - 然后,在您的Node.js脚本中,您可以使用`require`来引入该包,并与Playwright一起使用。 以下是一个使用Playwright进行元素定位的示例代码: ```javascript const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch(); const page = await browser.newPage(); await page.goto('https://example.com'); // 使用CSS选择器定位元素 const element1 = await page.$('.my-class'); // 使用XPath定位元素 const element2 = await page.$x('//div[@id="my-id"]'); // 定位元素 const childElement = await element1.$('.child-class'); // 定位相邻元素 const nextSibling = await element1.nextSibling; const previousSibling = await element1.previousSibling; // 定位元素 const parentElement = await element1.$xpath('..'); // 使用剧作家选择器定位元素 const relativeSelector = require('playwright-relative-selector'); const relativeElement = await relativeSelector(page, 'parent > child'); await browser.close(); })(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值