和富文本一致,日期控件也是我们经常可常见的控件之一,而且大多数的日期控件都是readonly属性,需要人为的手动去选择对应的时间,很显然,在手工测试中,这是一个很简单,很容易做到的操作,在自动化中,对日期的控件,比手工测试的操作虽然一直,但是比较繁琐。对日期的控件,我们任然使用js来控制,然后通过控制js来实现我们的目的。
如下截图是一个日期控件,我们实现的目的就是在活动时间中,写入开始时间和结束时间,见效果图:
借用firebug的调试工具,查看该开始时间和结束时间的html代码,开始时间代码为:
<inputtype="text" style="cursor:pointer;"readonly="readonly" title="开始时间≥当前时间"placeholder="开始时间≥当前时间" value=""class="text-box hasDatepicker" name="act_start_time"id="dp1439183415476">
结束时间代码为:
<input type="text"style="cursor:pointer;" readonly="readonly" title="结束时间>开始时间"placeholder="结束时间>开始时间" value="" class="text-box hasDatepicker"name="act_stop_time" id="dp1439183415477">
对日期控件的处理思路一般为:
1、取消日期控件的readonly属性
2、给value赋值
3、写js代码来实现如上的1,2点,再webdriver对js进行处理
利用如上的三点思路,时间的js代码为:
startJs=js1="$(\"input[placeholder='开始时间≥当前时间']\").removeAttr('readonly');$(\"input[placeholder='开始时间≥当前时间']\").attr('value','2014-08-10 12:00:00')"
stopTime="$(\"input[placeholder='结束时间>开始时间']\").removeAttr('readonly');$(\"input[placeholder='结束时间>开始时间']\").attr('value','2014-08-1013:16:00')"
输入开始时间以及结束时间,实现的测试代码为:
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions importNoSuchElementException, UnexpectedTagNameException
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.alert import Alert
from time import sleep
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('file:///C:/Users/liwangping/Desktop/Time/index.html')
startTime="$(\"input[placeholder='开始时间≥当前时间']\").removeAttr('readonly');$(\"input[placeholder='开始时间≥当前时间']\").attr('value','2014-08-10 12:00:00')"
stopTime="$(\"input[placeholder='结束时间>开始时间']\").removeAttr('readonly');$(\"input[placeholder='结束时间>开始时间']\").attr('value','2014-08-1013:16:00')"
driver.execute_script(startTime)
driver.execute_script(stopTime)
sleep(5)
driver.quit()