我在尝试使用 Selenium 在日期选择器中设置日期时遇到问题。日期选择器是用 实现的,我尝试通过单击日期输入字段并发送日期值的键来模拟用户交互,但它似乎不起作用。
<div class="col-4">
<div class="form-group ">
<label for="textDateOfBirth" class="fw-bold form-label">Date of birth <span class="text-danger">*</span></label>
<input type="date" class="form-control is-invalid" id="textDateOfBirth" required="" onkeydown="return false" onchange="dateFieldValiation(textDateOfBirth,'^[0-9]{4}[-][0-9]{2}[-][0-9]{2}$','patient','dateofbirth');>
</div>
</div>
上面的 dateFieldValiation 函数验证用户在日期字段中输入的日期。它检查该值是否与强制使用 YYYY-MM-DD 格式的指定正则表达式模式匹配。如果输入的日期有效,它将验证的日期值设置为患者对象的 dateofbirth 属性。
以下是测试方法
@Test
public void savePatient() {
var patientPage = loginPage.loginToApp("Admin", "12345").clickPatientPage();
patientPage.clickPatientForm();
patientPage.selectPatientTitle("Mr");
patientPage.setPatientFirstName("Marhoom");
patientPage.setPatientLastName("Manga");
patientPage.setPatientBOD("2001-10-15");
patientPage.selectPatientGender(2);
patientPage.setPatientContactNo("0777267756");
patientPage.clickPatientSaveBtn();
}
下面是
setPatientBOD
功能
public void setPatientBOD(String dateOfBirth){
click(patientBOD);
set(patientBOD, dateOfBirth);
find(patientBOD).sendKeys(Keys.TAB);
}
下面是我的
basePage.java
课程
public class BasePage {
public static WebDriver webDriver;
public void setWebDriver(WebDriver webDriver) {
BasePage.webDriver = webDriver;
}
protected WebElement find(By locator){
return webDriver.findElement(locator);
}
protected void set(By locator,String text){
find(locator).clear();
find(locator).sendKeys(text);
}
protected void click(By locator){
find(locator).click();
}
}
当我尝试使用 setPatientBOD 方法设置日期时,日期选择器中未设置该值。此外,我无法使用浏览器的检查工具有效访问日期选择器元素。
值得注意的是,表单中的其他字段设置正确,这让我认为日期选择器的交互方式可能存在特定问题。
作为 Selenium 的新学习者,我希望获得有关如何正确与 HTML 日期选择器交互并确保正确设置日期值的任何指导或建议。谢谢!
我尝试使用 Selenium 在日期选择器中设置日期,方法是单击日期输入字段,然后发送所需的日期值(格式为 YYYY-MM-DD)。具体来说,我使用有效日期(“2001-10-15”)调用了 setPatientBOD 方法。我希望日期选择器显示所选日期并在日期字段中正确设置值。
但是,尽管执行了这些步骤,日期值似乎并未在日期选择器中设置。此外,我无法使用浏览器的检查工具有效访问日期选择器元素,这使故障排除变得复杂。
尝试替换这一行:
patientPage.setPatientBOD("2001-10-15");
删除“-”符号:
patientPage.setPatientBOD("20011015");