1. 程式人生 > >Java+Selenium自動化對非輸入框的日曆或日期控制元件的處理

Java+Selenium自動化對非輸入框的日曆或日期控制元件的處理

如圖:

        

1、問題描述:

      在應用selenium實現web自動化時,經常會遇到處理日期控制元件點選問題,手工很簡單,可以一個個點選日期控制元件選擇需要的日期,但自動化執行過程中,完全複製手工這樣的操作就有點難了。

2、想法:

        其實很簡單,把它當做輸入框來看就好了,使用selenium的sendKeys對輸入框輸入日期則可。

        driver.findElement(By.id("createTime")).sendKeys("2016-08-24");//輸入日期

3、想法是很美好的,但是有時候實行起來卻不執行,這個時候我們就要仔細去看看前端的程式碼了,程式碼如下:

     <div class="col-lg-3 form-input">

              <input id="createTime" class="form-control" type="text" readonly="" name="tatsudoDate" onclick="WdatePicker()" aria-required="true">

     </div>

4、這個時候我們可以移除readonly的屬性,問題就輕輕鬆鬆解決了,程式碼如下:

  String js = "document.getElementById('createTime').removeAttribute('readonly')";     // 原生js,移除屬性     ((JavascriptExecutor)driver).executeScript(js);    //將driver強制轉換為JavascriptExecutor型別   driver.findElement(By.id("createTime")).sendKeys("2016-08-24");    //輸入日期  

5、程式碼裡面一定要記得匯入這個方法:

import org.openqa.selenium.JavascriptExecutor;