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

技术问询:嵌套while循环能否打印时间?Selenium机器人如何获取按键发送时间?

问题1:能否使用嵌套while循环实现时间(小时)的打印?

当然可以!嵌套while循环完全能实现小时的打印,甚至可以扩展到更精细的时间层级。举个简单的例子,比如打印0到23的所有小时,外层循环控制小时数的迭代,内层循环可以用来处理每个小时内的细节逻辑:

hour = 0
# 外层循环:遍历0-23小时
while hour < 24:
    print(f"当前小时:{hour}")
    # 内层循环:可添加每个小时内的额外操作,比如打印分隔线
    line_count = 0
    while line_count < 1:
        print("----------------")
        line_count += 1
    hour += 1

如果需要模拟真实的时间流转(比如每间隔1小时打印一次),还可以在内层循环中加入time.sleep(3600)来模拟时间流逝,核心思路就是用外层循环控制小时的变化,内层循环处理每个小时内的具体操作。

问题2:Selenium自动化机器人添加实时日期时间记录

你的问题根源在于**datetime.datetime.now()的位置错误**——你把它放在了while循环外面,程序只会在启动时获取一次当前时间,之后每次打印的都是这个固定值。要获取发送按键时的实时时间,只需要把now = datetime.datetime.now()移到while循环内部,让每次迭代都重新获取最新时间即可。

修正后的代码如下:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
import datetime

# 补充:确保OMS是已初始化的浏览器实例,根据你的实际浏览器调整
OMS = webdriver.Chrome()
i = 1
amount = 10  # 替换为你实际的循环次数
actions = ActionChains(OMS)

while i <= amount:
    time.sleep(1)
    OMS.find_element_by_class_name('classname').click()  # 统一变量名,避免bot/OMS混用报错
    actions.send_keys("Lorem ipsum dolor sit amet, consectetlerisque." + Keys.RETURN)
    actions.perform()
    time.sleep(3)
    # 每次循环都获取实时时间
    now = datetime.datetime.now()
    print(i)
    print(str(now))
    i = i + 1

OMS.description(500)

另外注意代码中的变量一致性:你用了ActionChains(OMS),但原代码里写了bot.find_element_by_class_name,这里统一为OMS(或bot)可以避免变量未定义的错误。

修改后,每次打印的now都是当前迭代时的实时日期时间,就能得到你想要的效果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:28:14