找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

431

积分

0

好友

61

主题
发表于 前天 20:01 | 查看: 3| 回复: 0

在Web自动化测试中,页面断言是验证页面行为是否符合预期的关键环节。它确保了测试脚本的准确性,是构建可靠自动化测试流程的基石。本文旨在深入探讨Playwright中丰富而强大的断言功能,帮助您高效验证页面标题、URL、元素状态及表单内容。

1. 断言页面标题与URL

页面标题和URL是验证页面是否正确加载或导航的最直接依据。

1.1 to_have_titlenot_to_have_title

to_have_title断言用于验证页面标题是否与预期匹配,支持字符串或正则表达式。

expect(page).to_have_title('百度一下,你就知道')
expect(page).to_have_title(re.compile(r".*百度一下"))  # 匹配标题包含“百度一下”

not_to_have_title则用于断言页面标题不包含特定内容。

1.2 to_have_urlnot_to_have_url

同理,to_have_url用于验证当前页面URL是否符合预期。

expect(page).to_have_url('https://www.baidu.com/')

not_to_have_url则断言页面URL并非指定值。

2. 使用Expect断言验证元素状态

Playwright的expectAPI提供了一组核心的断言方法,用于验证元素的各类状态,这是进行JavaScript驱动的动态页面测试的利器。

  • to_be_checked(): 断言复选框或单选框已被选中。
  • to_be_disabled() / to_be_enabled(): 断言元素处于禁用或启用状态。
  • to_be_editable(): 断言元素(如输入框)可编辑。
  • to_be_visible() / to_be_hidden(): 断言元素可见或隐藏。
  • to_have_text(): 断言元素包含特定文本内容。
  • to_have_attribute(): 断言元素拥有某个属性。

示例:

expect(page.locator('#submit-btn')).to_be_enabled()
expect(page.locator('.alert')).to_have_text('操作成功!')
expect(page.locator('input')).to_have_attribute('type', 'text')

3. 判断页面元素是否存在

有时我们只需确认某个元素是否存在,这可以通过以下两种方式实现。

3.1 使用 locator().count()

locator().count()方法返回匹配选择器的元素数量,若为0则表示不存在。

search_box_count = page.locator("id=kw").count()
if search_box_count == 0:
    print("搜索框不存在")
3.2 使用 query_selector

query_selector方法直接返回找到的第一个元素句柄,未找到则返回None

element_handle = page.query_selector('#some-element')
if element_handle is None:
    print("元素未找到")

4. 检查表单元素状态

对于表单中的复选框、单选框,除了使用expect断言,还可以直接使用页面对象的检查方法,这些方法返回布尔值。

is_selected = page.is_checked('#agree-terms')  # 判断是否选中
is_input_editable = page.is_editable('#username')  # 判断是否可编辑

5. 表单输入框的专项断言

前端框架构建的表单测试中,输入框的验证至关重要。

  • 断言可编辑性: expect(input_locator).to_be_editable()
  • 断言输入内容: 在填充值后,使用to_have_value()验证。
    locator.fill('test@example.com')
    expect(locator).to_have_value('test@example.com')
  • 断言提示信息: 验证错误或成功提示是否出现且文本正确。
    tip_locator = page.locator('.error-tip')
    expect(tip_locator).to_be_visible()
    expect(tip_locator).to_have_text('邮箱格式不正确')

6. 断言新打开的标签页

处理点击链接打开新标签页的场景时,Playwright的context.expect_page()方法非常有用。

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://www.baidu.com/")

    with context.expect_page() as new_page_info:
        page.click('text=新闻')  # 此操作会打开新标签页
    new_page = new_page_info.value

    # 对新页面进行断言
    expect(new_page).to_have_title(re.compile('百度新闻'))
    expect(new_page).to_have_url('https://news.baidu.com/')

核心价值与最佳实践

掌握这些断言方法,能够显著提升自动化测试的可靠性与效率。在实际项目中,建议:

  1. 封装通用断言:将常用的检查逻辑封装成函数,提升代码复用率。
  2. 集成到CI/CD:在持续集成流水线中自动执行这些断言,确保每次构建的页面功能稳定。
  3. 聚焦关键交互:在表单测试等场景中,系统性地验证输入、状态变化和提示信息,形成完整的验证链。
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-9 00:27 , Processed in 0.059698 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表