Kuinka valita päivämäärä DatePickeristä / Kalenterista Selenium Webdriverissa

Anonim

DateTime-valintaa varten HTML5: llä on uusi ohjausobjekti, joka näkyy alla.

Yllä olevalle sivulle pääsee täältä

Jos näemme DateTime Picker -ohjaimen DOM: n, sekä päivämäärälle että kellolle on vain yksi syöttöruutu.

Joten käsittelemään tämän tyyppistä ohjausta ensin täytämme päivämäärän erottamatta erotinmerkillä, ts. Jos päivämäärä on 25/25/2013, siirrämme 09252013 syöttöruutuun. Kun olet valmis, siirrämme kohdennuksen päivämäärästä toiseen painamalla välilehteä ja täyttöaikaa.

Jos meidän on täytettävä 14.45, välitämme sille 0245PM samaan syöttöruutuun.

Datepickerin koodi näyttää tältä -

tuo java.util.List;tuo java.util.concurrent.TimeUnit;tuo org.openqa.selenium.By;tuonti org.openqa.selenium.Keys;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.chrome.ChromeDriver;tuo org.testng.annotations.Test;public class DateTimePicker {@Testatapublic void dateTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-ohjain = uusi ChromeDriver ();driver.manage (). timeout (). implisiittisesti Odota (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Etsi päivämäärän ja ajan valitsinWebElement dateBox = driver.findElement (By.xpath ("// lomake // input [@ name = 'bdaytime']" "));// Täytä päivämäärä kk / pp / vvvv 25.9.2013dateBox.sendKeys ("09252013");// Siirrä kohdistus aikakenttään painamalla sarkaintadateBox.sendKeys (Avaimet.TAB);// Täytä aika klo 14.45dateBox.sendKeys ("0245PM");}}

Tulos on kuin-

Tarkastellaan toista esimerkkiä Kalenterista. Käytämme Telerik DateTimePicker -ohjausta. Pääset täältä

Täällä, jos joudumme vaihtamaan kuukautta, meidän on napsautettava kalenterin otsikon keskiosaa.

Vastaavasti, jos meidän on vaihdettava vuosi, voimme tehdä sen napsauttamalla seuraavaa tai edellistä linkkiä datapainimessa.

Ja lopuksi ajan muuttamiseksi voimme valita oikean ajan pudotusvalikosta (Huomaa: Tässä aika valitaan 30 minuutin välein eli 12:00, 12:30, 1:00, 1:30 jne.).

Täydellinen esimerkki näyttää-

tuo java.util.Calendar;tuo java.util.List;tuo java.util.concurrent.TimeUnit;tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuonti org.openqa.selenium.WebElement;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.annotations.Test;public class DatePicker {@Testatapublic void testDAtePicker () heittää poikkeuksen {// DAte ja aika asetetaan tekstilaatikkoonMerkkijono dateTime = "12.07.2014 14:00";WebDriver-ohjain = uusi FirefoxDriver ();ohjain.hallinta (). ikkuna (). maksimoi ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeout (). implisiittisesti Odota (10, TimeUnit.SECONDS);// -painike avaa kalenteriWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_dateview']"));selectDate.click ();// -painike siirtyäksesi seuraavaksi kalenterissaWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [sisältää (@ class, 'k-nav- Seuraava')]"));// -painiketta napsauttamalla kalenterin otsikon keskelläWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [sisältää (@ class, 'k-nav- nopeasti')]"));// -painike siirtää edellistä kuukautta kalenterissaWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [sisältää (@ class, 'k-nav- edellinen ')] "));// Jaa päivämäärä aika saadaksesi vain päivämääräosanMerkkijono date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// saat kalenteriin asetettavan vuoden eron kuluvan vuoden ja vuoden välilläint yearDiff = Kokonaisluku.parseInt (päivämäärä_pp_KK_vvvv [2]) - Kalenteri.getInstance (). get (Kalenteri.VUOSI);midLink.click ();jos (vuosiero! = 0) {// jos joudut muuttamaan ensi vuonnaif (vuosiero> 0) {for (int i = 0; i " + i);nextLink.click ();}}// jos joudut muuttamaan edellisenä vuonnamuu jos (vuosiero <0) {for (int i = 0; i <(vuosiero * (- 1)); i ++) {System.out.println ("Vuosiero ->" + i);previousLink.click ();}}}Lanka. Unessa (1000);// Hae kaikki kuukaudet kalenterista valitaksesi oikeanLuettelo  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // taulukko // tbody // td [ei (sisältää (@ luokka, 'k-muu kuukausi' ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .click ();Lanka. Unessa (1000);// hae kaikki päivämäärät kalenterista valitaksesi oikeanLuettelo  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // taulukko // tbody // td [ei (sisältää (@ luokka, 'k-muu kuukausi') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();/// AJANWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-controls = 'datetimepicker_timeview']"));// napsauta ajanvalitsinpainikettaselectTime.click ();// hae luettelo kertaaLuettelo  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup']] [sisältää (@ style, 'display: block')] // ul // li [@role = 'vaihtoehto'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// valitse oikea aikakohteelle (WebElement webElement: allTime) {if (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}

Tulos on kuin