Playwright之---页面操作API

官网:Page | Playwright

以下是 Playwright 浏览器 API 页面操作的详细解读,涵盖了常用的操作,如导航、元素交互、截图、执行 JavaScript 等。

1. 页面创建与导航

a. 创建页面

页面(Page)是 Playwright 中表示一个浏览器标签页的对象。可以通过浏览器上下文(BrowserContext)来创建页面。

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch(); // 启动浏览器实例
  const context = await browser.newContext(); // 创建浏览器上下文
  const page = await context.newPage(); // 创建新页面
})();
b. 页面导航

Playwright 提供了多种方法来进行页面导航,支持同步和异步操作。

  • page.goto(url):导航到指定的 URL
  • page.reload():重新加载页面
  • page.reload({ waitUntil: 'networkidle' }):等待网络空闲时再重新加载页面
await page.goto('https://example.com'); // 导航到网页

2. 元素选择与交互

Playwright 提供了多种方法来选择页面上的元素并与之交互(点击、输入文本等)。

a. 元素选择
// 通过 alt 获取 
<img alt='Playwright logo'>
await page.getByAltText('Playwright logo').click();


// 允许通过关联或元素的文本aria-labelledby或者aria-label属性来定位输入元素。
<input aria-label="Username">

await page.getByLabel('Username').fill('john');


// 允许通过占位符文本定位输入元素。
<input type="email" placeholder="name@example.com" />
await page
    .getByPlaceholder('name@example.com')
    .fill('playwright@microsoft.com');


// 允许通过ARIA 角色、ARIA 属性和可访问名称来定位元素。
<h3>Sign up</h3>
<label>
  <input type="checkbox" /> Subscribe
</label>
<br/>
<button>Submit</button>

await expect(page.getByRole('heading', { name: 'Sign up' })).toBeVisible();

await page.getByRole('checkbox', { name: 'Subscribe' }).check();

await page.getByRole('button', { name: /submit/i }).click();

// 您可以通过文本子字符串、精确字符串或正则表达式来定位:
<div>Hello <span>
page.getByText('Hello', { exact: true });

// 允许通过元素的标题属性来定位元素。
<span title='Issues count'>25 issues</span>
await expect(page.getByTitle('Issues count')).toHaveText('25 issues');

3. 等待与等待条件

在进行页面操作时,等待某些条件的完成非常重要,Playwright 提供了多种等待机制。

a. 等待元素可见
  • page.waitForSelector(selector):等待选择器匹配的元素可见。
await page.waitForSelector('div#result', { state: 'visible' });
b. 等待特定条件
  • page.waitForEvent(event):等待特定的事件发生,如 loaddomcontentloadednetworkidle 等。
await page.waitForEvent('load'); // 等待页面加载完成
c. 等待页面加载
  • page.waitForLoadState(state):等待页面达到特定加载状态。
await page.waitForLoadState('networkidle'); // 等待网络空闲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值