2

与 Netbeans 中的 ALt-Shift-F 非常相似,是否可以在 TestComplete 的 ide 中正确执行此操作?不确定这是否可行,或者是否有人可以在不离开 TestComplete 窗口的情况下想到自动格式化的解决方法。

我正在尝试使以下解决方案与http://jsbeautifier.org/一起用于 TestComplete 中的 javascript / Jscript 代码。

谢谢

4

2 回答 2

2

好问题!

没有内置功能。因此,我们不应该期望任何解决方案都是 100% 方便的 - 修改当前脚本编辑器内容(如果可能的话)并不是一项简单的任务。所以,无论你做什么,它仍然是某种妥协。

一般来说,任务分为三个方面:

  1. 获取当前单位代码。

  2. 格式化代码。

  3. 将代码放回单元。

根据我的理解,第 1 项和第 3 项只能通过创建一个 TestComplete 插件来完成 - 访问项目节点的编辑器并不是一件容易的事情。

更新:愚蠢的我!有一种方法可以访问脚本编辑器代码 - 我已经更新了以下部分。

脚本扩展可以帮助我们避免切换到不同的应用程序:

  • 我们以脚本扩展的形式创建一个自定义检查点,并将其安装到 TestComplete。结果,我们在工具栏上获得了一个按钮,我们可以单击该按钮来调用我们的代码。

  • 在设计时动作中,我们调用一些读取编辑器内容的代码,然后使用外部代码格式化功能,并用格式化代码替换编辑器内容。

看到其他 TestComplete 用户可以建议的实现会非常有趣!首先,我发布了一个解决方案,其中包括使用外部网站来格式化 VBScript 代码 ( http://www.vbindent.com/ )。我知道这篇文章的开头可能是使用 JScript,但我还没有找到 JScript 格式化程序。

我的解决方案是一个简单的脚本扩展。我这里不能发文件,所以我把两个Script Extension文件的代码贴出来:

说明文件:

<!-- Description.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<ScriptExtensionGroup>
  <Category Name="Checkpoints">
    <ScriptExtension Name="VBScript Code Indent" Author="SmartBear Software" Version="0.1" HomePage="smartbear.com">
      <Script Name="VBIndent.js">
        <DesignTimeAction Name="Indent Current VBScript Unit" Routine="DesignTimeExecute"/>
      </Script>
      <Description>
        Indents VBScript code in the currently active unit.
      </Description>
    </ScriptExtension>
  </Category>
</ScriptExtensionGroup>

代码文件:

// VBIndent.js
function DesignTimeExecute()
{
  if (CodeEditor.IsEditorActive)
  {
    var newCode = IndentVBSCode_Through_VBIndent(CodeEditor.Text);
    if (null == newCode)
      return;
    CodeEditor.Text = newCode;
  }
}

function IndentVBSCode_Through_VBIndent(codeToIndent)
{
  var URL_VBIndent = "http://www.vbindent.com/?indent";

  var httpObj = Sys.OleObject("MSXML2.XMLHTTP");

  httpObj.open("POST", URL_VBIndent, false);
  httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  httpObj.send("thecode=" + escape(codeToIndent));

  var responseText = httpObj.responseText;

  // Extract the indented code from the response
  var rx = /<textarea name=\"thecode\".*?>((.*\n)*?)<\/textarea>/;
  matches = rx.exec(responseText);
  if (null == matches)
  {
    return null;
  }
  codeIndented = matches[1];
  return codeIndented;
}

创建这些文件后,将它们放在“\Bin\Extensions\ScriptExtensions\VBIndent”之类的位置,然后单击“文件|安装脚本扩展|重新加载”,您将在自定义中看到一个新的“缩进当前 VBScript 单元”项工具栏上的检查点下拉按钮。单击该元素将格式化当前活动编辑器中的 VBScript 代码。

因此,这是为了清楚地了解解决方案的外观。欢迎提出更好的建议!分享你的意见!

于 2012-07-19T11:01:50.160 回答
-2

供参考

我弄完了。根据你的帖子。

JSFormat.tcx

https://drive.google.com/uc?export=download&id=0B1x_73bHRc2Jcm8wbTJ2dUpZQTQ

安装扩展复制附件 JSFormat.tcx 到 C:\Program Files (x86)\SmartBear\TestComplete 10\Bin\Extensions\ScriptExtensions

要使用查看下一张图片:

https://drive.google.com/uc?export=download&id=0B1x_73bHRc2Jc3RuLXFpTnlCSnc

问候

于 2015-06-26T07:33:48.280 回答