Для вибору DateTime HTML5 має новий елемент керування, показаний нижче.
Тут можна переглянути сторінку вище
Якщо ми бачимо DOM елемента управління DateTime Picker, то буде лише одне поле введення як для дати, так і для часу.
Отже, для обробки цього типу контролю спочатку ми заповнимо дату, не відокремлюючи роздільником, тобто якщо дата 25.09.2013, тоді ми передамо 09252013 у поле введення. Закінчивши, ми перенесемо фокус з дати на час, натиснувши 'tab' та час заповнення.
Якщо нам потрібно заповнити 14:45, ми передамо його "0245 PM" у те саме поле введення.
Код для datepicker виглядає так -
імпортувати java.util.List;імпортувати java.util.concurrent.TimeUnit;імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.Keys;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.WebElement;імпорт org.openqa.selenium.chrome.ChromeDriver;імпорт org.testng.annotations.Test;публічний клас DateTimePicker {@ Тестpublic void dateTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Драйвер WebDriver = новий ChromeDriver ();driver.manage (). timeouts (). неявноWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Знайти елемент керування вибору дати та часуWebElement dateBox = driver.findElement (By.xpath ("// форма // введення [@ name = 'bdaytime']"));// Дата заповнення як мм / дд / рррр як 25.09.2013dateBox.sendKeys ("09252013");// Натисніть вкладку, щоб перенести фокус у часове полеdateBox.sendKeys (Keys.TAB);// Час заповнення як 14:45dateBox.sendKeys ("0245 вечора");}}
Вихід буде як-
Давайте розглянемо ще один приклад календаря. Ми будемо використовувати контроль Telerik DateTimePicker. Доступний тут
Тут, якщо нам потрібно змінити місяць, ми повинні натиснути на середину заголовка календаря.
Подібним чином, якщо нам потрібно змінити рік, тоді ми можемо зробити це, натиснувши наступне або попереднє посилання на датчику.
І нарешті, для зміни часу ми можемо вибрати правильний час зі спадного меню (Примітка: Тут час вибирається з інтервалом у 30 хв., Тобто 12:00, 12:30, 1:00, 1:30 тощо).
Повний приклад виглядає так:
імпортувати java.util.Calendar;імпортувати java.util.List;імпортувати java.util.concurrent.TimeUnit;імпорт org.openqa.selenium.By;імпорт org.openqa.selenium.WebDriver;імпорт org.openqa.selenium.WebElement;імпорт org.openqa.selenium.firefox.FirefoxDriver;імпорт org.testng.annotations.Test;публічний клас DatePicker {@ Тестpublic void testDAtePicker () видає виняток {// DAte і час, які потрібно встановити в текстовому поліРядок dateTime = "07.12.2014 14:00";Драйвер WebDriver = новий FirefoxDriver ();driver.manage (). window (). maximize ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). неявноWait (10, TimeUnit.SECONDS);// кнопка для відкриття календаряWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']"));selectDate.click ();// кнопка для переміщення наступного в календаріWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [містить (@ клас, 'k-nav- наступний ')] "));// кнопка для клацання в центрі заголовка календаряWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [містить (@ клас, 'k-nav- швидко ')] "));// кнопка для переміщення попереднього місяця в календаріWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [містить (@ клас, 'k-nav- попередня)) ""));// Розділіть час дати, щоб отримати лише частину датиРядок date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// отримуємо різницю в році між поточним роком та роком, встановлену в каландріint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();if (yearDiff! = 0) {// якщо вам доведеться переїхати наступного рокуif (yearDiff> 0) {for (int i = 0; i" + i);nextLink.click ();}}// якщо вам доведеться переїхати попередній рікще якщо (yearDiff <0) {for (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Різниця в році ->" + i);previousLink.click ();}}}Thread.sleep (1000);// Отримати всі місяці з календаря, щоб вибрати правильнийList list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [not (contains (@ class, 'k-other-month' ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .click ();Thread.sleep (1000);// отримати всі дати з календаря, щоб вибрати правильнуList list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [not (contains (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();/// НА ЧАСWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// натисніть кнопку вибору часуselectTime.click ();// отримати список часівСписок allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup']] [містить (@ style, 'display: block')] // ul // li [@role = 'option'] ")));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// вибрати правильний часдля (WebElement webElement: allTime) {якщо (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}
Вихід буде таким