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

使用Python与Selenium结合schedule实现定时表单输入

实现WebDriver等待指定时间后执行表单输入

直接通过计算当前时间与目标时间的差值来实现等待,比使用schedule库更简洁,且不会阻塞后续脚本执行,具体实现如下:

修改后的完整代码

import datetime
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import time

# 初始化Chrome浏览器(根据实际使用的浏览器调整)
chrome_options = Options()
# 可选:添加无头模式、禁用GPU等配置
# chrome_options.add_argument("--headless=new")
driver = webdriver.Chrome(options=chrome_options)

# 打开目标网页
driver.get("你的目标页面URL")

# 等待日历元素加载完成
WebDriverWait(driver, 5).until(
    EC.presence_of_element_located((By.XPATH, "//div[@id='datediv']"))
)
calendar = driver.find_element(By.XPATH, "//input[@id='datetxt']")

# 定义目标执行时间:每周三17:00
target_time = datetime.datetime.now().replace(hour=17, minute=0, second=0, microsecond=0)
# 如果当前时间已经过了本周三17:00,自动顺延到下周三
if datetime.datetime.now() > target_time:
    target_time += datetime.timedelta(days=7)

# 计算需要等待的秒数
wait_seconds = (target_time - datetime.datetime.now()).total_seconds()
print(f"将等待{wait_seconds:.2f}秒,到{target_time.strftime('%Y-%m-%d %H:%M:%S')}执行输入")
time.sleep(wait_seconds)

# 执行表单输入操作(确保bookingdate_day变量已提前定义)
calendar.send_keys(bookingdate_day)

# --------------------------
# 这里添加脚本剩余部分的代码
# 比如提交表单、操作其他元素等
# --------------------------

# 完成后关闭浏览器
driver.quit()

关键说明

  • WebDriver初始化:原代码缺失浏览器启动逻辑,这里补充了Chrome的初始化代码,你可以根据实际使用的浏览器(如Firefox、Edge)替换对应的webdriver类。
  • 目标时间处理:自动判断当前时间是否已过本周三17:00,若已过则顺延到下一周,避免无效等待。如果是固定日期(而非每周重复),直接定义target_time = datetime.datetime(2024, 10, 15, 17, 0, 0)即可。
  • 等待逻辑:通过total_seconds()计算时间差,用time.sleep()实现精准等待,等待结束后直接执行后续代码,不会像schedule的无限循环那样阻塞流程。
  • 后续脚本执行:输入操作完成后,直接在注释区域添加剩余业务逻辑即可,无需额外处理循环退出问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:39:56