如何修复Silk Test调用CaptureBitmap时的Bitmap failed to stabilize错误
Silk Test调用CaptureBitmap抛出BitmapNotStableException解决方法
根因
你之前配置的BitmapMatchCount、BitmapMatchInterval、BitmapMatchTimeout三个选项,是用于双位图相似度比对场景的重试规则配置,仅在做图像校验、控件位图匹配时生效,和CaptureBitmap()方法执行前默认触发的「等待界面停止动态渲染」的稳定校验逻辑是两套独立配置,因此修改这三个参数无法解决当前报错,不需要在Silk Test Workbench的UI界面做额外全局配置。
可行解决方式
- 调用截图方法时直接跳过稳定校验(推荐)
CaptureBitmap提供了带布尔参数的重载,第二个参数waitForStable传入False时,会直接执行截图不做稳定检查,不会抛出对应异常,修改后的代码如下:
这种方式仅对当前截图调用生效,不会影响其他步骤默认的等待逻辑,适合界面存在持续动效、实时刷新控件(如时钟、滚动日志、动画按钮)的场景。With _desktop.FormsWindow("AppMainWindow") ' 第二个参数传False跳过稳定校验 .CaptureBitmap("C:\Snapshots\ErrorImage.PNG", False) .PushButton("buttonOK").Click() End With - 全局关闭截图稳定校验
如果需要全局关闭所有截图操作的前置稳定检查,需要修改对应稳定校验的专属配置项,而非之前的位图匹配配置,代码如下:' 注意是BitmapStable开头的选项,不是BitmapMatch Agent.SetOption(Options.BitmapStableCount, 0) Agent.SetOption(Options.BitmapStableInterval, 0) Agent.SetOption(Options.BitmapStableTimeout, 0) - 前置检查项
执行截图前确认C:\Snapshots\目录已存在、当前运行脚本的账号有该目录的写入权限,权限不足或目录不存在会触发其他类型的IO报错,不会抛出位图稳定异常,但会导致截图保存失败。
内容的提问来源于stack exchange,提问作者user3887327
相关产品推荐
相关产品推荐

