Playwright常见命令

在 Playwright中,有一些常见且重要的命令和功能,涵盖了常见的浏览器操作、元素定位、交互、断言等。

1. 启动浏览器

Playwright 支持不同的浏览器引擎(Chromium、Firefox、WebKit)。启动浏览器的基本命令如下:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)  # 启动 Chromium 浏览器,headless=False 表示可视化模式
    context = browser.new_context()
    page = context.new_page()
    page.goto('https://example.com')
    browser.close()
  • p.chromium.launch():启动 Chromium 浏览器(可以切换为 firefoxwebkit)。
  • headless=False:默认情况下,Playwright 会在无头模式下运行,设置为 False 以打开浏览器界面。

2. 导航

通过 page.goto() 可以让浏览器访问某个 URL。

page.goto('https://example.com')

3. 获取元素和操作

Playwright 提供多种方式来获取和操作页面上的元素。

元素定位
  • CSS 选择器page.locator('css=selector')
  • XPath 选择器page.locator('//xpath')
  • Text 选择器page.locator('text=button text')
常见交互操作
# 点击按钮
page.locator('text=Submit').click()

# 填写表单
page.locator('input[name="username"]').fill('myusername')

# 提交表单
page.locator('form').press('Enter')

# 选择下拉菜单项
page.locator('select[name="country"]').select_option('USA')

# 文件上传
page.locator('input[type="file"]').set_input_files('path/to/file.png')

# Hover(悬停)动作
page.locator('button#submit').hover()

4. 等待和断言

Playwright 提供了多种等待和断言的方式来确保页面处于预期状态。

等待元素可见
page.locator('text=Login').wait_for()
等待页面加载完成
page.wait_for_load_state('networkidle')  # 等待页面网络空闲(没有活动的网络请求)
断言

Playwright 内置了断言功能,可以方便地进行断言操作:

from playwright.sync_api import expect

# 断言元素可见
expect(page.locator('text=Welcome')).to_be_visible()

# 断言文本内容
expect(page.locator('h1')).to_have_text('Hello World')

# 断言 URL 是否匹配
expect(page).to_have_url('https://example.com/')

5. 处理弹窗对话框

Playwright 可以自动处理弹窗对话框,如 alertconfirmprompt

page.once('dialog', lambda dialog: dialog.accept())  # 自动接受对话框
page.locator('button#show-dialog').click()  # 触发弹窗

6. 截屏

截取页面截图是常见的操作,可以截取整个页面或某个元素:

# 截取整个页面的截图
page.screenshot(path='screenshot.png')

# 截取特定元素的截图
page.locator('div#main').screenshot(path='element_screenshot.png')

7. 模拟设备

Playwright 支持模拟移动设备和不同的网络条件。

iphone_11 = playwright.devices['iPhone 11']
context = browser.new_context(**iphone_11)
page = context.new_page()
page.goto('https://example.com')

8. 执行 JavaScript

Playwright 支持在页面上直接执行 JavaScript 代码:

result = page.evaluate('() => document.title')  # 获取页面标题
print(result)

9. 网络拦截

Playwright 可以拦截网络请求,并可以修改或模拟请求响应。

# 拦截并修改请求
page.route('**/api/**', lambda route, request: route.fulfill(status=200, body='{"success": true}'))

# 拦截请求并记录它们
page.on('request', lambda request: print('Request made:', request.url))
page.goto('https://example.com')

10. 自动化测试的录制功能

Playwright 提供一个录制器,可以自动生成测试脚本:

playwright codegen https://example.com  # 录制测试并生成代码

这个命令会打开一个浏览器窗口,你可以手动操作,然后生成相应的测试脚本。

11. 处理多页面和窗口

Playwright 可以轻松地处理多窗口和多页面场景:

# 点击会打开一个新窗口的链接
page.locator('a[target="_blank"]').click()

# 获取新窗口的页面对象
new_page = context.wait_for_page()
new_page.wait_for_load_state()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值