【问题标题】:How to set focus on file dialog opened in Vbscript如何将焦点设置在 Vbscript 中打开的文件对话框上
【发布时间】:2010-09-14 11:31:51
【问题描述】:

我们的团队正在 QTP 中自动化测试/测试数据准备,我们在 VBScript 中编写脚本。

在几个测试中,运行脚本的测试人员需要提供一个带有 indata 的 MS-Excel 文件。我们为此使用UserAccounts.CommonDialog,效果很好。除了一个小问题,当我们从 QTP 运行时文件对话框没有获得焦点。它在后台打开,运行脚本的测试人员很容易错过它并浪费时间等待对话框。

我们如何赋予文件对话框焦点?

代码示例:

Set ObjFSO = CreateObject("UserAccounts.CommonDialog") 
ObjFSO.Filter = "MS-Excel Spreadsheets|*.xls|All Files|*.*" 

while ObjFSO.ShowOpen = false 
    msgbox "Script Error: Please select a file!"
wend

msgbox "You selected the file: " & ObjFSO.FileName

【问题讨论】:

  • 要考虑的另一件事:为什么在测试运行开始时提示测试人员输入文件?这通常可以使用配置文件或类似机制作为运行测试的先决条件来完成。
  • @Tom 非常好的问题。我们正在运行的“测试”实际上是一个测试数据生成脚本。每次运行都会有新的和独特的数据。该脚本将由不使用 QTP 开发且对 QTP 了解不多的人从 QC 运行。我们讨论了几种不同的数据输入方法(硬编码位置和文件名、配置文件、qc 的输入参数),但得出的结论是提示输入文件是最好的。

标签: windows vbscript qtp


【解决方案1】:

我的猜测是,由于对话框是模态的,ShowOpen 方法在对话框关闭之前不会将执行控制返回给脚本。因此,作为测试脚本的一部分,无法与对话框进行交互。

作为一种解决方法,您可以生成一个等待对话框并激活它的并行脚本。但我猜 QTP 不能并行运行两个脚本,所以你可能需要一个外部 shell 脚本(用 VBScript / JScript / PowerShell / 等编写)。


编辑:尝试以下操作:

  • 创建一个包含以下内容的外部 VBScript 文件 (.vbs):

    Set oShell = CreateObject("WScript.Shell")
    While Not oShell.AppActivate("Open")
      WScript.Sleep 500
    Wend
    

    此脚本调用WshShell.AppActivate 来激活标题包含Open 的窗口(将其替换为实际的对话框标题)。如果此时没有这样的寡妇,它会在 0.5 秒后重试(如果您愿意,可以增加延迟)。

  • 在打开对话框之前从您的 QTP 测试中启动此脚本。 (使用SystemUtil.Run 或类似的东西。)

我不确定,但我认为这应该可以解决问题。

【讨论】:

  • 嗨。看来您是对的,我无法以任何方式与之互动。但似乎应该有一些选项我可以发送给它,告诉 Windows“给我焦点!”。
【解决方案2】:

您是否尝试记录对话框上的点击 - 以便 QTP 在继续之前点击它以设置焦点?

【讨论】:

  • 嗨。好建议。我试过但没有用。海伦在另一个答案中写的似乎是正确的。对话框是模态的。所以一旦我打开它,QTP 只是等待回复,我无法以任何方式与文件对话框交互。
猜你喜欢
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 2020-03-30
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多