Playwright的wait funtion测试的实现

 更新时间:2026年04月23日 14:33:15   作者:博丽灵梦  
本文主要介绍了Playwright的wait funtion测试的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

强制等待

/**
 * Selects an option from a PrimeFaces/JSF dropdown menu.
 * @param {*} page 
 * @param {*} locator 
 * @param {*} option 
 * @param {*} timeout 
 */
const selectDropDown = async (page, locator, option, timeout = 500) => {
  await page.locator(locator).click();
  await page.waitForTimeout(timeout);
  await page.getByRole('option', { name: option }).click();
  await page.waitForTimeout(timeout);
}

等待元素加载

/**
 * Selects an option from a PrimeFaces/JSF dropdown menu.
 * @param {*} page 
 * @param {*} locator 
 * @param {*} option 
 * @param {*} timeout 
 */
const selectDropDown = async (page, locator, option, timeout = 500) => {
  // 1. Click the dropdown trigger
  await page.locator(locator).click();
  // 2. Wait for the option text to be visible anywhere on the page
  // This is robust for PrimeFaces where options are often divs/li with text content
  const optionLocator = page.getByText(option, { exact: true }).first();
  // Wait up to 5 seconds for the option to appear
  await expect(optionLocator).toBeVisible({ timeout: 5000 });
  // 3. Click the option
  await optionLocator.click();
}

执行结果

根本原因分析

role="option"不适用于 PrimeFaces/JSF 组件

你之前的代码使用了 `page.getByRole('option', { name: option })。

标准 HTML <select> :浏览器会自动给 <option> 标签赋予 role="option"。

PrimeFaces/JSF 自定义下拉框: 这些框架通常使用 <div>, <li>, 或 <span> 来模拟下拉菜单,而不是原生的 <select>。

  • 如果底层元素是 <li class="ui-selectitem">PWY</li>,它没有 role="option" 属性。
  • 因此,getByRole('option') 永远返回空,导致 toBeVisible 超时失败。

解决方案

我们需要放弃 getByRole('option'),改用更通用的文本匹配或 CSS 类匹配。

到此这篇关于Playwright的wait funtion测试的实现的文章就介绍到这了,更多相关Playwright wait funtion测试内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 命名规范知识点汇总

    python 命名规范知识点汇总

    这里给大家分享的是在python开发过程中需要注意的命名的规范的知识汇总,有需要的小伙伴可以查看下
    2020-02-02
  • pandas中关于nan的处理方式

    pandas中关于nan的处理方式

    这篇文章主要介绍了pandas中关于nan的处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python中字符串的处理技巧分享

    Python中字符串的处理技巧分享

    这篇文章给大家分享了Python中字符串的处理技巧,包括拆分含有多种分隔符的字符串、判断字符串a是否以字符串b开头或结尾、调整字符串中文本的格式已经将多个小字符串拼接成一个大的字符串等,感兴趣的朋友们可以通过阅读下文来学习。
    2016-09-09
  • Python深度学习之实现卷积神经网络

    Python深度学习之实现卷积神经网络

    今天带大家学习如何使用Python实现卷积神经网络,这是个很难的知识点,文中有非常详细的介绍,对小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • python贪吃蛇核心功能实现下

    python贪吃蛇核心功能实现下

    我想大家都玩过诺基亚上面的贪吃蛇吧,这篇文章将带你一步步用python语言实现一个snake小游戏,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-09-09
  • pycharm2020.1.2永久破解激活教程,实测有效

    pycharm2020.1.2永久破解激活教程,实测有效

    很多使用pycharm2020.1.2版本的朋友,不知道如何激活破解,这篇文章主要介绍了pycharm2020.1.2永久破解激活教程,经小编实测有效,需要的朋友可以参考下
    2020-10-10
  • 给 TensorFlow 变量进行赋值的方式

    给 TensorFlow 变量进行赋值的方式

    今天小编就为大家分享一篇给 TensorFlow 变量进行赋值的方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 一文分享20个实用的Python自动化脚本,提升10倍效率

    一文分享20个实用的Python自动化脚本,提升10倍效率

    Python凭借其简洁的语法和强大的库,堪称创建自动化脚本的最佳编程语言之一,本文将分享用于自动化各类任务的20个Python脚本,这些脚本非常适合希望优化工作流程、提升效率的实践者
    2026-03-03
  • 详解python tcp编程

    详解python tcp编程

    这篇文章主要介绍了python tcp编程的相关资料,帮助大家更好的理解和学习python tcp编程,感兴趣的朋友可以了解下
    2020-08-08
  • 详解Python使用OpenCV如何确定一个对象的方向

    详解Python使用OpenCV如何确定一个对象的方向

    在本教程中,我们将构建一个程序,该程序可以使用流行的计算机视觉库 OpenCV 确定对象的方向(即以度为单位的旋转角度),感兴趣的小伙伴可以了解一下
    2022-10-10

最新评论