技术问询:嵌套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
相关产品推荐
相关产品推荐

