和富文本一致,日期控件也是我們經常可常見的控件之一,而且大多數的日期控件都是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()