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

Telerik(Kendo)日期选择器pickDay方法选指定日期异常求助

解决Telerik(Kendo)日期选择器pickDay方法选中日期错误的问题

我之前也碰到过类似的Telerik日历组件自动化问题,结合你给出的代码和场景,咱们一步步来排查修复:

首先梳理下核心问题:传入06/04/2019(6月4日),控制台打印date[DAY_OF_MONTH]输出4,但实际选中的却是1号。下面是几个高概率的原因和对应的解决方案:

1. 修复Calendar常量的引用问题

你的代码里直接用了DAY_OF_MONTH,但如果没有显式导入java.util.Calendar类,Groovy对这个常量的解析可能出现隐性异常,导致传递给测试对象的数值并非预期的4。

修复步骤:

  • 在RadDatePicker类顶部添加导入语句:
import java.util.Calendar
  • 修改pickDay方法里的日期获取逻辑,确保正确拿到日份:
def pickDay() {
    def targetDay = date.get(Calendar.DAY_OF_MONTH)
    println targetDay
    WebUI.click(findTestObject('Object Repository/Telerik/RadDateLightWeightPage/a_dayPicker', [('day') : targetDay]))
}

2. 修正测试对象a_dayPicker的定位器

Telerik(Kendo)的日期按钮通常带有data-day属性(比如<a data-day="4" class="k-link">4</a>),如果你的测试对象用了文本模糊匹配(比如//a[contains(text(), '{day}')]),很容易误匹配到包含相同数字的其他日期,或者在切换月份后点击到未更新的旧元素。

修复步骤:

  • 打开测试对象a_dayPicker,把定位器改成基于data-day属性的精确匹配:
//a[@data-day='{day}']

如果必须用文本匹配,一定要用精确匹配的表达式:

//a[text()='{day}']

3. 规范Date解析的写法(避免潜在坑)

你的代码里用了new Date().parse("MM/dd/yyyy", input_date),虽然功能上可能暂时正常,但parse是Date类的静态方法,正确写法应该直接调用静态方法,避免创建多余的Date对象:

date = Date.parse("MM/dd/yyyy", input_date)

同样,displayDate()方法里的解析也需要修正:

def displayDate() {
    return Date.parse("MMM/yyyy", displayMonth() + "/" + displayYear())
}

4. 添加元素等待确保日历加载完成

切换年份和月份后,日历组件需要一点时间更新日期列表,如果直接点击,很可能会点击到未更新的旧元素(比如上一个月份的1号)。

修复步骤:
在pickDay方法中加入等待逻辑,确保目标日期元素可见后再点击:

def pickDay() {
    def targetDay = date.get(Calendar.DAY_OF_MONTH)
    def dayElement = findTestObject('Object Repository/Telerik/RadDateLightWeightPage/a_dayPicker', [('day') : targetDay])
    // 等待元素可见,超时时间设置为10秒
    WebUI.waitForElementVisible(dayElement, 10)
    println targetDay
    WebUI.click(dayElement)
}

额外验证点

记得确认displayMonth()和displayYear()方法返回的是日历当前显示的月份和年份,确保切换月份/年份的逻辑正确,避免日历停留在错误的月份(比如停留在5月,而5月的4日不可见,导致代码默认点击了1号)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:59:09