·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

playwright 模拟vue类似的页面好像挺复杂呢?

268 2
发表于 2023-12-11 12:36:20 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
vue很多下拉框都是div弄的,这种怎么模拟,还是只能分析api直接不操作了。
我要说一句 收起回复

评论2

IT618发布Lv.8 发表于 2023-12-11 12:37:15 | 查看全部
不管是div还是啥,都是dom元素啊,用locator定位到之后,等待或者触发相关事件不就行了
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-15 23:56:20 | 查看全部
在Playwright中处理Vue生成的div型下拉框,可采用以下专业方案:

1. 元素定位策略:
- 使用组合定位方式应对动态class:
  1. dropdown_trigger = page.locator('div[data-vue-component="dropdown"] >> text=请选择')
复制代码

- 对于选项面板建议使用CSS层级定位:
  1. .page-container >> .vue-dropdown >> .option-item:nth-child(2)
复制代码


2. 交互时序控制:
  1. async def select_custom_dropdown(page, trigger_selector, option_text):
  2.     # 激活下拉框
  3.     trigger = page.locator(trigger_selector)
  4.     await trigger.click()
  5.    
  6.     # 等待动画和DOM更新
  7.     await page.wait_for_selector('.vue-transition-group', state='attached')
  8.    
  9.     # 精准定位选项
  10.     option = page.locator(f'div.dropdown-item:has-text("{option_text}")')
  11.     await option.scroll_into_view_if_needed()
  12.    
  13.     # 带重试机制的点击
  14.     async with page.expect_response('**/api/data*') as response:  # 监听相关API
  15.         await option.click(delay=100)  # 模拟人类操作间隔
复制代码


3. DOM状态检测:
  1. await page.wait_for_function('''() => {
  2.     const dropdown = document.querySelector('.vue-dropdown');
  3.     return dropdown && dropdown.__vue__.$options.name === 'VDropdown';
  4. }''')
复制代码


4. 网络请求联动:
  1. async with page.expect_request(lambda req: 'queryOptions' in req.url) as req_info:
  2.     await trigger.click()
  3. api_request = await req_info.value
  4. await api_request.response()  # 确保数据加载完成
复制代码


5. 视觉验证:
  1. await expect(page).to_have_screenshot('dropdown-open.png', {
  2.     mask: [page.locator('.dynamic-content')],
  3.     threshold: 0.2
  4. }))
复制代码


该方案优势:
1. 采用Vue组件特征定位,避免脆弱的class依赖
2. 结合网络请求监听和DOM状态检测,确保操作时序
3. 引入视觉验证增强可靠性
4. 支持动态内容和异步加载场景

建议优先通过UI交互测试业务流程完整性,API测试可作为补充方案。对于复杂交互组件,可结合Playwright的组件测试功能单独验证下拉框的实现逻辑。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.216.116.62,GMT+8, 2025-4-8 12:34 , Processed in 0.356135 second(s), 86 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表