Как да изберете дата от DatePicker / Календар в Selenium Webdriver

Anonim

За избор на DateTime, HTML5 има нов контрол, показан по-долу.

Тук можете да получите достъп до горната страница

Ако видим DOM на контрола за избор на дата и час, ще има само едно поле за въвеждане както за дата, така и за час.

Така че, за да се справим първо с този тип контрол, ще попълним датата, без да отделяме с разделител, т.е. ако датата е 25.09.2013, тогава ще предадем 09252013 в полето за въвеждане. След като приключим, ще изместим фокуса от дата на време, като натиснем „таб“ и попълним времето.

Ако трябва да попълним 14:45, ще го предадем на '0245PM' в същото поле за въвеждане.

Кодът за datepicker изглежда така -

импортиране на java.util.List;импортиране на java.util.concurrent.TimeUnit;внос org.openqa.selenium.By;внос org.openqa.selenium.Keys;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.chrome.ChromeDriver;внос org.testng.annotations.Test;публичен клас DateTimePicker {@Тестpublic void dateTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Драйвер за WebDriver = нов ChromeDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Намерете контрола за избор на дата и часWebElement dateBox = driver.findElement (By.xpath ("// форма // вход [@ name = 'bdaytime']"));// Дата на попълване като mm / dd / yyyy като 25.09.2013dateBox.sendKeys ("09252013");// Натиснете раздела, за да изместите фокуса към полето за времеdateBox.sendKeys (Keys.TAB);// Време за запълване като 14:45 PMdateBox.sendKeys ("0245PM");}}

Изходът ще бъде като-

Нека разгледаме друг пример за Календар. Ще използваме контрола Telerik DateTimePicker. Може да бъде достъпен тук

Тук, ако трябва да променим месеца, трябва да кликнете върху средата на заглавката на календара.

По същия начин, ако трябва да сменим годината, тогава можем да го направим, като щракнем върху следващата или предишната връзка в датчика.

И накрая за промяна на часа можем да изберем правилния час от падащото меню (Забележка: Тук времето се избира в интервал от 30 минути. Т.е. 12:00, 12:30, 1:00, 1:30 и т.н.).

Пълен пример изглежда-

импортиране на java.util.Calendar;импортиране на java.util.List;импортиране на java.util.concurrent.TimeUnit;внос org.openqa.selenium.By;импортиране на org.openqa.selenium.WebDriver;внос org.openqa.selenium.WebElement;импортиране на org.openqa.selenium.firefox.FirefoxDriver;внос org.testng.annotations.Test;публичен клас DatePicker {@Тестpublic void testDAtePicker () хвърля изключение {// DAte и час, които трябва да бъдат зададени в текстовото полеString dateTime = "07.07.2014 г. 14:00 ч.";Драйвер за WebDriver = нов FirefoxDriver ();driver.manage (). window (). maximize ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);// бутон за отваряне на календараWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']"));selectDate.click ();// бутон за преместване на следващия в календараWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [съдържа (@ клас, 'k-nav- следващия')]"));// бутон за щракване в центъра на заглавката на календараWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [съдържа (@ клас, 'k-nav- бърз')]"));// бутон за преместване на предходния месец в календараWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [съдържа (@ клас, 'k-nav- пред ')] "));// Разделете часа на датата, за да получите само частта с дататаНиз date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// получаваме годишната разлика между текущата година и годината, която трябва да зададете в каландърint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();if (yearDiff! = 0) {// ако трябва да се преместиш през следващата годинаif (yearDiff> 0) {за (int i = 0; i " + i);nextLink.click ();}}// ако трябва да се преместиш предишната годинаиначе ако (yearDiff <0) {за (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Разлика в годината ->" + i);previousLink.click ();}}}Thread.sleep (1000);// Вземете всички месеци от календара, за да изберете правилнияСписък  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // таблица // tbody // td [не (съдържа (@ клас, 'k-друг месец ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .click ();Thread.sleep (1000);// получаваме всички дати от календара, за да изберете правилнатаСписък  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // таблица // tbody // td [не (съдържа (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();///ЗА ВРЕМЕWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// щракване върху бутона за избор на времеselectTime.click ();// получавам списък с пътиСписък  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup']] [съдържа (@ стил, 'дисплей: блок')] // ul // li [@role = 'опция'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// изберете правилен часза (WebElement webElement: allTime) {if (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}

Резултатът ще бъде като