【问题标题】:If-else in testcomplete测试完成中的 if-else
【发布时间】:2016-02-14 09:51:48
【问题描述】:

我有应用程序“应用程序”,它具有与 Skype、QQ 等相同的自动化服务(您必须使用您的登录名/密码登录) 我需要在此应用程序的设置中测试一些功能,所以我正在使用 testcomplete :

  1. 我需要你运行应用程序
  2. 进入设置
  3. 改变一些东西
  4. 保存

而且非常简单。但是如果你被登录了,我需要重现这样的场景:

  1. 运行应用程序 1.1。如果记录 - 使用 (testlogin/testpassword) 记录
  2. 进入设置
  3. 改变一些东西
  4. 保存

如何在 TestComplete 中重现此类功能? 我是新手,所以我需要帮助:) 谢谢

【问题讨论】:

    标签: testing automation testcomplete


    【解决方案1】:

    让您的测试检查是否显示登录窗口。您可以使用Wait* 方法之一来执行此操作。如果显示登录窗口,则调用将执行登录的测试例程/关键字测试,然后继续一般测试流程。

    ...
    var loginWindow = Sys.Process("Application").WaitWinFormsObject("loginDialog", 3000);
    if (loginWindow.Exists) {
      doLogin();
    }
    ...
    function doLogin()
    {
      // perform login
    }
    

    【讨论】:

      【解决方案2】:

      虽然您的回答完全正确,但我想知道这是否可能:

      如果loginWindow不存在,TC报错,除了锁定或禁用日志之外,是否可以忽略这个错误并将其保留在日志之外?

      就像在 Java 或 C# 中一样:

      if(object.Exists)
        do something;
      else
        do other thing;
      

      这会在 TC 中引发错误,我不希望这样,因为我已经在检查对象是否存在...

      【讨论】:

      • 这就是我建议使用 Wait* 方法的原因。如果使用 Wait* 方法获取对象,则在检查其 Exists 属性时不会产生错误。
      【解决方案3】:

      您不能对不存在的对象使用方法。

      解决方法是先检查一个对象,然后像这样使用 Exists 方法..

      if (object && object.Exists) {
          // doSomething
      } else {
          // doSomethingElse
      }
      

      【讨论】:

        猜你喜欢
        • 2013-12-27
        • 2011-08-27
        • 1970-01-01
        • 2015-05-23
        • 1970-01-01
        • 2016-08-16
        • 2021-10-13
        • 1970-01-01
        • 2015-11-13
        相关资源
        最近更新 更多