Pre výber DateTime má HTML5 nový ovládací prvok zobrazený nižšie.
Vyššie uvedená stránka je prístupná tu
Ak vidíme DOM ovládacieho prvku Výber dátumu a času, pre dátum aj čas bude iba jedno vstupné pole.
Aby sme teda najskôr zvládli tento typ kontroly, vyplníme dátum bez oddeľovača, tj. Ak je dátum 25.9.2013, potom do vstupného poľa odovzdáme 09252013. Po dokončení presunieme zameranie z dátumu na čas stlačením klávesu „Tab“ a vyplnením času.
Ak potrebujeme vyplniť 14:45, odovzdáme jej hodnotu „0245PM“ do rovnakého vstupného poľa.
Kód pre datepicker vyzerá takto -
import java.util.List;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;import org.openqa.selenium.Keys;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;verejná trieda DateTimePicker {@Testpublic void dateTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Ovládač WebDriver = nový ChromeDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Nájdete ovládací prvok na výber dátumu a časuWebElement dateBox = driver.findElement (By.xpath ("// formulár // vstup [@ meno = 'bdaytime']"));// Dátum vyplnenia ako mm / dd / rrrr ako 25. 9. 2013dateBox.sendKeys ("09252013");// Stlačením klávesu Tab presuniete zameranie na časové poledateBox.sendKeys (Keys.TAB);// Čas vyplňte o 14:45dateBox.sendKeys ("0245PM");}}
Výstup bude podobný-
Pozrime sa na ďalší príklad kalendára. Použijeme ovládanie Telerik DateTimePicker. Je prístupný tu
Tu, ak potrebujeme zmeniť mesiac, musíme kliknúť na stred hlavičky kalendára.
Podobne, ak potrebujeme zmeniť rok, môžeme to urobiť kliknutím na nasledujúci alebo predchádzajúci odkaz v nástroji na výber dátumu.
A nakoniec pre zmenu času môžeme zvoliť správny čas z rozbaľovacej ponuky (Poznámka: Tu je čas vybraný v medzere 30 min. Tj. 12:00, 12:30, 1:00, 1:30 atď.).
Celý príklad vyzerá ako -
import java.util.Calendar;import java.util.List;import java.util.concurrent.TimeUnit;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;verejná trieda DatePicker {@Testpublic void testDAtePicker () vyvolá výnimku {// Dáta a čas sa majú nastaviť v textovom poliReťazec dateTime = "7. 12. 2014 14:00";Ovládač WebDriver = nový FirefoxDriver ();driver.manage (). window (). maximize ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);// tlačidlo na otvorenie kalendáraWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']"));selectDate.click ();// tlačidlo posunúť sa ďalej v kalendáriWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview') // div [@ class = 'k-header'] // a [obsahuje (@ class, 'k-nav- Ďalšie')]"));// tlačidlo pre kliknutie do stredu hlavičky kalendáraWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview') // div [@ class = 'k-header'] // a [obsahuje (@ class, 'k-nav- rýchlo ')] "));// tlačidlo na presun predchádzajúceho mesiaca v kalendáriWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header') // a [obsahuje (@ class, 'k-nav- predchádzajúci)] "));// Rozdelením času a dátumu získate iba časť s dátumomReťazec date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// získa ročný rozdiel medzi aktuálnym rokom a rokom, ktorý sa nastaví v kalandriint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();if (yearDiff! = 0) {// ak sa budeš musieť sťahovať budúci rokif (yearDiff> 0) {pre (int i = 0; i" + i);nextLink.click ();}}// ak sa musíte presunúť predchádzajúci rokinak if (yearDiff <0) {pre (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Year Diff ->" + i);previousLink.click ();}}}Závit. Spánok (1 000);// Získajte všetky mesiace z kalendára a vyberte ten správnyZoznam list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabuľka // tbody // td [nie (obsahuje (@ trieda, 'k-iný-mesiac') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .click ();Závit. Spánok (1 000);// získa všetky dátumy z kalendára a vyberie správnyZoznam list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabuľka // tbody // td [nie (obsahuje (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();/// NA ČASWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// tlačidlo výberu časuselectTime.click ();// získať zoznam časovZoznam allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup'] [obsahuje (@ style, 'display: block'))] // ul // li [@role = 'option'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// vyberte správny časpre (WebElement webElement: allTime) {if (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}
Výstup bude ako