Kaip pasirinkti datą iš „DatePicker“ / kalendoriaus „Selenium Webdriver“

Anonim

Pasirinkus „DateTime“, HTML5 turi naują valdiklį, parodytą toliau.

Viršutinį puslapį galite pasiekti čia

Jei matysime „DateTime Picker“ valdiklio DOM, datos ir laiko bus tik vienas įvesties laukelis.

Taigi, norėdami valdyti tokio tipo valdymą, pirmiausia užpildysime datą, neatskirdami nuo skiriamojo, ty jei data yra 2013 09 25, tada mes įvesime laukelį 09252013. Kai tai bus padaryta, mes pakeisime dėmesį nuo datos iki laiko, paspausdami „tabuliavimo klavišą“ ir užpildymo laiką.

Jei mums reikia užpildyti 14:45, mes perduosime jam „0245PM“ į tą patį įvesties laukelį.

Duomenų rinkiklio kodas atrodo taip -

importuoti java.util.List;importuoti java.util.concurrent.TimeUnit;importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.Raktai;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.WebElement;importuoti org.openqa.selenium.chrome.ChromeDriver;importuoti org.testng.annotations.Test;public class DateTimePicker {@Testpublic void dateTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");„WebDriver“ tvarkyklė = nauja „ChromeDriver“ ();vairuotojas.tvarkyti (). skirtasis laikas (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Raskite datos ir laiko parinkiklio valdiklį„WebElement dateBox = driver.findElement (By.xpath (" // forma // įvestis [@ vardas = 'bdaytime'] "));// Užpildykite datą kaip mm / dd / yyyy kaip 2013 09 25dateBox.sendKeys ("09252013");// Paspauskite skirtuką, kad perkeltumėte dėmesį į laiko laukądateBox.sendKeys (Keys.TAB);// Užpildykite laiką 14:45 valdateBox.sendKeys („0245PM“);}}

Rezultatas bus panašus į

Pažvelkime į kitą kalendoriaus pavyzdį. Mes naudosime „Telerik DateTimePicker“ valdymą. Su ja galima susipažinti čia

Čia, jei reikia pakeisti mėnesį, turime spustelėti kalendoriaus antraštės vidurį.

Panašiai, jei mums reikia pakeisti metus, tai galime padaryti spustelėdami kitą arba ankstesnę nuorodą duomenų rinkiklyje.

Galiausiai, norėdami pakeisti laiką, išskleidžiamajame meniu galime pasirinkti teisingą laiką (pastaba: čia laikas parenkamas 30 min. Intervalu, ty 12:00, 12:30, 1:00, 1:30 ir kt.).

Išsamus pavyzdys atrodo kaip

importuoti java.util.Calendar;importuoti java.util.List;importuoti java.util.concurrent.TimeUnit;importuoti org.openqa.selenium.By;importuoti org.openqa.selenium.WebDriver;importuoti org.openqa.selenium.WebElement;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.annotations.Test;viešoji klasė „DatePicker“ {@Testpublic void testDAtePicker () išmeta išimtį {// DAte ir laikas, kurį reikia nustatyti teksto laukelyjeString dateTime = "2014-07-12 14:00";„WebDriver“ tvarkyklė = nauja „FirefoxDriver“ ();vairuotojas.tvarkyti (). langas (). padidinti ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");vairuotojas.tvarkyti (). skirtasis laikas (). implicitlyWait (10, TimeUnit.SECONDS);// mygtukas, kad atidarytumėte kalendorių„WebElement selectDate = driver.findElement (By.xpath (" // span [@ aria-controls = 'datetimepicker_dateview'] "));selectDate.click ();// mygtukas, norėdamas pereiti kitą kalendoriuje„WebElement nextLink = driver.findElement“ (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [yra (@ class, 'k-nav- Kitas')]"));// mygtukas, norėdamas spustelėti kalendoriaus antraštės centreWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [yra (@ class, 'k-nav- greitai')]"));// mygtukas, norėdamas perkelti ankstesnį mėnesį kalendoriujeWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [yra (@ class, 'k-nav- ankstesnis ')] "));// Suskirstykite datos laiką, kad gautumėte tik datos dalįEilutė data_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// gauti metų skirtumą tarp einamųjų metų ir metų, kuriuos reikia nustatytiint yearDiff = Sveikasis skaičius.parseInt (data_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.spustelėkite ();jei (metaiDiff! = 0) {// jei teks kraustytis kitais metaisjei (metų skirtumas> 0) {už (int i = 0; i " + i);nextLink.spustelėkite ();}}// jei teks kraustytis praėjusiais metaisdar kitaip, jei (metų skirtumas <0) {už (int i = 0; i <(metųDiff * (- 1)); i ++) {System.out.println ("Dif. Metai ->" + i);previousLink.click ();}}}Siūlas.miega (1000);// Gauti visus kalendoriaus mėnesius, kad pasirinktumėte teisingąSąrašas  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // lentelė // tbody // td [ne (yra (yra (@ klasė,„ k-kitas mėnuo “) ))] "));list_AllMonthToBook.get (Integer.parseInt (data_dd_MM_yyyy [1]) - 1) .spustelėkite ();Siūlas.miega (1000);// gaukite visas kalendoriaus datas, kad pasirinktumėte teisingąSąrašas  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // lentelė // tbody // td [ne (yra (yra (@ klasė,„ k-kitas mėnuo “) ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .spustelėkite ();/// LAIKU„WebElement“ selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// spustelėkite laiko rinkiklio mygtukąselectTime.click ();// gauti kartų sąrašąSąrašas  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup']] [yra (@ style, 'display: block')] // ul // li [@role = 'variantas'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// pasirinkite teisingą laikąskirta („WebElement webElement: allTime“) {jei (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}

Rezultatas bus panašus