使用JQuery日历确定到达特定日期所需的点击量?

时间:2012-10-30 14:23:32

标签: ruby watir

我有一个项目开始日期的jquery日历。

使用Watir(自动浏览器驱动程序,ruby的gem),我有一个我想要输入的设定日期。

日历开始日期始终是今天的日期,无论使用当天是什么日期。我想知道ruby是否有办法处理今天的日期,并使用用户提供的指定日期来计算它们之间的月份差异。

以下是日历插件的示例:http://jqueryui.com/datepicker/

示例:

今天的日期是30/10/2012,如果有一个项目将于2012年12月20日开始,那将是2个月后,所以2点击下个月按钮。

我有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

以下是我使用JSdatepicker处理类似情况的方法:

$today = Time.now.strftime("%e").gsub(" ", "") #one digit day of month without leading space

@browser.text_field(:id => /dateAvailable/).click
Watir::Wait.until(60) {@browser.div(:id => /dateAvailable_popup_cal/).td(:text => $today).exists?}
@browser.div(:id => /dateAvailable_popup_cal/).td(:text => $today).click
  1. 设置或获取日期。
  2. 单击触发JSDatePicker对象的text_field
  3. 等到日历实际弹出
  4. 显示当前月份,因此请选择今天的日期编号。
  5. 在您的情况下,您还需要设置月份。无论是提示用户,还是选择“今天”,理论都是一样的:

    $month = Date::MONTHNAMES[Date.today.month] #etc
    

    伪代码做了很多假设(只有未来日期,日历名称在日历上显示为文本等):

    while !@jquerytablewindow.text.include?($month)
         next_month_button.click
    end
    

    我没有看到我的方法与每个月的计数相比具有特定的优势,除非我们当天在日历中添加一个月并且您仍然希望您的代码能够正常工作!

答案 1 :(得分:1)

你可以这样做:

#End date converted to date object
specified_date = '20/12/2012'
end_date = Date.parse(specified_date)

#Start date (today - 30/10/2012)
today  = Date.today

#Determine difference in months
number_of_months_up_to_today = (today.month + today.year * 12)
number_of_months_up_to_end = (end_date.month + end_date.year * 12)
clicks_required = number_of_months_up_to_end - number_of_months_up_to_today
#=> 2

基本上,它计算自0年以来的月数,然后找出差异。