我正在使用Selenium WebDriver并使用Java。我想从屏幕下方显示的日期选择器中选择日期范围。
当前,我能够选择日期选择器并更改月份选择,但无法选择日期值(即-12/10/2018)
日期选择器选择
这是我编写的Java代码:
driver.findElement(By.linkText("Leave")).click();
driver.findElement(By.linkText("Apply Leave")).click();
Thread.sleep(2000);
driver.findElement(By.id("LeaveStartDate")).click();
driver.findElement(By.className("next")).click();
driver.findElement(By.className("day")).sendKeys("12");
driver.findElement(By.id("LeaveEndtDate")).click();
driver.findElement(By.className("next")).click();
driver.findElement(By.className("day")).sendKeys("12/11/2018");
}
}
答案 0 :(得分:1)
您需要找到显示“开始日期”的框,然后将key发送到该元素,而不是日期选择器本身。
driver.findElement(By.id("LeaveStartDate")).sendKeys("12/10/2018");
然后对结束日期执行相同的操作。
答案 1 :(得分:1)
谢谢你们对我的查询的回答...我已经尝试过Xpath及其对我的工作
详细信息:
使用以下代码,我一直在“日期选择器”
中选择开始和结束日期driver.findElement(By.id("LeaveStartDate")).click();
driver.findElement(By.className("next")).click();
driver.findElement(By.xpath("html/body/div[8]/div[1]/table/tbody/tr[3]/td[2]")).click();
driver.findElement(By.id("LeaveSEndDate")).click();
driver.findElement(By.xpath("html/body/div[9]/div[1]/table/tbody/tr[3]/td[5]")).click();
结论::Xpath是无法执行“ Jquery Date Picker” 的硒Java代码的用户的解决方案。
答案 2 :(得分:0)
要在更改月份后选择日期,您可以创建一个列表并将所有日期存储在列表中。然后使用“ .getText()”一个接一个地获取文本,并尝试将结果日期与预期日期进行比较,然后单击它。这样,您可以使用日期值参数化脚本。
答案 3 :(得分:0)
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.AfterTest;
import org.testng.annotations.Test;
public class dateTimePicker {
WebDriver driver;
@Test
public void dateTimePicker() {
System.setProperty("webdriver.chrome.driver",
"C://Chrome driver exe path");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://jqueryui.com/resources/demos/datepicker/other-months.html");
// click to open the date time picker calendar.
WebElement dateBox = driver.findElement(By.id("datepicker"));
// click to open the date time picker calendar.
dateBox.click();
// Fill date as mm/dd/yyyy as 10/6/2019
dateBox.sendKeys("10/6/2019");
// Press tab to shift focus to time field
dateBox.sendKeys(Keys.TAB);
// close the driver
driver.close();
}
}
答案 4 :(得分:0)
您可以尝试使用此实用程序...
public void selectDate(String date){ //Here any date you can give
WebElement eval=driver.findElement(By.xpath("//div[contains(@class,'datepicker-days')]/table/tbody"));
List<WebElement> alldates = eval.findElements(By.tagName("td"));
for(WebElement cell:alldates){
String day=cell.getText();
if (cell.getText().contains(date)) {
driver.findElement(By.xpath("//div[contains(@class,'datepicker-days')]/table/tbody/tr/td[text()='"+day+"']")).click();
break;
}
}
}
注意:如果要从另一个月份选择日期,只需导航至该月份,此后即可使用此实用程序。