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

Pywinauto中时间匹配判断始终为False的问题求助

问题

预期行为

判断当前时间(CurrentTime)是否等于输入指定的时间(GivenTime),若条件成立则点击按钮。

实际行为

即使当前时间与指定时间(如均为13:29:50)一致,布尔判断结果仍为False,循环持续执行,无法触发按钮点击操作。

已尝试两种代码实现:

第一种代码:

from pywinauto import Application
import time
from pywinauto.timings import Timings
from datetime import datetime
from _strptime import _strptime
app = Application(backend="uia").connect(title_re=u'Website', timeout=100)
Timings.after_clickinput_wait = 0
STime = input('insert STime:')
STime2 = datetime.strptime(STime,'%H:%M:%S')
print(type(STime2))
CurrentTime= datetime.now()
while STime2 != CurrentTime:
        CurrentTime = datetime.now()
        print("%s:%s:%s" % (CurrentTime.hour,CurrentTime.minute,CurrenTime.second))
        time.sleep(1)
else:
      app.Website.child_window(title='Button' , control_type="Button").click_input()

问题:循环无法终止,else代码块无法执行,因为STime2 != CurrentTime始终为True。

第二种代码:

from pywinauto import Application
import time
from pywinauto.timings import Timings
from datetime import datetime
from _strptime import _strptime
app = Application(backend="uia").connect(title_re=u'Website', timeout=100)
Timings.after_clickinput_wait = 0
STime = input('insert STime:')
STime2 = datetime.strptime(STime,'%H:%M:%S')
flag = True
while flag is True:
        CurrentTime=datetime.now()
        print("%s:%s:%s" % (CurrentTime.hour,CurrentTime.minute,CurrenTime.second))
        time.sleep(1)
        Time = CurrentTime == STime2
        if Time is True:
        flag = False
        app.Website.child_window(title='Button' , control_type="Button").click_input()

问题:无报错,但时间匹配时未触发if内的按钮点击逻辑,循环持续执行。

已将输入转换为datetime类型,但问题仍未解决,寻求可行的解决方案。


解决方案

核心问题分析

  1. 完整datetime对象比较不匹配:datetime.strptime('%H:%M:%S')生成的对象默认日期是1900-01-01,而datetime.now()是当前日期,两者日期部分完全不同,直接比较永远不相等。
  2. 拼写错误:代码中CurrenTime.second少了字母t,应为CurrentTime.second,会导致运行时抛出NameError。
  3. 缩进错误:第二种代码中if Time is True:后的代码没有缩进,导致逻辑混乱,条件判断失效。

修正后的代码

from pywinauto import Application
import time
from pywinauto.timings import Timings
from datetime import datetime

app = Application(backend="uia").connect(title_re=u'Website', timeout=100)
Timings.after_clickinput_wait = 0

# 获取指定时间的时分秒部分
STime = input('insert STime:')
target_time = datetime.strptime(STime, '%H:%M:%S').time()

while True:
    current_time = datetime.now().time()
    # 打印当前时间(修复拼写错误)
    print(f"{current_time.hour}:{current_time.minute}:{current_time.second}")
    
    # 只比较时分秒部分
    if current_time == target_time:
        app.Website.child_window(title='Button', control_type="Button").click_input()
        break  # 匹配成功后终止循环
    time.sleep(1)

关键修改点

  • 使用.time()方法提取datetime对象的时间部分(仅时分秒),忽略日期差异,实现正确的时间匹配。
  • 修复了CurrenTime的拼写错误,同时调整变量名更规范。
  • 简化循环逻辑,直接在匹配成功后执行点击并终止循环,避免冗余的flag变量。
  • 修复缩进问题,确保条件判断内的代码仅在时间匹配时执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:20:02