You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebdriverIO页面无搜索确认按钮时如何校验搜索结果是否匹配

WebdriverIO 无搜索确认按钮场景下的搜索结果校验实现

核心逻辑说明

你测试的站点https://new.flatlay.io/的搜索功能为实时触发模式,输入关键词后前端自动发起搜索请求并渲染结果,无需额外点击确认按钮。你原有代码存在3个常见问题:

  • 异步方法未加await关键字,直接获取的是Promise对象而非实际文本内容
  • 未等待搜索结果渲染完成就读取元素文本,大概率获取到空值或上一次搜索的旧结果
  • 单条结果匹配容错率低,若某条结果未带关键词会直接导致断言失败

完整可运行代码示例

// 原有登录逻辑保留,所有异步操作需加await
await auth.$log.click();
await auth.login('kosarsute@gmail.com', 'qalesson@gmail.com');
await auth.$searchCLick.click();
await auth.$search.click();

// 定义搜索关键词,可按需替换为adidas/nike等
const searchKeyword = 'adidas';
await auth.$search.setValue(searchKeyword);

// 等待搜索结果容器加载完成,超时时间可根据站点响应速度调整
const resultContainer = $('.creator-content');
await resultContainer.waitForExist({ timeout: 5000 });

// 获取所有搜索结果条目文本,可根据实际页面结构调整条目选择器
const resultItems = await $$('.creator-content .content-item');
let matchCount = 0;

// 遍历结果做大小写不敏感匹配
for (const item of resultItems) {
  const itemText = (await item.getText()).toLowerCase();
  if (itemText.includes(searchKeyword.toLowerCase())) {
    matchCount++
  }
}

// 断言规则可根据业务要求调整:示例要求匹配结果占比不低于80%即判定搜索有效
expect(matchCount / resultItems.length).toBeGreaterThanOrEqual(0.8);

// 若要求所有结果必须匹配关键词,可替换为以下断言逻辑
// for (const item of resultItems) {
//   const itemText = (await item.getText()).toLowerCase();
//   expect(itemText).toContain(searchKeyword.toLowerCase());
// }

优化提示

  • 若输入关键词后页面有加载态动画,可先等待加载态消失再读取结果,用例稳定性更高
  • 统一转为小写匹配可避免大小写差异导致的误判
  • 若搜索结果包含标题、标签、描述等多维度内容,可针对性获取对应字段校验,匹配精度更高

内容的提问来源于stack exchange,提问作者Sergei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:45:04