Selenium+java - 日期控件的處理


前言

一般的日期控件都是input標簽下彈出來的,設置日期使用selenium中的sendKeys 方法就可以解決。

但是我們也會碰到下面的時間日期控件(這個時候這個文本框是不允許我們輸入時間的)如圖:

這個時候,沒法調用WebElement的sendKeys(),像這種選擇時間的input標簽都會有一個readonly屬性,這個時候我們就只能選擇時間,不能手動輸入,那么這種情況,我們該怎么處理呢?

通過JS選擇日期

具體代碼示例如下:

  /**
     * 通過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");
    }

 

通過Iframe選擇日期

具體代碼示例如下:

  /**
     * 通過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");

    }

以上兩種方法,都可實現選擇日期操作,僅供參考,如果覺得好,可以關注我哦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM