使用PyAutoGUI点击屏幕文字触发OSError,求技术支持
问题分析与解决方案
错误原因
你调用pyautogui.leftClick('OK')时误解了参数用法:pyautogui的点击方法如果传入字符串,会将其当作图片文件路径,尝试在屏幕上匹配该图片来定位点击位置。但你没有提供名为OK的图片文件,因此触发了文件找不到的OSError。
解决方案
针对你的需求(点击UAC设置窗口的OK按钮),提供三种可行方案:
方案1:使用键盘快捷键(最简单高效)
Windows系统的UAC设置窗口中,OK按钮的快捷键是Alt+O(按钮上的字母O带有下划线,代表快捷键),直接调用快捷键即可:
# 替换原来的pyautogui.leftClick('OK') pyautogui.hotkey('alt', 'o')
方案2:图像识别定位(通用按钮场景)
如果需要定位其他无快捷键的按钮,可以用图像匹配:
- 截取屏幕上OK按钮的清晰截图,保存为
ok_button.png(确保截图与屏幕显示的按钮完全一致,分辨率匹配) - 修改代码:
# 查找按钮位置,confidence参数可调整识别精度(需安装opencv-python) button_pos = pyautogui.locateOnScreen('ok_button.png', confidence=0.8) if button_pos: pyautogui.click(button_pos) else: print("未找到OK按钮")
方案3:使用Windows窗口控件库(最稳定)
pyautogui依赖图像/坐标,对于系统窗口,用pywinauto直接操作控件更可靠:
- 安装库:
pip install pywinauto - 修改代码(替换原有的pyautogui点击逻辑):
from pywinauto import Application # 连接到UAC设置窗口 app = Application().connect(title_re="User Account Control Settings") # 点击OK按钮 app.top_window()["OK"].click()
代码其他小问题修正
你的代码中keyboard = Controller少了括号,正确写法是keyboard = Controller(),不过这段代码里没用到键盘功能,可直接删除该部分。
内容的提问来源于stack exchange,提问作者figma designexample
相关产品推荐
相关产品推荐

