如何使用Selenium Webdriver从日期选择器div中选择日期?


我们可以使用Selenium webdriver从日期选择器中选择日期。日历中的日期选择器可以在web UI上以多种方式设计。根据UI,我们需要设计我们的测试。

日历可能包含用于选择日、月或年的下拉菜单。它还可能包含向前和向后导航,以便在日期中上下移动,或任何其他设计。下面的示例显示了一个带有日期选择器的日历。让我们尝试从下面的日历中选择2021年3月2日(2021年3月2日)的日期:

在上面的html代码中,我们可以看到日历在一个由<table>标识的表格标签内,它的日期由分别具有<tr>和<td>标签的行和列表示(tr是td的父元素)。要选择日期,我们需要使用findElements方法标识所有具有<td>标签的元素。

此方法返回一个匹配元素列表。我们必须遍历此列表,并使用getText方法检查特定日期。一旦遇到所需日期,我们将选择它并从循环中退出。

示例

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import java.util.List;
public class DtPicker{
   public static void main(String[] args) {
      System.setProperty("webdriver.gecko.driver", "C:\Users\ghs6kor\Desktop\Java\geckodriver.exe");
      WebDriver driver = new FirefoxDriver();
      //implicit wait
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      //URL launch
      driver.get("https://jqueryui.jqueryjs.cn/datepicker");
      //switch to frame
      WebElement f = driver .findElement(By.xpath("//iframe[@class='demo-frame']"));
      driver.switchTo().frame(f);
      //identify element within frame
      WebElement l = driver.findElement(By.id("datepicker"));
      l.click();
      //identify all td elements in list
      List<WebElement> t =driver.findElements(By.xpath("//table/tbody/tr/td"));
      //list traversal
      for (int k = 0; k<t.size(); k++) {
         //check date
         String dt = t.get(k).getText();
         if (dt.equals("2")) {
            t.get(k).click();
            break;
         }
      }
      //obtain selected date
      String v = l.getAttribute("value");
      System.out.print("Date selected by date picker: "+ v);
      //close browser
      driver.close();
   }
}

输出

更新于:2021年4月3日

2K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.