So wählen Sie das Datum aus DatePicker / Kalender in Selenium Webdriver aus

Anonim

Für die DateTime-Auswahl verfügt HTML5 über ein neues Steuerelement (siehe unten).

Die obige Seite kann hier abgerufen werden

Wenn das DOM des DateTime Picker-Steuerelements angezeigt wird, gibt es nur ein Eingabefeld für Datum und Uhrzeit.

Um diese Art der Steuerung zuerst zu handhaben, füllen wir zuerst das Datum ohne Trennzeichen, dh wenn das Datum der 25.09.2013 ist, übergeben wir 09252013 an das Eingabefeld. Sobald dies erledigt ist, verschieben wir den Fokus von Datum zu Uhrzeit, indem wir die Tabulatortaste drücken und die Uhrzeit füllen.

Wenn wir 14.45 Uhr füllen müssen, geben wir eine '0245PM' an dasselbe Eingabefeld weiter.

Der Code für Datepicker sieht folgendermaßen aus:

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;öffentliche Klasse DateTimePicker {@Prüfungpublic void dateTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Finde das Datum / Uhrzeit-Picker-SteuerelementWebElement dateBox = driver.findElement (By.xpath ("// form // input [@ name = 'bdaytime']"));// Datum als MM / TT / JJJJ als 25.09.2013 ausfüllendateBox.sendKeys ("09252013");// Drücken Sie die Tabulatortaste, um den Fokus auf das Zeitfeld zu verschiebendateBox.sendKeys (Keys.TAB);// Zeit als 14.45 Uhr füllendateBox.sendKeys ("0245PM");}}}}

Die Ausgabe wird wie folgt sein:

Schauen wir uns ein anderes Kalenderbeispiel an. Wir werden das Telerik DateTimePicker-Steuerelement verwenden. Kann hier abgerufen werden

Wenn wir hier den Monat ändern müssen, müssen wir auf die Mitte der Kalenderüberschrift klicken.

Wenn wir das Jahr ändern müssen, können wir dies auch tun, indem wir auf den nächsten oder vorherigen Link im Datepicker klicken.

Und schließlich können wir zum Ändern der Zeit die richtige Zeit aus der Dropdown-Liste auswählen (Hinweis: Hier wird die Zeit in einem Abstand von 30 Minuten ausgewählt, dh 12:00, 12:30, 1:00, 1:30 usw.).

Ein vollständiges Beispiel sieht aus wie:

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;öffentliche Klasse DatePicker {@Prüfungpublic void testDAtePicker () löst eine Ausnahme aus {// DAte und Uhrzeit, die im Textfeld festgelegt werden sollenString dateTime = "12/07/2014 2:00 PM";WebDriver-Treiber = neuer FirefoxDriver ();driver.manage (). window (). maxim ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS);// Schaltfläche zum Öffnen des KalendersWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-control = 'datetimepicker_dateview']"));selectDate.click ();// Schaltfläche, um als nächstes im Kalender zu verschiebenWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [enthält (@ class, 'k-nav- Nächster')]"));// Schaltfläche, um in die Mitte der Kalenderüberschrift zu klickenWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [enthält (@ class, 'k-nav- schnell')]"));// Schaltfläche zum Verschieben des Vormonats im KalenderWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [enthält (@ class, 'k-nav- prev ')] "));// Teilen Sie die Datums- und Uhrzeitangabe, um nur den Datumsteil zu erhaltenZeichenfolge date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// erhalte die Jahresdifferenz zwischen aktuellem Jahr und Jahr, um sie im Kalender einzustellenint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();if (yearDiff! = 0) {// wenn du nächstes Jahr umziehen musstif (yearDiff> 0) {für (int i = 0; i " + i);nextLink.click ();}}}}// wenn Sie im Vorjahr umziehen müssensonst wenn (yearDiff <0) {für (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Year Diff ->" + i);previousLink.click ();}}}}}}Thread.sleep (1000);// Alle Monate aus dem Kalender abrufen, um den richtigen auszuwählenList  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [not (enthält (@ class, 'k-other-month') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .click ();Thread.sleep (1000);// Alle Daten aus dem Kalender abrufen, um das richtige auszuwählenList  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [not (enthält (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .click ();///FÜR DIE ZEITWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-control = 'datetimepicker_timeview']"));// Klicken Sie auf die Schaltfläche zur ZeitauswahlselectTime.click ();// Liste der Zeiten abrufenList  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup'] [enthält (@ style, 'display: block')] // ul // li [@role = 'Option'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// richtige Zeit auswählenfür (WebElement webElement: allTime) {if (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}}}}}

Die Ausgabe wird wie sein