微软Edge WebDriver签名验证失败:终极解决方案与预防指南

微软Edge WebDriver签名验证失败:终极解决方案与预防指南

【免费下载链接】runner-images GitHub Actions runner images 【免费下载链接】runner-images 项目地址: https://gitcode.com/GitHub_Trending/ru/runner-images

在使用GitHub Actions runner images进行自动化测试时,微软Edge WebDriver签名验证失败是一个常见且棘手的问题。本文将为你提供一套完整的解决方案,帮助你快速解决这一问题,并预防未来再次发生。

什么是Edge WebDriver签名验证失败?

Edge WebDriver签名验证失败通常发生在尝试启动或使用Edge浏览器驱动程序时。这是由于驱动程序的数字签名与系统预期的签名不匹配,导致系统不信任该驱动程序,从而阻止其运行。

在GitHub Actions runner images项目中,Edge WebDriver的安装和配置是通过images/windows/scripts/build/Install-EdgeDriver.ps1脚本完成的。该脚本专门负责下载、安装和配置Edge WebDriver,并包含签名验证步骤。

为什么会出现签名验证失败?

签名验证失败可能有以下几个原因:

  1. 驱动程序版本不匹配:Edge浏览器与WebDriver版本不兼容或不匹配
  2. 下载的驱动程序被篡改:下载过程中文件损坏或被恶意修改
  3. 签名证书过期:微软更新了签名证书,导致旧证书验证失败
  4. 系统安全策略限制:本地系统安全策略阻止了某些签名验证

在GitHub Actions runner images中,签名验证是通过Test-FileSignature函数实现的。该函数会检查文件的签名是否有效,并与预期的签名主题进行比对。

终极解决方案:如何修复签名验证失败

方案一:重新安装匹配版本的Edge WebDriver

  1. 首先,确认已安装的Edge浏览器版本
  2. 下载与浏览器版本完全匹配的WebDriver
  3. 重新安装WebDriver并验证签名

在GitHub Actions runner images中,可以通过以下步骤实现:

# 禁用Edge自动更新
Rename-Item -Path "C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe" -NewName "Disabled_MicrosoftEdgeUpdate.exe"

# 获取当前Edge版本
$edgeBinaryPath = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe").'(default)'
[version] $edgeVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($edgeBinaryPath).ProductVersion

# 下载匹配版本的WebDriver
$versionInfoUrl = "https://msedgedriver.microsoft.com/LATEST_RELEASE_$($edgeVersion.Major)_WINDOWS"
$latestVersion = Get-Content (Invoke-DownloadWithRetry -Url $versionInfoUrl -Path "$edgeDriverPath\versioninfo.txt")
$downloadUrl = "https://msedgedriver.microsoft.com/$latestVersion/edgedriver_win64.zip"

# 安装并验证签名
Expand-7ZipArchive -Path $archivePath -DestinationPath $edgeDriverPath
Test-FileSignature -Path "$edgeDriverPath\msedgedriver.exe" -ExpectedSubject $(Get-MicrosoftPublisher)

方案二:手动验证并信任证书

如果签名验证失败是由于证书问题,可以手动验证并信任证书:

  1. 右键点击msedgedriver.exe文件
  2. 选择"属性",然后切换到"数字签名"选项卡
  3. 选择签名,点击"详细信息"
  4. 点击"查看证书",然后选择"安装证书"
  5. 按照向导将证书安装到"受信任的根证书颁发机构"存储区

方案三:使用GitHub Actions runner images中的修复脚本

GitHub Actions runner images项目提供了完整的安装和验证流程。如果遇到签名验证问题,可以尝试运行完整的安装脚本:

# 从项目仓库克隆代码
git clone https://gitcode.com/GitHub_Trending/ru/runner-images

# 运行Edge WebDriver安装脚本
cd runner-images/images/windows/scripts/build
.\Install-EdgeDriver.ps1

预防措施:如何避免未来出现签名验证失败

1. 保持Edge浏览器和WebDriver版本同步

确保Edge浏览器和WebDriver始终保持相同版本。在GitHub Actions runner images中,这一点通过自动检测浏览器版本并下载匹配的WebDriver来实现:

# 获取Edge版本并下载匹配的WebDriver
$edgeVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($edgeBinaryPath).ProductVersion
$versionInfoUrl = "https://msedgedriver.microsoft.com/LATEST_RELEASE_$($edgeVersion.Major)_WINDOWS"

相关代码位于images/windows/scripts/build/Install-EdgeDriver.ps1文件中。

2. 禁用Edge自动更新

自动更新可能导致浏览器和驱动版本不匹配,进而引发签名验证问题。可以通过重命名Edge更新程序来禁用自动更新:

# 禁用Edge自动更新
Rename-Item -Path "C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe" -NewName "Disabled_MicrosoftEdgeUpdate.exe"

3. 使用官方验证工具

GitHub Actions runner images提供了Test-FileSignature函数来验证文件签名:

function Test-FileSignature {
    param(
        [Parameter(Mandatory = $true)]
        [string] $Path,
        [Parameter(Mandatory = $true)]
        [string] $ExpectedSubject
    )
    
    $signature = Get-AuthenticodeSignature -Path $Path
    if ($signature.Status -ne [System.Management.Automation.SignatureStatus]::Valid) {
        throw "File signature is invalid for $Path"
    }
    
    if ($signature.SignerCertificate.Subject -ne $ExpectedSubject) {
        throw "File signature subject does not match expected. Expected: $ExpectedSubject, Actual: $($signature.SignerCertificate.Subject)"
    }
}

在安装WebDriver时,使用以下代码进行验证:

Test-FileSignature -Path "$edgeDriverPath\msedgedriver.exe" -ExpectedSubject $(Get-MicrosoftPublisher)

总结

微软Edge WebDriver签名验证失败虽然常见,但通过本文提供的解决方案,你可以快速诊断并修复问题。关键是要确保浏览器与驱动版本匹配,并使用官方提供的签名验证工具进行验证。

GitHub Actions runner images项目已经内置了完善的Edge WebDriver安装和验证流程,相关代码位于images/windows/scripts/build/Install-EdgeDriver.ps1。遵循本文提供的预防措施,可以有效避免未来出现类似问题,确保自动化测试环境的稳定运行。

希望本文对你解决Edge WebDriver签名验证问题有所帮助!如果问题仍然存在,建议查阅项目的官方文档或提交issue寻求进一步支持。

【免费下载链接】runner-images GitHub Actions runner images 【免费下载链接】runner-images 项目地址: https://gitcode.com/GitHub_Trending/ru/runner-images

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值