Cara Memilih Tarikh dari DatePicker / Kalendar di Selenium Webdriver

Anonim

Untuk pemilihan DateTime, HTML5 mempunyai kawalan baru seperti di bawah.

Halaman di atas boleh dilayari di sini

Sekiranya kita melihat DOM kawalan DateTime Picker, hanya akan ada satu kotak input untuk tarikh dan masa.

Oleh itu, untuk mengendalikan jenis kawalan ini terlebih dahulu kita akan mengisi tarikh tanpa berpisah dengan pembatas, iaitu jika tarikh adalah 09/25/2013, maka kita akan meneruskan 09252013 ke kotak input. Setelah selesai, kami akan mengalihkan fokus dari tarikh ke masa dengan menekan 'tab' & mengisi masa.

Sekiranya kita perlu mengisi 02:45 PM, kita akan memberikannya '0245PM' ke kotak input yang sama.

Kod untuk pemilih data kelihatan seperti ini -

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;kelas awam DateTimePicker {@ Ujiantarikh kosong awamTimePicker () {System.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Pemacu WebDriver = ChromeDriver baru ();driver.manage (). timeout (). secara implisitWait (10, TimeUnit.SECONDS);driver.get ("http://demo.guru99.com/test/");// Cari kawalan pemetik tarikhWebElement dateBox = driver.findElement (By.xpath ("// form // input [@ name = 'bdaytime']"));// Isi tarikh seperti mm / dd / yyyy pada 09/25/2013dateBox.sendKeys ("09252013");// Tekan tab untuk mengalihkan fokus ke medan masadateBox.sendKeys (Kunci.TAB);// Isi masa seperti 02:45 PMdateBox.sendKeys ("0245PM");}}

Keluaran akan seperti-

Mari kita lihat contoh Kalendar lain. Kami akan menggunakan kawalan Telerik DateTimePicker. Boleh dilayari di sini

Di sini jika kita perlu menukar bulan, kita mesti mengklik di bahagian tengah tajuk kalendar.

Begitu juga jika kita perlu mengubah tahun maka kita boleh melakukannya dengan mengklik pautan seterusnya atau sebelumnya pada pemilih data.

Dan akhirnya untuk mengubah waktu kita dapat memilih waktu yang betul dari menu dropdown (Catatan: Kali ini dipilih dalam jarak 30 min., 12:00, 12:30, 1:00, 1:30 dll).

Contoh lengkap kelihatan seperti-

import java.util.Kalendar;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;DatePicker kelas awam {@ Ujianujian kekosongan awamDAtePicker () membuang Pengecualian {// DAte dan Masa yang akan ditetapkan dalam kotak teksString dateTime = "12/07/2014 2:00 PM";Pemacu WebDriver = FirefoxDriver baru ();driver.manage (). window (). maksimalkan ();driver.get ("https://demos.telerik.com/kendo-ui/datetimepicker/index");driver.manage (). timeout (). secara implisitWait (10, TimeUnit.SECONDS);// butang untuk membuka kalendarWebElement selectDate = driver.findElement (By.xpath ("// span [@ aria-control = 'datetimepicker_dateview']"));pilihDate.click ();// butang untuk bergerak seterusnya dalam kalendarWebElement nextLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [berisi (@ class, 'k-nav- seterusnya ')] "));// butang untuk mengklik di tengah tajuk kalendarWebElement midLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [berisi (@ kelas, 'k-nav- cepat ')] "));// butang untuk memindahkan bulan sebelumnya dalam kalendarWebElement sebelumnyaLink = driver.findElement (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // div [@ class = 'k-header'] // a [berisi (@ kelas, 'k-nav- prev ')] "));// Pisahkan masa tarikh untuk mendapatkan bahagian tarikh sahajaRentetan tarikh_dd_MM_yyyy [] = (dateTime.split ("") [0]). Split ("/");// dapatkan perbezaan tahun antara tahun semasa dan tahun untuk ditetapkan dalam kalenderint yearDiff = Integer.parseInt (date_dd_MM_yyyy [2]) - Calendar.getInstance (). get (Calendar.YEAR);midLink.click ();jika (yearDiff! = 0) {// jika anda mesti berpindah tahun depanjika (yearDiff> 0) {untuk (int i = 0; i " + i);nextLink.click ();}}// sekiranya anda terpaksa berpindah tahun sebelumnyalain jika (yearDiff <0) {untuk (int i = 0; i <(yearDiff * (- 1)); i ++) {System.out.println ("Year Diff ->" + i);sebelumnyaLink.click ();}}}Thread.sleep (1000);// Dapatkan semua bulan dari kalendar untuk memilih yang betulSenarai  list_AllMonthToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [not (mengandungi (@ class, 'k-other-month') ))] "));list_AllMonthToBook.get (Integer.parseInt (date_dd_MM_yyyy [1]) - 1) .klik ();Thread.sleep (1000);// dapatkan semua tarikh dari kalendar untuk memilih tarikh yang betulSenarai  list_AllDateToBook = driver.findElements (By.xpath ("// div [@ id = 'datetimepicker_dateview'] // table // tbody // td [not (mengandungi (@ class, 'k-other-month') ))] "));list_AllDateToBook.get (Integer.parseInt (date_dd_MM_yyyy [0]) - 1) .klik ();///UNTUK MASAWebElement selectTime = driver.findElement (By.xpath ("// span [@ aria-control = 'datetimepicker_timeview']"));// klik butang pemilih masapilihTime.click ();// dapatkan senarai masaSenaraikan  allTime = driver.findElements (By.xpath ("// div [@ data-role = 'popup'] [mengandungi (@ style, 'display: block')] // ul // li [@role = 'pilihan'] "));dateTime = dateTime.split ("") [1] + "" + dateTime.split ("") [2];// pilih masa yang betuluntuk (WebElement webElement: allTime) {jika (webElement.getText (). samaIgnoreCase (dateTime)){webElement.click ();}}}}

Keluaran akan seperti