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

使用Selenium IDE执行脚本计算日期时长返回NaN问题求助

Selenium IDE日期计算返回NaN的解决方法

问题核心

脚本返回NaN的本质是构造的日期对象无效,导致getTime()方法返回NaN。即便通过echo确认变量值符合预期,但在Selenium IDE的execute script命令中,直接用模板字符串引用变量可能存在上下文注入问题,或者变量为字符串类型未显式转换为数字,最终导致Date构造函数无法生成有效日期。

修复方案

方案1:参数传递变量+显式转数字(推荐)

在execute script命令的参数栏中填入:
${StartYear}, ${StartMonth}, ${EndYear}, ${EndMonth}

替换脚本为:

// 从参数获取变量并转为数字
const startYear = parseInt(arguments[0], 10);
const startMonth = parseInt(arguments[1], 10) - 1;
const endYear = parseInt(arguments[2], 10);
const endMonth = parseInt(arguments[3], 10);

// 构造有效日期对象
const startDate = new Date(startYear, startMonth, 1);
const endDate = new Date(endYear, endMonth, 1);

// 可选:调试用日期有效性校验
if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
  throw new Error(`无效日期:起始日期=${startDate}, 结束日期=${endDate}`);
}

// 计算时长
const durationInMilliseconds = endDate.getTime() - startDate.getTime();
const durationInYears = durationInMilliseconds / (1000 * 60 * 60 * 24 * 365.25);
const roundedDuration = Math.round(durationInYears * 2) / 2;

return roundedDuration.toString();

方案2:使用SIDE内置storedVars变量(旧版本兼容)

若你的Selenium IDE版本支持全局storedVars变量,可直接引用存储变量:

const startYear = parseInt(storedVars['StartYear'], 10);
const startMonth = parseInt(storedVars['StartMonth'], 10) - 1;
const endYear = parseInt(storedVars['EndYear'], 10);
const endMonth = parseInt(storedVars['EndMonth'], 10);

const startDate = new Date(startYear, startMonth, 1);
const endDate = new Date(endYear, endMonth, 1);

const durationInMilliseconds = endDate.getTime() - startDate.getTime();
const durationInYears = durationInMilliseconds / (1000 * 60 * 60 * 24 * 365.25);
const roundedDuration = Math.round(durationInYears * 2) / 2;

return roundedDuration.toString();

调试技巧

  • 用echo命令输出变量类型:echo ${typeof StartYear},确认变量是否为字符串(SIDE存储的变量通常为字符串,需显式转数字)
  • 在脚本中添加console.log(startDate, endDate),打开浏览器开发者工具控制台,查看日期对象是否有效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:00:20