Hvordan velge dato fra DatePicker / Kalender i Selenium Webdriver

Anonim

For valg av DateTime har HTML5 en ny kontroll vist nedenfor.

Over siden kan nås her

Hvis vi ser DOM for DateTime Picker-kontrollen, vil det bare være en inntastingsboks for både dato og klokkeslett.

Så for å håndtere denne typen kontroll vil vi først fylle ut dato uten å skille med skilletegn, dvs. hvis datoen er 09/25/2013, så sender vi 09252013 til inntastingsboksen. Når du er ferdig, vil vi skifte fokus fra dato til tid ved å trykke på 'tab' og fylle tid.

Hvis vi trenger å fylle ut 14.45, vil vi sende den '0245 PM' til samme inntastingsboks.

Koden for datepicker ser slik ut -

importere java.util.List;importere java.util.concurrent.TimeUnit;importer org.openqa.selenium.By;importer org.openqa.selenium.Keys;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.chrome.ChromeDriver;importer org.testng.annotations.Test;offentlig klasse DateTimePicker {@Testoffentlig ugyldig datoTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver driver = ny ChromeDriver ();driver.manage (). timeouts (). implicitly Waait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Finn kontrollen over dato klokkeslettWebElement dateBox = driver.findElement (By.xpath ("// form // input [@ name = 'bdaytime']"));// Fyll ut dato som mm / dd / åååå som 25/09/2013dateBox.sendKeys ("09252013");// Trykk på fanen for å skifte fokus til tidsfeltdateBox.sendKeys (Keys.TAB);// Fyll tid som 14.45dateBox.sendKeys ("0245PM");}}

Produksjonen vil være som-

La oss se på et annet kalendereksempel. Vi vil bruke Telerik DateTimePicker-kontroll. Kan nås her

Her hvis vi trenger å endre måneden, må vi klikke på midten av kalenderoverskriften.

Tilsvarende hvis vi trenger å endre året, kan vi gjøre det ved å klikke på neste eller forrige lenker på datapickeren.

Og til slutt for å endre tiden kan vi velge riktig tid fra rullegardinmenyen (Merk: Her er tiden valgt i et gap på 30 min. Dvs. 12:00, 12:30, 1:00, 1:30 osv.).

Et komplett eksempel ser ut som-

importere java.util.Calendar;importere java.util.List;importere java.util.concurrent.TimeUnit;importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.WebElement;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.testng.annotations.Test;offentlig klasse DatePicker {@Testpublic void testDAtePicker () kaster unntak {// DAte og tid som skal angis i tekstboksenString dateTime = "12/07/2014 14:00";WebDriver-driver = ny FirefoxDriver ();driver.manage (). vindu (). maksimere ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). implicitly Waait (10, TimeUnit.SECONDS);// knapp for å åpne kalenderenWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']"));selectDate.click ();// knapp for å flytte neste i kalenderenWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [inneholder (@ class, 'k-nav- neste ')] "));// knapp for å klikke i midten av kalenderoverskriftenWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [inneholder (@ class, 'k-nav- fort')]"));// knapp for å flytte forrige måned i kalenderenWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [inneholder (@ class, 'k-nav- prev ')] "));// Del datoen for å få bare datodelenString date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// få årsforskjellen mellom inneværende år og år for å angi i calanderint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();hvis (yearDiff! = 0) {// hvis du må flytte neste århvis (yearDiff> 0) {for (int i = 0; i " + i);nextLink.click ();}}// hvis du må flytte året førannet hvis (yearDiff <0) {for (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Year Diff ->" + i);previousLink.click ();}}}Tråd. Søvn (1000);// Få alle månedene fra kalenderen for å velge riktigListe  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabell // tbody // td [ikke (inneholder (@ class, 'k-other-month') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1). klikk ();Tråd. Søvn (1000);// få alle datoer fra kalenderen for å velge riktigListe  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabell // tbody // td [ikke (inneholder (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();/// FOR TIDWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// klikk på tidsvelger-knappenselectTime.click ();// få liste over tiderListe  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup'] [inneholder (@ stil, 'display: blokk')] // ul // li [@role = 'alternativ'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// velg riktig tidfor (WebElement webElement: allTime) {hvis (webElement.getText (). er likIgnoreCase (dateTime)){webElement.click ();}}}}

Produksjonen vil være som