Edge 119版本是否导致SeleniumBasic出现窗口控制异常?
问题背景
此前用VBA结合SeleniumBasic和Edge 118实现多文件自动化完全正常,升级Edge及对应Driver到119.0.2151.72版本后,执行窗口最大化代码时触发NoSuchWindowError。
报错信息
Run-time error '23':
NoSuchWindowError
Window not found: no such window: target window already closed
from unknown error: web view not found
(Session info: MicrosoftEdge = 119.0.2151.58)
(Driver info: msedgedriver = 119.0.2151.58
(33e26e7eb4fba096f2f29de91f90d34b8597be96),platform=Windows NT 10.0.19045 x86_64)
实际现象
启动Edge时弹出用户名选择小窗口(已通过SetCapability自动处理),Edge窗口打开后显示用户已选中的提示框,代码模拟点击确定后,执行.Window.Maximize时触发错误,Edge窗口保持打开直到模块终止。
涉及代码片段
Set oEdgeObject= CreateObject("Selenium.EdgeDriver") With oEdgeObject On Error GoTo SiteHandler .SetCapability "ms:edgeOptions", "{""excludeSwitches"":[""enable-automation""]}" .Start .Wait 1000 Call LeftClick(600, 400) .Wait 1000 .Window.Maximize
已尝试的无效操作
- 移除自动选择配置文件的
SetCapability代码 - 使用
SwitchToNextWindow(触发“window does not exist”错误) - 使用
SwitchToPreviousWindow(无报错但问题依旧) - 在Edge 118版本电脑测试代码可正常运行,排除代码本身逻辑问题
- 结合
SetCapability或手动选择配置文件调用get方法,仍出现相同报错 - 尝试
SwitchToParentFrame、SwitchToWindowByName、SwitchToWindowByTitle,仅极少数随机场景生效 - 移除
SetCapability后手动完成登录流程,代码可正常执行,但引入手动操作、易出错及信息栏干扰问题
当前环境
- SeleniumBasic-2.0.9.0
- Edge及对应Driver版本:119.0.2151.72
- 测试多个URL(含Google)均出现相同问题
有效解决方案
方案1:调整EdgeOptions配置,提前指定窗口最大化并禁用弹窗
修改SetCapability配置,直接设置启动时最大化窗口,同时添加禁用配置文件选择弹窗的参数,避免模拟点击带来的窗口切换问题:
Set oEdgeObject = CreateObject("Selenium.EdgeDriver") With oEdgeObject On Error GoTo SiteHandler ' 配置启动时最大化、禁用自动化提示、跳过配置文件选择 .SetCapability "ms:edgeOptions", "{""excludeSwitches"":[""enable-automation""],""start-maximized"":true,""useAutomationExtension"":false,""profile-directory"":""Default""}" .Start .Wait 2000 ' 延长等待时间确保页面加载稳定 ' 后续直接执行业务逻辑,无需再调用.Window.Maximize .Get "https://www.google.com" End With
方案2:强制切换到活动窗口后执行最大化
如果必须保留模拟点击逻辑,在执行最大化前强制切换到当前活动窗口:
Set oEdgeObject = CreateObject("Selenium.EdgeDriver") With oEdgeObject On Error GoTo SiteHandler .SetCapability "ms:edgeOptions", "{""excludeSwitches"":[""enable-automation""]}" .Start .Wait 1000 Call LeftClick(600, 400) .Wait 1000 ' 强制切换到第一个窗口(或遍历窗口列表找到有效窗口) .SwitchToWindow .WindowHandles(0) .Window.Maximize End With
方案3:升级SeleniumBasic版本
SeleniumBasic-2.0.9.0可能存在与Edge 119的兼容性问题,尝试升级到最新版本(需确保与Edge Driver版本严格匹配)。
说明
Edge 119版本对自动化窗口的管理逻辑有调整,原有窗口切换和等待逻辑无法适配新版本的页面加载流程,通过提前配置启动参数或强制窗口切换可解决该问题。
内容的提问来源于stack exchange,提问作者JoshSavage

