Voor DateTime-selectie heeft HTML5 een nieuw besturingselement dat hieronder wordt weergegeven.
Bovenstaande pagina is hier toegankelijk
Als we de DOM van het besturingselement DateTime Picker zien, is er slechts één invoervak voor zowel de datum als de tijd.
Dus om dit type controle eerst af te handelen, vullen we de datum in zonder te scheiden met een scheidingsteken, dwz als de datum 25-09-2013 is, dan zullen we 09252013 doorgeven aan het invoervak. Als u klaar bent, zullen we de focus van datum naar tijd verplaatsen door op 'tab' te drukken en tijd te vullen.
Als we 14:45 uur moeten invullen, geven we het een '0245PM' door aan hetzelfde invoervak.
De code voor datepicker ziet er als volgt uit -
importeer java.util.List;importeer java.util.concurrent.TimeUnit;import org.openqa.selenium.By;importeer org.openqa.selenium.Keys;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.WebElement;importeer org.openqa.selenium.chrome.ChromeDriver;importeer org.testng.annotations.Test;openbare klasse DateTimePicker {@Testopenbare ongeldige dateTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-stuurprogramma = nieuwe ChromeDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Zoek het besturingselement voor het kiezen van de datum / tijdWebElement dateBox = driver.findElement (By.xpath ("// form // input [@ name = 'bdaytime']"));// Vul de datum in als mm / dd / jjjj als 25-09-2013dateBox.sendKeys ("09252013");// Druk op tab om de focus naar het tijdveld te verplaatsendateBox.sendKeys (Keys.TAB);// Vul tijd in als 14:45 uurdateBox.sendKeys ("0245PM");
De uitvoer zal zijn als-
Laten we eens kijken naar een ander kalendervoorbeeld. We zullen Telerik DateTimePicker-besturing gebruiken. Kan hier worden geraadpleegd
Hier als we de maand moeten wijzigen, moeten we op het midden van de kalenderkop klikken.
Evenzo als we het jaar moeten wijzigen, kunnen we dit doen door op de volgende of vorige links op de datepicker te klikken.
En tot slot kunnen we voor het wijzigen van de tijd de juiste tijd selecteren in de vervolgkeuzelijst (Opmerking: hier wordt de tijd geselecteerd in een interval van 30 minuten, dwz 12:00, 12:30, 1:00, 1:30 enz.).
Een compleet voorbeeld ziet eruit als-
importeer java.util.Calendar;importeer java.util.List;importeer java.util.concurrent.TimeUnit;import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.WebElement;importeer org.openqa.selenium.firefox.FirefoxDriver;importeer org.testng.annotations.Test;openbare klasse DatePicker {@Testpublic void testDAtePicker () gooit uitzondering {// DAte en tijd die in het tekstvak moeten worden ingesteldString dateTime = "12/07/2014 14:00 uur";WebDriver-stuurprogramma = nieuwe FirefoxDriver ();driver.manage (). window (). maximaliseren ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);// knop om de kalender te openenWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']"));selectDate.click ();// knop om verder te gaan in de kalenderWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [bevat (@ class, 'k-nav- De volgende')]"));// knop om in het midden van de kalenderkop te klikkenWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [bevat (@ class, 'k-nav- snel')]"));// knop om de vorige maand in de kalender te verplaatsenWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [bevat (@ class, 'k-nav- prev ')] "));// Splits de datum en tijd om alleen het datumgedeelte te krijgenString date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// verkrijg het jaarverschil tussen het huidige jaar en het jaar om in kalender in te stellenint yearDiff = Geheel getal.parseInt (datum_dd_MM_jjjj [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();if (yearDiff! = 0) {// als je volgend jaar moet verhuizenif (yearDiff> 0) {voor (int i = 0; i" + i);nextLink.click ();// als u vorig jaar moet verhuizenelse if (yearDiff <0) {voor (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Jaarverschil ->" + i);vorigeLink.click ();Thread.sleep (1000);// Haal alle maanden uit de kalender om de juiste te selecterenLijst list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [niet (bevat (@ class, 'k-other-month') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .click ();Thread.sleep (1000);// haal alle datums uit de kalender om de juiste te selecterenLijst list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [niet (bevat (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();///VOOR TIJDWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// klik op de tijdkiezerselectTime.click ();// krijg een lijst met tijdenLijst allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup'] [bevat (@ style, 'display: block')] // ul // li [@role = 'optie'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// selecteer de juiste tijdvoor (WebElement webElement: allTime) {if (webElement.getText (). equalsIgnoreCase (dateTime))webElement.click ();
De uitvoer zal zijn als