如何用Python Selenium正确选择日历控件日期?格式异常求助
解决日历控件日期输入异常问题
针对你遇到的直接用send_keys输入日期后显示乱码的问题,提供以下几种可行的修正方案:
方案1:清空输入框后规范格式输入
先清除输入框原有内容,再用大写月份格式输入目标日期,部分控件对日期大小写敏感:
date_input = driver.find_element(By.ID, "indentFromDateTxt") date_input.clear() date_input.send_keys("01-JUL-2023")
方案2:逐个字符输入日期
有些日历控件会实时格式化输入内容,一次性输入可能导致字符错位,尝试逐个字符输入规避:
date_str = "01-JUL-2023" date_input = driver.find_element(By.ID, "indentFromDateTxt") date_input.clear() for char in date_str: date_input.send_keys(char)
方案3:通过JavaScript直接设置值
绕过前端控件的输入限制,直接用JS修改输入框的value属性,不受前端格式化逻辑干扰:
date_input = driver.find_element(By.ID, "indentFromDateTxt") driver.execute_script("arguments[0].value = '01-JUL-2023';", date_input)
方案4:模拟手动选择日历弹窗(推荐)
如果上述方法都无效,直接操作日历弹窗选择日期更贴合控件原生逻辑:
# 点击输入框弹出日历面板 date_input = driver.find_element(By.ID, "indentFromDateTxt") date_input.click() # 选择年份(需根据实际页面元素调整XPATH) driver.find_element(By.XPATH, "//select[@class='ui-datepicker-year']/option[@value='2023']").click() # 选择月份(需根据实际页面元素调整XPATH) driver.find_element(By.XPATH, "//select[@class='ui-datepicker-month']/option[text()='July']").click() # 选择1号日期(需根据实际页面元素调整XPATH) driver.find_element(By.XPATH, "//td[@data-handler='selectDay']/a[text()='1']").click()
注:此方案需配合浏览器开发者工具,根据页面日历弹窗的实际DOM结构调整定位元素的XPATH。
内容的提问来源于stack exchange,提问作者vivek rajagopalan
相关产品推荐
相关产品推荐

