PywinAuto无法操控Chromium桌面应用,能否用Selenium连接本地进程?
内嵌Chromium桌面应用的自动化方案(以Avast UI为例)
能否用Selenium操控该应用?
不行。标准Selenium依赖Chrome DevTools Protocol(CDP)与浏览器进程通信,但Avast这类基于Chromium内核封装的桌面应用,默认不会暴露CDP调试端口,也不支持Chrome的--remote-debugging-port这类启动参数来开启调试接口。Avast官方也未公开相关调试配置,因此无法直接用Selenium连接操控。
有没有办法连接本地运行的该应用进程?
目前没有直接可行的方案,但可以尝试以下替代思路:
- 尝试开启内嵌Chromium的调试端口:
逆向分析Avast UI的启动流程,找到是否能通过隐藏参数指定--remote-debugging-port=9222这类参数启动应用。若成功开启,可尝试用Playwright/Pyppeteer通过CDP连接:
注意:商业软件通常有反调试机制,此方法成功率极低。from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.connect_over_cdp("http://localhost:9222") target_page = browser.contexts[0].pages[0] # 后续可通过target_page操作页面元素 - 优化Pywinauto的操控逻辑:
基于已识别的控件结构,结合坐标模拟或更精准的控件定位来操作:
同时可使用Windows自带的# 定位到Chrome Legacy Window控件 chrome_legacy_win = app.AvastFreeAntivirus.AvastChromiumWindow.Pane2.ChromeLegacyWindow # 模拟点击控件内的相对坐标(x,y需自行确认) chrome_legacy_win.click_input(coords=(100, 200))inspect.exe工具,更细致地查看控件层级,确认是否有未被Pywinauto识别的可交互子控件。
内容的提问来源于stack exchange,提问作者Rimu
相关产品推荐
相关产品推荐

