通常的日期控件都是input標籤下彈出來的,設置日期使用selenium中的sendKeys 方法就能夠解決。css
可是咱們也會碰到下面的時間日期控件(這個時候這個文本框是不容許咱們輸入時間的)如圖:html
這個時候,無法調用WebElement的sendKeys(),像這種選擇時間的input標籤都會有一個readonly屬性,這個時候咱們就只能選擇時間,不能手動輸入,那麼這種狀況,咱們該怎麼處理呢?spa
具體代碼示例以下:code
/** * 經過JS選擇日期 */ @Test public void testByJs() { driver.get("https://huoche.cncn.com/train-%B4%F3%C1%AC-%C9%F2%D1%F4"); driver.manage().window().maximize(); JavascriptExecutor removeAttribute = (JavascriptExecutor) driver; //remove readonly attribute removeAttribute.executeScript("var setDate=document.getElementById(\"date\").removeAttribute('readonly');"); //輸入要輸入日期 driver.findElement(By.id("date")).clear(); driver.findElement(By.id("date")).sendKeys("2019-08-31"); //點擊查詢 driver.findElement(By.id("searchBtn")).click(); //獲取輸入後日期顯示 String value = driver.findElement(By.id("date")).getAttribute("value"); //驗證日期是否爲選中的8月31日 Assert.assertEquals(value,"2019-08-31"); }
具體代碼示例以下:htm
/** * 經過Iframe選擇日期 */ @Test public void testByIframe() { driver.get("https://huoche.cncn.com/train-%B4%F3%C1%AC-%C9%F2%D1%F4"); driver.manage().window().maximize(); //點擊日曆控件 driver.findElement(By.id("date")).click(); //iframe框 WebElement iframe = driver.findElement(By.cssSelector("[src='about\\:blank']")); //進入日曆控件中操做 driver.switchTo().frame(iframe); //選擇31號即月末 driver.findElement(By.xpath("//tr/td[@onclick='day_Click(2019,8,31);']")).click(); //跳出日曆控件操做 driver.switchTo().defaultContent(); //點擊查詢 driver.findElement(By.id("searchBtn")).click(); //獲取輸入後日期顯示 String value = driver.findElement(By.id("date")).getAttribute("value"); //驗證日期是否爲選中的8月31日 Assert.assertEquals(value,"2019-08-31"); }
以上兩種方法,均可實現選擇日期操做,僅供參考,若是以爲好,能夠關注我哦blog
原文出處:https://www.cnblogs.com/longronglang/p/11327327.htmlip