Sådan vælges dato fra DatePicker / Kalender i Selen Webdriver

Anonim

Til valg af DateTime har HTML5 en ny kontrol vist nedenfor.

Ovenstående side kan tilgås her

Hvis vi ser DOM for DateTime Picker-kontrollen, vil der kun være en indtastningsboks til både dato og klokkeslæt.

Så for at håndtere denne type kontrol først udfylder vi dato uden at adskille med afgrænser, dvs. hvis dato er 09/25/2013, så sender vi 09252013 til inputboksen. Når det er gjort, skifter vi fokus fra dato til tid ved at trykke på 'fane' og udfyldningstid.

Hvis vi har brug for at udfylde kl. 14.45, sender vi det '0245 PM' til samme indtastningsfelt.

Koden til datepicker ser sådan ud -

importere java.util.List;import java.util.concurrent.TimeUnit;importer 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;offentlig klasse DateTimePicker {@Prøveoffentlig ugyldighedsdatoTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-driver = ny ChromeDriver ();driver.manage (). timeouts (). implicitWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Find kontrol af dato-klokkeslætWebElement dateBox = driver.findElement (By.xpath ("// form // input [@ name = 'bdaytime']"));// Udfyld dato som mm / dd / åååå som 25-09-2013dateBox.sendKeys ("09252013");// Tryk på fanen for at skifte fokus til tidsfeltetdateBox.sendKeys (Keys.TAB);// Udfyld tid som 14.45dateBox.sendKeys ("0245PM");}}

Output vil være som-

Lad os se på et andet kalendereksempel. Vi bruger Telerik DateTimePicker-kontrol. Kan tilgås her

Her, hvis vi har brug for at ændre måneden, skal vi klikke på midten af ​​kalenderoverskriften.

På samme måde, hvis vi har brug for at ændre året, kan vi gøre det ved at klikke på næste eller tidligere links på datapickeren.

Og endelig for at ændre tiden kan vi vælge den korrekte tid fra rullemenuen (Bemærk: Her vælges tid i et mellemrum på 30 min. Dvs. 12:00, 12:30, 1:00, 1:30 osv.).

Et komplet eksempel ser ud som-

importer java.util.Calendar;importere java.util.List;import java.util.concurrent.TimeUnit;importer 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;offentlig klasse DatePicker {@Prøvepublic void testDAtePicker () kaster undtagelse {// DAte og tid, der skal indstilles i tekstfeltetString dateTime = "12/07/2014 14:00";WebDriver-driver = ny FirefoxDriver ();driver.manage (). vindue (). maksimere ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). implicitWait (10, TimeUnit.SECONDS);// knap for at åbne kalenderenWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']");selectDate.click ();// knap for at flytte næste i kalenderenWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [indeholder (@ klasse, 'k-nav- Næste')]"));// knap for at klikke i midten af ​​kalenderoverskriftenWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [indeholder (@ klasse, 'k-nav- hurtig')]"));// knap for at flytte forrige måned i kalenderenWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [indeholder (@ klasse, 'k-nav- prev ')] "));// Opdel datoen for kun at få datodelenString date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// få årsforskellen mellem indeværende år og år for at indstille i calanderint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();hvis (yearDiff! = 0) {// hvis du skal flytte næste århvis (yearDiff> 0) {for (int i = 0; i " + i);nextLink.click ();}}// hvis du skal flytte det foregående årellers hvis (yearDiff <0) {for (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Årsdiff ->" + i);previousLink.click ();}}}Tråd. Søvn (1000);// Få alle måneder fra kalenderen for at vælge den rigtigeListe  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabel // tbody // td [ikke (indeholder (@ klasse, 'k-anden måned') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1). klik ();Tråd. Søvn (1000);// få alle datoer fra kalenderen for at vælge den rigtigeListe  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabel // tbody // td [ikke (indeholder (@ klasse, 'k-anden måned') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1). klik ();/// FOR TIDWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// klik på tidsvælger-knappenselectTime.click ();// få listen over tiderListe  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup'] [indeholder (@ style, 'display: block')] // ul // li [@role = 'option'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// vælg det rigtige tidspunkttil (WebElement webElement: allTime) {hvis (webElement.getText (). er lig med IgnoreCase (dateTime)){webElement.click ();}}}}

Output vil være som