Hur man väljer datum från DatePicker / Kalender i Selen Webdriver

Anonim

För val av DateTime har HTML5 en ny kontroll som visas nedan.

Ovanstående sida kan nås här

Om vi ​​ser DOM för kontrollen av DateTime Picker kommer det bara att finnas en inmatningsruta för både datum och tid.

Så för att hantera denna typ av kontroll först kommer vi att fylla i datum utan att separera med avgränsare, dvs om datumet är 25-09-2013, så skickar vi 09252013 till inmatningsrutan. När du är klar kommer vi att flytta fokus från datum till tid genom att trycka på "tab" och fyllningstid.

Om vi ​​behöver fylla kl. 14.45 skickar vi det '0245 PM' till samma inmatningsruta.

Koden för datepicker ser ut så här -

importera java.util.List;importera java.util.concurrent.TimeUnit;importera org.openqa.selenium.By;importera org.openqa.selenium.Keys;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.chrome.ChromeDriver;importera org.testng.annotations.Test;offentlig klass DateTimePicker {@Testaoffentligt ogiltigt datumTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-drivrutin = ny ChromeDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Hitta datumväljaren kontrollWebElement dateBox = driver.findElement (By.xpath ("// form // input [@ name = 'bdaytime']"));// Fyll datum som mm / dd / åååå som 2013-09-25dateBox.sendKeys ("09252013");// Tryck på fliken för att flytta fokus till tidsfältetdateBox.sendKeys (Keys.TAB);// Fylltid som 14.45dateBox.sendKeys ("0245PM");}}

Produktionen kommer att vara som-

Låt oss titta på ett annat kalenderexempel. Vi kommer att använda Telerik DateTimePicker-kontroll. Kan nås här

Här om vi behöver ändra månaden måste vi klicka på mitten av kalenderhuvudet.

På samma sätt om vi behöver ändra året kan vi göra det genom att klicka på nästa eller tidigare länkar på datapickern.

Och slutligen för att ändra tiden kan vi välja rätt tid från rullgardinsmenyn (Obs: Här väljs tiden i ett mellanrum på 30 min. Dvs. 12:00, 12:30, 1:00, 1:30 etc.).

Ett komplett exempel ser ut som-

importera java.util.Calendar;importera java.util.List;importera java.util.concurrent.TimeUnit;importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.WebElement;importera org.openqa.selenium.firefox.FirefoxDriver;importera org.testng.annotations.Test;public class DatePicker {@Testapublic void testDAtePicker () kastar undantag {// DAte och Time to be set in textboxString dateTime = "12/07/2014 14:00";WebDriver-drivrutin = ny FirefoxDriver ();driver.manage (). fönster (). maximera ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);// knapp för att öppna kalendernWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']");selectDate.click ();// knapp för att flytta nästa i kalendernWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [innehåller (@ class, 'k-nav- Nästa')]"));// knapp för att klicka i mitten av kalenderhuvudetWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [innehåller (@ class, 'k-nav- snabb')]"));// knapp för att flytta föregående månad i kalendernWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [innehåller (@ class, 'k-nav- föregående ')] "));// Dela datumtiden för att bara få datumdelenString date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// få årsskillnaden mellan aktuellt år och år för att ställa in i kalanderint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();if (yearDiff! = 0) {// om du måste flytta nästa årif (yearDiff> 0) {för (int i = 0; i " + i);nextLink.click ();}}// om du måste flytta föregående årannars om (yearDiff <0) {för (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Year Diff ->" + i);previousLink.click ();}}}Thread.sleep (1000);// Få alla månader från kalendern för att välja rättLista  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabell // tbody // td [ej (innehåller (@ class, 'k-other-month') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .click ();Thread.sleep (1000);// få alla datum från kalendern för att välja rättLista  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabell // tbody // td [inte (innehåller (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();///FÖR TIDWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']");// klicka på tidsväljarknappenselectTime.click ();// få lista över tiderLista  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup']] innehåller (@ stil, 'display: block')] // ul // li [@role = 'option'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// välj rätt tidför (WebElement webElement: allTime) {if (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}

Produktionen kommer att vara som