Pentru selectarea DateTime, HTML5 are un nou control prezentat mai jos.
Pagina de mai sus poate fi accesată aici
Dacă vedem DOM-ul controlului DateTime Picker, va exista o singură casetă de intrare atât pentru dată cât și pentru oră.
Deci, pentru a gestiona mai întâi acest tip de control, vom completa data fără a ne separa cu delimitator, adică dacă data este 25.09.2013, atunci vom trece 09252013 la caseta de intrare. După ce ați terminat, vom schimba focalizarea de la dată la oră apăsând „tab” și timp de completare.
Dacă trebuie să completăm ora 14:45, îi vom transmite un „0245PM” în aceeași casetă de intrare.
Codul pentru datepicker arată astfel -
import java.util.List;import java.util.concurrent.TimeUnit;import 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;public class DateTimePicker {@Testpublic void dateTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Driver WebDriver = nou ChromeDriver ();driver.manage (). timeouts (). implicit Așteptați (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Găsiți controlul selectorului de dată și orăWebElement dateBox = driver.findElement (By.xpath ("// formular // input [@ name = 'bdaytime']"));// Completați data ca mm / zz / aaaa până la 25.09.2013dateBox.sendKeys ("09252013");// Apăsați tasta pentru a muta focalizarea pe câmpul de timpdateBox.sendKeys (Keys.TAB);// Completați ora 14:45dateBox.sendKeys ("0245PM");}}
Rezultatul va fi ca-
Să vedem un alt exemplu de Calendar. Vom folosi controlul Telerik DateTimePicker. Poate fi accesat aici
Aici, dacă trebuie să schimbăm luna, trebuie să facem clic pe mijlocul antetului calendarului.
În mod similar, dacă trebuie să schimbăm anul, îl putem face dând clic pe linkurile următoare sau anterioare din datapicker.
Și, în cele din urmă, pentru schimbarea orei, putem selecta ora corectă din meniul derulant (Notă: Aici timpul este selectat într-un interval de 30 de minute, adică 12:00, 12:30, 1:00, 1:30 etc.).
Un exemplu complet arată ca-
import java.util.Calendar;import java.util.List;import java.util.concurrent.TimeUnit;import 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;public class DatePicker {@Testpublic void testDAtePicker () aruncă excepție {// DAte și Time pentru a fi setate în caseta de textString dateTime = "12/07/2014 14:00";Driver WebDriver = nou FirefoxDriver ();driver.manage (). window (). maximize ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). implicit Așteptați (10, TimeUnit.SECONDS);// buton pentru a deschide calendarulWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']"));selectDate.click ();// buton pentru a vă deplasa în calendarWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [contains (@ class, 'k-nav- Următorul')]"));// buton pentru a face clic în centrul antetului calendaruluiWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [contains (@ class, 'k-nav- rapid')]"));// buton pentru a muta luna anterioară în calendarWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [contains (@ class, 'k-nav- prev ')] "));// Împărțiți data și ora pentru a obține doar partea de datăString date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// obțineți diferența de an între anul curent și anul pentru a seta în calandruint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();if (yearDiff! = 0) {// dacă trebuie să te muți anul viitorif (yearDiff> 0) {for (int i = 0; i" + i);nextLink.click ();}}// dacă trebuie să vă mutați anul precedentelse if (yearDiff <0) {for (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Year Diff ->" + i);previousLink.click ();}}}Thread.sleep (1000);// Obțineți toate lunile din calendar pentru a selecta unul corectListă list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabel // tbody // td [not (conține (@ class, 'k-other-month') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .click ();Thread.sleep (1000);// obțineți toate datele din calendar pentru a selecta una corectăListă list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // tabel // tbody // td [not (conține (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();///PENTRU TIMPWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// faceți clic pe butonul selector de timpselectTime.click ();// obțineți lista de oriListă allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup']] [conține (@ stil, 'display: block')] // ul // li [@role = 'opțiune'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// selectați ora corectăpentru (WebElement webElement: allTime) {if (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}
Rezultatul va fi ca.