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

WebdriverIO+node-fetch报错:仅支持绝对URL,如何拼接baseURL到相对URL?

解决方案

你遇到的问题是因为通过link.getAttribute('href')获取的链接可能是相对路径(比如/contact、./about)或锚点(比如#section1),而node-fetch仅支持绝对URL,因此需要将测试站点的baseURL与相对路径拼接成完整的绝对地址。

修改后的完整代码

// 替换成你的测试站点基础URL
const baseURL = 'https://your-test-domain.com';

const links = await $$('a');
console.log("count of the links are", links.length); // 修正原代码里的变量名笔误

// 获取所有href并过滤无效链接(空值、锚点)
const urls = await links.map(link => link.getAttribute('href'));
const validUrls = urls.filter(url => url && !url.startsWith('#'));

// 将相对URL转换为绝对URL后发起请求
const requests = validUrls.map(url => {
  // 用URL API自动拼接,避免手动拼接出现的斜杠重复问题
  const absoluteUrl = new URL(url, baseURL).href;
  return fetch(absoluteUrl);
});

const responses = await Promise.all(requests);
const statusCodes = responses.map(response => response.status);

关键说明

  • URL API自动拼接:使用new URL(url, baseURL)可以安全处理各种相对路径(包括/xxx、./xxx、../xxx),自动生成标准的绝对URL,无需手动处理斜杠拼接问题。
  • 过滤无效链接:增加filter步骤排除空链接和锚点(#开头的链接),避免这些无效值导致fetch报错。
  • 修正笔误:原代码中console.log里的testURLS应为links,已同步修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:21:12