You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Powershell中通过Edge Selenium webdriver检测窗口是否最小化

解决方案

你遇到的参数无变化问题是Chromium Edge 93版本webdriver的原生缺陷,驱动层没有同步窗口最小化后的真实状态到Selenium接口,读取到的一直是最小化前的缓存值,该版本也没有内置isMinimized()相关的状态检测方法,可采用以下两种方案解决:

  • 方案1:调用Win32系统API直接检测(兼容性最高)

该方法绕过Selenium驱动层的缺陷,直接从系统层面获取窗口真实状态,准确率100%,兼容所有Edge驱动版本。

  1. 首先在Powershell中导入判断窗口最小化状态的Win32接口:
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool IsIconic(IntPtr hWnd);
}
"@
  1. 匹配Selenium控制的Edge窗口进程,读取最小化状态:
# 给当前窗口设置唯一标识标题,避免多开窗口匹配错误
$driver.ExecuteScript("document.title = 'Selenium专属测试窗口_xxxx'")
# 筛选对应标题的Edge进程
$targetProcess = Get-Process msedge | Where-Object { $_.MainWindowTitle -eq 'Selenium专属测试窗口_xxxx' } | Select-Object -First 1
if ($targetProcess) {
    $isMinimized = [Win32]::IsIconic($targetProcess.MainWindowHandle)
    # 返回值$isMinimized为$true代表窗口已最小化,$false代表窗口未最小化
}
  • 方案2:升级Edge浏览器与对应驱动版本

该缺陷在95及以上正式版本的Chromium Edge驱动中已完成修复,升级后Selenium内置的窗口尺寸、位置参数可以返回真实值,搭配Selenium 4+版本还可直接通过WindowState枚举快速读取窗口状态。

内容的提问来源于stack exchange,提问作者wrieedx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:18:02