Πώς να επιλέξετε ημερομηνία από το DatePicker / Calendar στο Selenium Webdriver

Anonim

Για την επιλογή DateTime, το HTML5 έχει έναν νέο έλεγχο που φαίνεται παρακάτω.

Η παραπάνω σελίδα είναι προσβάσιμη εδώ

Εάν δείτε το DOM του στοιχείου ελέγχου DateTime Picker, θα υπάρχει μόνο ένα πλαίσιο εισαγωγής για ημερομηνία και ώρα.

Έτσι, για να χειριστούμε αυτόν τον τύπο ελέγχου πρώτα θα συμπληρώσουμε την ημερομηνία χωρίς διαχωρισμό με οριοθέτη, δηλαδή εάν η ημερομηνία είναι 09/25/2013, τότε θα περάσουμε 09252013 στο πλαίσιο εισαγωγής. Μόλις τελειώσετε, θα αλλάξουμε την εστίαση από ημερομηνία σε ώρα πατώντας "καρτέλα" και ώρα πλήρωσης.

Αν χρειαστεί να συμπληρώσουμε τις 02:45 μ.μ., θα το περάσουμε ως "0245PM" στο ίδιο πλαίσιο εισαγωγής.

Ο κωδικός για το πρόγραμμα επιλογής δεδομένων μοιάζει με αυτό -

εισαγωγή 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 ("// form // input [@ name = 'bdaytime']"));// Συμπληρώστε την ημερομηνία ως mm / dd / yyyy ως 09/25/2013dateBox.sendKeys ("09252013");// Πατήστε την καρτέλα για να αλλάξετε την εστίαση στο πεδίο χρόνουdateBox.sendKeys (Keys.TAB);// Συμπληρώστε το χρόνο στις 02:45 μ.μ.dateBox.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 = "12/07/2014 2:00 μμ";Πρόγραμμα οδήγησης WebDriver = νέο FirefoxDriver ();driver.manage (). window (). μεγιστοποίηση ();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-control = 'datetimepicker_dateview']"));selectDate.click ();// κουμπί για μετάβαση στο επόμενο ημερολόγιοWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [περιέχει (@ class, 'k-nav- Επόμενο')]"));// κουμπί για να κάνετε κλικ στο κέντρο της κεφαλίδας ημερολογίουWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [περιέχει (@ class, 'k-nav- γρήγορα')]"));// κουμπί για μετακίνηση του προηγούμενου μήνα στο ημερολόγιοWebElement previousLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [περιέχει (@ class, 'k-nav- prev ')] "));// Διαχωρίστε την ώρα ημερομηνίας για να λάβετε μόνο το μέρος της ημερομηνίαςΣυμβολοσειρά date_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// λάβετε τη διαφορά έτους μεταξύ τρέχοντος έτους και έτους για να ρυθμίσετε το ημερολόγιοint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();αν (yearDiff! = 0) {// αν πρέπει να μετακομίσετε τον επόμενο χρόνοαν (yearDiff> 0) {για (int i = 0; i " + i);nextLink.click ();}}// αν πρέπει να μετακινηθείτε το προηγούμενο έτοςαλλιώς εάν (yearDiff <0) {για (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Year Diff ->" + i);previousLink.click ();}}}Thread.sleep (1000);// Λάβετε όλους τους μήνες από το ημερολόγιο για να επιλέξετε το σωστόΛίστα  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [not (περιέχει (@ class, 'k-other-month') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1). κλικ ();Thread.sleep (1000);// λάβετε όλες τις ημερομηνίες από το ημερολόγιο για να επιλέξετε τη σωστήΛίστα  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [not (περιέχει (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1). κλικ ();///ΓΙΑ ΩΡΑWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-control = 'datetimepicker_timeview']"));// κάντε κλικ στο κουμπί επιλογής ώραςselectTime.click ();// λήψη λίστας ωρώνΛίστα  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup'] [περιέχει (@ style, 'display: block')] // ul // li [@role = 'επιλογή'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// επιλέξτε τη σωστή ώραγια (WebElement webElement: allTime) {εάν (webElement.getText (). equalsIgnoreCase (dateTime)){webElement.click ();}}}}

Η παραγωγή θα είναι σαν