我想知道selenium是否有办法捕获当前日期,月份,年份,因为我使用的应用程序有一个单独的日期,月份,年份字段,我们需要手动输入。我的问题我在这里测试用例只接受日期< = 31天,并且不接受过去的任何日期。所以,如果我有办法可以捕捉当前日期,月份,年份(数值)这将是有用的
例如
<tr>
<td>type</td>
<td>form1:txtCoverDateDay</td>
<td>02</td>
</tr>
<tr>
<td>type</td>
<td>form1:txtCoverDateMonth</td>
<td>11</td>
</tr>
<tr>
<td>type</td>
<td>form1:txtCoverDateYear</td>
<td>2011</td>
</tr>
答案 0 :(得分:9)
使用storeEval
以下示例是一个完全符合您要求的完全工作的selenium测试,要运行它打开IDE,单击主窗口中的Source选项卡并将代码粘贴到<tbody>
标记
<tr>
<td>open</td>
<td>http://www.plus2net.com/php_tutorial/date-selection.php</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>new Date().setDate( new Date().getDate() + 31);</td>
<td>date</td>
</tr>
<tr>
<td>echo</td>
<td>${date}</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>d=new Date( new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 31); d=d.getFullYear()</td>
<td>year</td>
</tr>
<tr>
<td>type</td>
<td>name=year</td>
<td>${year}</td>
</tr>
<tr>
<td>echo</td>
<td>${year}</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>d=new Date( new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 31); d=d.getMonth() + 1</td>
<td>month</td>
</tr>
<tr>
<td>select</td>
<td>name=month</td>
<td>value=${month}</td>
</tr>
<tr>
<td>echo</td>
<td>${month}</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>d=new Date( new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 31).getDate(); d= d.toString().length == 1 ? "0" + d : d;</td>
<td>day</td>
</tr>
<tr>
<td>select</td>
<td>name=dt</td>
<td>label=${day}</td>
</tr>
<tr>
<td>echo</td>
<td>${day}</td>
<td></td>
</tr>
我已经在javascript中添加了将来31天返回的日期。
您还可以使用runScript和storeEval的组合来从页面获取几乎任何内容 我问的一个问题表明了这个想法
Load an external js file containing useful test functions in selenium
任何其他问题都会添加评论,我很乐意提供帮助:)
请参阅@ icc97注释,在日期中添加零填充。