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

TestComplete C#脚本检查窗口Exists属性时触发运行时错误

TestComplete C#脚本错误解决:对象不支持该属性或方法

错误原因

你当前的代码中,WaitWinFormsObject如果在1000毫秒超时内没找到ConfigStatusDialog窗口,会返回一个无效的对象引用。直接链式访问这个无效对象的Exists属性,就会触发“对象不支持该属性或方法”的运行时错误——因为不存在的对象没有Exists属性。

解决方案

方案1:先缓存对象引用再判断

先将WaitWinFormsObject的结果存入变量,再检查Exists属性,同时每次触发F2后重新获取对象引用,避免死循环:

var configDialog = p["WaitWinFormsObject"]("ConfigStatusDialog", 1000);
while (!configDialog["Exists"]) {
    w["Keys"]("[F2]");
    // 重新等待窗口更新引用
    configDialog = p["WaitWinFormsObject"]("ConfigStatusDialog", 1000);
}

方案2:使用WaitProperty方法更安全

TestComplete的WaitProperty可以直接等待对象的指定属性变为目标值,无需手动写循环,稳定性更高:

// 先尝试获取窗口,再等待它的Exists属性变为True,超时10秒(可自行调整)
var configDialog = p["WaitWinFormsObject"]("ConfigStatusDialog", 1000);
bool isDialogReady = configDialog["WaitProperty"]("Exists", true, 10000);

// 如果超时仍未出现,重复触发F2直到窗口显示
if (!isDialogReady) {
    do {
        w["Keys"]("[F2]");
        configDialog = p["WaitWinFormsObject"]("ConfigStatusDialog", 1000);
        isDialogReady = configDialog["Exists"];
    } while (!isDialogReady);
}

额外检查项

  • 确认p是正确的父对象(比如应用程序的主窗口实例),父对象引用错误会导致找不到子窗口。
  • 验证ConfigStatusDialog的识别属性:在TestComplete对象浏览器中,确认窗口的Name属性确实是ConfigStatusDialog,必要时可改用Caption、ClassName等更可靠的属性定位窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:03:13