You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Selenium设置输入框值?日期输入send_keys无效求助

解决Selenium日期输入框send_keys无效的问题

针对你遇到的日期输入框已选中但无法通过send_keys赋值的问题,可尝试以下几种方案:

  • 移除readonly属性后输入
    多数网站的日期输入框会设置readonly属性限制手动输入,需先通过JavaScript移除该属性,再执行输入操作:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    import time
    
    driver = webdriver.Chrome()
    driver.get("https://permits.mynevadacounty.com/CitizenAccess/Cap/CapHome.aspx?module=Building&TabName=Building")
    wait = WebDriverWait(driver, 20)
    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img[src='/CitizenAccess/nc-horizontal.png']")))
    
    start_date = wait.until(EC.element_to_be_clickable((By.ID, "ctl00_PlaceHolderMain_generalSearchForm_txtGSStartDate")))
    # 移除readonly属性
    driver.execute_script("arguments[0].removeAttribute('readonly');", start_date)
    start_date.clear()
    start_date.send_keys('01/01/2023')
    
    time.sleep(10)
    driver.quit()
    
  • 直接用JavaScript设置value值
    绕过send_keys,直接通过JS修改输入框的value属性,这种方式更直接可靠:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    import time
    
    driver = webdriver.Chrome()
    driver.get("https://permits.mynevadacounty.com/CitizenAccess/Cap/CapHome.aspx?module=Building&TabName=Building")
    wait = WebDriverWait(driver, 20)
    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img[src='/CitizenAccess/nc-horizontal.png']")))
    
    start_date = wait.until(EC.visibility_of_element_located((By.ID, "ctl00_PlaceHolderMain_generalSearchForm_txtGSStartDate")))
    # 直接设置value值
    driver.execute_script("arguments[0].value = '01/01/2023';", start_date)
    
    time.sleep(10)
    driver.quit()
    
  • 模拟日期选择器点击(备选)
    如果上述方法均无效,可尝试唤起日期选择器并模拟点击选择目标日期(需根据页面实际元素调整选择器):

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support.ui import Select
    import time
    
    driver = webdriver.Chrome()
    driver.get("https://permits.mynevadacounty.com/CitizenAccess/Cap/CapHome.aspx?module=Building&TabName=Building")
    wait = WebDriverWait(driver, 20)
    wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img[src='/CitizenAccess/nc-horizontal.png']")))
    
    # 点击输入框唤起日期选择器
    start_date = wait.until(EC.element_to_be_clickable((By.ID, "ctl00_PlaceHolderMain_generalSearchForm_txtGSStartDate")))
    start_date.click()
    
    # 选择年份
    year_select = Select(wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.ui-datepicker-year"))))
    year_select.select_by_value('2023')
    # 选择月份(0对应1月)
    month_select = Select(wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select.ui-datepicker-month"))))
    month_select.select_by_value('0')
    # 选择1号日期
    day_btn = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[text()='1']")))
    day_btn.click()
    
    time.sleep(10)
    driver.quit()
    

注意事项

  • 等待元素时优先使用EC.element_to_be_clickable,确保元素处于可交互状态
  • 执行JS操作前,需确认元素已被正确定位

内容的提问来源于stack exchange,提问作者mjsunnyside

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:22:42