我正在 TestComplete 工作,刚刚了解了脚本作为在 TestComplete 环境中进行更复杂测试步骤的一种方法。因为我的测试可能会在将来使用,所以我的想法之一是制作一个脚本,可以将当前日期与某个文本框进行比较,并查看两者是否相等。这意味着脚本始终具有测试的当前日期,而不是硬编码值。
然后我想:我不应该在一个测试中将其与某个对象联系起来,只使该测试持续相关,我应该使其更通用,这样我就可以将其应用于多个测试,或者应用到测试中的多个位置。相同的测试。为此,我想为我的函数提供一个参数,该参数将接受 TestComplete 对象(名称映射文件由这些对象组成)。我根本不懂 JavaScript,但我知道在 Java 中(与 JavaScript 不同),你必须键入你的参数,而我不知道我的 Type 使用什么。
这是我迄今为止尝试过的:
function DateCheck(dateTextObject) {
aqObject.CheckProperty(dateTextObject, "text", cmpEqual, aqDateTime.Today());
}
我计划将 dateTextObject 设为我想要传入的长 NameMapped 对象,例如: Aliases.browser.pageLeadMainTestcompletetestDyna.sectionQuickCreateContact.sectionDetails4.textboxDate
但是,当我将其传递到测试中时,它给了我一个错误,告诉我存在类型不匹配。我真的不认为 JavaScript 使用静态类型,而且你不必键入东西(我又刚刚开始学习它),所以这个错误让我感到困惑。
如果您能就这个问题向我提供任何帮助,我将不胜感激。谢谢!
@FiddlingAway 在他们的评论中提到的内容对我来说似乎是正确的。您应该首先使用
aqConvert.DateTimeToFormatStr
https://support.smartbear.com/testcomplete/docs/reference/program-objects/aqconvert/datetimetoformatstr.html 将此 dateTime 对象转换为字符串
举个例子:
function DateCheck(dateTextObject) {
let today = aqConvert.DateTimeToFormatStr(aqDateTime.Today(), "%m/%d/%Y");
aqObject.CheckProperty(dateTextObject, "Text", cmpEqual, today);
}
尝试以下方法亲自查看:
let now = aqDateTime.Today()
Log.Message("Type of dateTextObject: " + typeof(dateTextObject));
Log.Message("Type of aqDateTime.Today: " + typeof(now));
Log.Message("Type of today: " + typeof(today));