微信更新后下面的python代码运行不了,请帮我修改代码

这是我用来微信自动发送消息的代码,最近用不到了
代码之前是可以运行的,微信更新后就不行了,我要怎么修改代码才可以运行呢

img


谁可以看看怎么解决
以下是运行后出现的错误
if 我.Name:
File "C:\Users\ZJC\AppData\Local\Programs\Python\Python311\Lib\site-packages\uiautomation\uiautomation.py", line 6087, in Name
return self.Element.CurrentName or '' # CurrentName may be None
File "C:\Users\ZJC\AppData\Local\Programs\Python\Python311\Lib\site-packages\uiautomation\uiautomation.py", line 6223, in Element
self.Refind(maxSearchSeconds=TIME_OUT_SECOND, searchIntervalSeconds=self.searchInterval)
File "C:\Users\ZJC\AppData\Local\Programs\Python\Python311\Lib\site-packages\uiautomation\uiautomation.py", line 6474, in Refind
raise LookupError('Find Control Timeout({}s): {}'.format(maxSearchSeconds, self.GetSearchPropertiesStr()))
LookupError: Find Control Timeout(10s): {ControlType: EditControl}

这个错误提示是在执行UI自动化时,寻找对应控件的内容超时了,无法找到对应的控件。根据错误提示中的ControlType: EditControl,可以看出是在寻找一个编辑框控件时发生的问题。

根据错误信息,是找不到 EditControl 控件导致的问题,可能是因为微信更新后界面元素有所变化。建议您可以尝试修改以下代码:

在 SendWeChat 函数中,把

dia.SendKeys(Msg)
dia.SendKey(VK_RETURN)
修改为

dia.SendKey(VK_CONTROL, VK_RETURN)  # 发送消息快捷键
uiautomation.SendKeys(Msg)          # 输入消息内容
uiautomation.SendKey(VK_RETURN)     # 发送消息
把 handle_wechat_dialog 函数中的以下代码

# 等待输入框出现
while not inputbox.Exists(3):
    pass
修改为

# 等待输入框出现
for i in range(30):
    if inputbox.Exists(1):
        break
    time.sleep(1)
if not inputbox.Exists():
    raise LookupError('Find Control Timeout(30s): {ControlType: EditControl}')

这样修改之后应该就可以适应微信更新后的界面布局了。

就此错误而言主要提示无法找到Name属性为"会话"的控件。这很有可能是由于微信更新后,这个控件的属性或名称发生了变化。打开开发者工具,检查"会话"这个控件的最新属性。很可能Name属性变了,或者ControlType变为别的类型,把代码改下就可以了

版本依赖很重要,一般不要轻易更换

LookupError: Find Control Timeout(10s): {ControlType: EditControl} 这里的错误提示你了,找不到编辑框控件了,应该是你更新后,组件的名称或位置变了导致的,建议你回退下版本。如果你一定要使用新版的话,那么,你需要知道目前的输入消息的编辑框控件是哪一个,之前你是怎么定位的,现在从新定位下这个组件的位置。或者你查下uiautomation这个库的版本是否支持你更新的这个软件的版本。

微信更新后,相应的API变了吧,去查一下最新的API,按照api文档修改就可以了