Selenium IDE中点击日历高亮今日按钮及获取波斯太阳历日期的实现方法
解决方案:Selenium IDE中获取波斯太阳历日期并点击今日按钮
当然可以通过Selenium IDE实现点击高亮的今日按钮,下面分两部分给你具体的实现步骤:
一、获取波斯太阳历日期
JavaScript本身没有内置波斯太阳历(Jalali Calendar)的支持,所以我们需要手动实现一个轻量的转换逻辑。你可以在Selenium IDE的Execute Script命令中运行以下代码,获取当前日期的波斯历格式(格式为YYYY-MM-DD,你可以根据日历的显示格式调整):
// 波斯历转换核心函数 function gregorianToJalali(gYear, gMonth, gDay) { var g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; var jy = gYear <= 1600 ? 0 : 979; gYear -= gYear <= 1600 ? 621 : 1600; var gy2 = (gMonth > 2) ? (gYear + 1) : gYear; var days = (365 * gYear) + Math.floor((gy2 + 3) / 4) - Math.floor((gy2 + 99) / 100) + Math.floor((gy2 + 399) / 400) - 80 + gDay + g_d_m[gMonth - 1]; jy += 33 * Math.floor(days / 12053); days %= 12053; jy += 4 * Math.floor(days / 1461); days %= 1461; jy += Math.floor((days - 1) / 365); if (days > 365) days = (days - 1) % 365; var jm = (days < 186) ? 1 + Math.floor(days / 31) : 7 + Math.floor((days - 186) / 30); var jd = 1 + ((days < 186) ? (days % 31) : ((days - 186) % 30)); return [jy, jm, jd]; } // 获取当前公历日期 var d = new Date(); var gYear = d.getFullYear(); var gMonth = d.getMonth() + 1; var gDay = d.getDate(); // 转换为波斯历并补零格式化 var jalaliDate = gregorianToJalali(gYear, gMonth, gDay); var jy = jalaliDate[0]; var jm = jalaliDate[1] < 10 ? '0' + jalaliDate[1] : jalaliDate[1]; var jd = jalaliDate[2] < 10 ? '0' + jalaliDate[2] : jalaliDate[2]; return jy + "-" + jm + "-" + jd;
运行这段代码后,用Store Script Result命令把结果保存到一个变量(比如jalaliToday),后续可用于元素定位。
二、点击高亮的今日按钮
有两种可靠的定位方式,你可以根据日历的实际HTML结构选择:
方式1:通过波斯历日期文本定位
如果日历的今日按钮上显示的是波斯历日期(比如1403-05-12),可以用以下定位器:
- XPath:
//*[text()='${jalaliToday}'](${jalaliToday}是你之前保存的变量) - 更精确的定位(假设日期元素是
<td>标签)://td[text()='${jalaliToday}']
然后用Click命令点击该元素即可。
方式2:通过高亮元素的属性定位
通常日历会给今日元素添加特殊class(比如today、active、highlighted),这种方式比文本定位更稳定,无需依赖日期格式:
- CSS Selector:
td.today(假设今日元素是带today类的<td>) - XPath:
//td[contains(@class, 'today')]
直接用Click命令点击定位到的元素即可。
注意事项
- 运行转换代码时,确保Selenium IDE允许执行自定义JavaScript(默认是允许的)。
- 如果日历的波斯历日期格式不是
YYYY-MM-DD,可以调整代码里的返回格式(比如改成jy/jm/jd)。 - 定位元素前,建议用Selenium IDE的
Inspect工具查看日历元素的HTML结构,确认class或文本特征。
内容的提问来源于stack exchange,提问作者morteza zahedi
相关产品推荐
相关产品推荐

