筆者在編寫自動化腳本的過程中,由於時間控件不受Selenium的控制,因此需要通過注入JS來修改日期控件的value。有的程序可能是通過Text屬性來取值,因此會將修改Text的方法一併寫下。
一、修改時間控件的Value
1. 注入js的方法:
public void jsExe(WebDriver driver,String scroll) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(scroll);
}
scroll爲js腳本
2.修改日期的value
js腳本:
var fa1 = document.getElementById(\"starttime\");
var ne1 = fa1.nextSibling;
var ls1 = ne1.lastElementChild;
ls1.setAttribute("value","" + realDate + "");
由於無法至今啊定爲到value所在位置,因此需要先找到最近的元素,再通過其他方式定爲到value。通過setAttribute方法,改變alue的值。
注入js:
String scroll = "var fa1 = document.getElementById(\"starttime\");" +
"var ne1 = fa1.nextSibling;" +
"var ls1 = ne1.lastElementChild;"+
"ls1.setAttribute(\"value\",\""+ realDate +"\");"
obj.jsExe(driver, scroll);
realDate爲時間變量。
二、修改時間控件的Test
1. 由於時間控件的input元素不能之間鍵入值,因此需要將它的readonly屬性移除。
String scroll = "var fa1 = document.getElementById(\"starttime\");" +
"var ne1 = fa1.nextSibling;" +
"var ch1 = ne1.firstElementChild;" +
"ch1.attributes.removeNamedItem(\"readonly\");"
obj.jsExe(driver, scroll);
2.接下來就是平常的操作,通過selenium定爲元素,修改input中的Text即可。