如何用pywinauto向Windows任务栏搜索框输入文本管理启动项?
解决Windows任务栏搜索控件识别问题(用于自动化禁用启动项)
问题背景
需要关闭干扰AUT自动化测试的应用,计划通过Windows任务栏搜索窗口输入文本进入启动项设置来禁用它,但无法识别该搜索窗口控件。尝试过dump_tree()和Inspect工具均未找到有效定位方法,以下是编写的英文及俄文本地化pywinauto代码:
英文版本代码
from pywinauto import Desktop taskbar = Desktop(backend="uia").window(title="Taskbar", control_type="Pane") # this step to get "Search" window focused taskbar.child_window(title="Start", control_type="Button").click_input() search = Desktop(backend="uia").window(title="Type here to search", control_type="Edit") search.set_text("Startup")
俄文版本代码
taskbar = Desktop(backend="uia").window(title="Панель задач", control_type="Pane") # этот шаг чтобы получить фокус окна "Поиск" taskbar.child_window(title="Пуск", control_type="Button").click_input() search = Desktop(backend="uia").window(title="Поле поиска", control_type="Edit") search.set_text("Автозагрузка")

解决方案
方法1:用快捷键唤起搜索框(规避控件定位)
无需定位开始按钮和搜索控件,直接通过系统快捷键Win+S唤起搜索框,再输入关键词,不受系统本地化语言影响:
from pywinauto import keyboard # 唤起搜索框 keyboard.send_keys('{VK_LWIN down}s{VK_LWIN up}') # 输入对应语言的启动项关键词(英文填"Startup",俄文填"Автозагрузка") keyboard.send_keys("Автозагрузка") # 回车进入设置界面 keyboard.send_keys('{ENTER}')
方法2:直接调用系统命令打开启动项设置(最可靠)
跳过搜索步骤,直接通过系统内置命令打开启动项设置,完全规避控件识别问题,适用于所有Windows版本:
import subprocess # 打开启动项设置界面 subprocess.run(["start", "ms-settings:startupapps"], shell=True)
此方法不依赖控件定位,不会因系统语言差异导致失败,是自动化操作启动项的最优方案。
内容的提问来源于stack exchange,提问作者Dmitry Afanasyev
相关产品推荐
相关产品推荐

