我有一個應該包含日期的輸入字段。Selenium:element.clear()在sendKeys之前觸發javascript()
假設表單在字段中加載了一個值,例如, 「2015年4月28日」。我使用的是使用的webdriver通過選擇元素,然後我做的:
element.clear();
element.sendKeys("2015/04/29");
不幸的是,當我清除元素,它觸發加載模板「YYYY/MM/DD」,並提出,在一些javascript字段,所以當sendKeys()出現時,endresult是「yyyy/MM/dd2015/04/29」。
當您手動執行步驟時,如果您到該字段並選擇其中的所有內容並刪除它,它不會加載模板直到切換到另一個元素。
所以JavaScript似乎不是簡單地通過改變字段觸發,而是像失去焦點一樣。我已經嘗試了多種方法來集中輸入元素上:
new Actions(driver).moveToElement(element).perform();
new Actions(driver).moveToElement(element).click().perform();
element.click()
element.sendKeys("") // before the other sendKeys
然而,當我使用webdriver的同樣的事情持續發生。 所以兩個問題:
- 你怎麼處理一般javascript調用由執行,但可能會影響你在做什麼動作觸發的異步?等待?
- 在這個特定的問題它似乎是焦點驅動的,有沒有某種方式,該領域失去了clear()和sendKeys()之間的焦點?
UPDATE
要闡述:它是有一個更新的字段值「變」,「模糊」和「焦點訪談」中運行的JavaScript方法「文本」輸入字段。
所以我運行element.clear()
其中必須因爲清除代碼後插入模板數據就觸發這三個之一。
當我到達element.sendKeys()時,傷害就完成了。
因此,在clear()和sendKeys()之間,在網站上調用「change」,「blur」或「focus」,對我來說最合乎邏輯的解釋是該領域以某種方式失去了焦點。