我有一个安装了Mercury Quick Test Professional 9.2的虚拟机(VMware).我有一个测试应用程序的脚本,使用Infragistics库在VB.NET中编写.
如果我使用笔记本电脑(使用远程桌面)访问此虚拟机,一切正常,脚本完成没有问题.我的笔记本电脑使用Windows经典主题运行XP.
如果我使用另一台计算机(使用远程桌面)访问此虚拟机,则脚本启动正常,但在中途停止,而没有来自QTP的错误消息,没有.这台机器运行XP,具有Windows经典主题.
两种设置之间的一个区别是屏幕尺寸,笔记本电脑是1920x1280,其他机器是1280x1024.
脚本停止的步骤涉及检查UltraWinGrid中的复选框.显示复选框本身,在两种情况下均显示在屏幕上.
有没有人之前有这个问题,或者知道为什么两台机器之间的行为不同?
谢谢.
我试图从QTP调用C#dll(使用vbscript).我尝试了很多没有成功的事情:
码:
using System;
using System.Collections.Generic;
using System.Text;
namespace st
{
public class Class1
{
public static int GetValue()
{
return 34;
}
}
}
Run Code Online (Sandbox Code Playgroud)
regasm /codebase st.dll
在QTP/vbscript中,我试过了
extern.Declare micInteger, "GetValue", "e:\st.dll", "GetValue"
无论QTP如何,我都非常感谢有关如何从.vbs文件调用c#dll的任何见解.
我无法让我的测试用例正确运行.
问题在于下面的代码,第一个if语句是准确的.QTP抱怨需要一个对象
For j=Lbound(options) to Ubound(options)
If options(j).Contains(choice) Then
MsgBox("Found " & FindThisString & " at index " & _
options.IndexOf(choice))
Else
MsgBox "String not found!"
End If
Next
Run Code Online (Sandbox Code Playgroud)
当我检查数组时,我可以看到它被正确填充,'j'也是正确的字符串.任何有关此问题的帮助将不胜感激.
我正在尝试使用getref从与测试关联的函数库中调用函数.我的代码 -
在行动1
str = "sample"
msg = "hi"
x = GetRef("Function_"&str)(msg)
msgbox x
Run Code Online (Sandbox Code Playgroud)
在函数库中,
Function Function_sample(strMsg)
Function_sample = strMsg
End Function
Run Code Online (Sandbox Code Playgroud)
我收到了错误 -
"无效的过程调用或参数."
但是如果函数放在同一个动作中,它可以正常工作.如何调用函数库中的函数(带参数),从变量中获取函数名?
我们说我传递Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox")给一个函数:
MyFunction (Browser("MyBrowser").Page("MyPage").WebCheckBox("MyBox"))
Run Code Online (Sandbox Code Playgroud)
稍后,该函数想要记录所接收的测试对象的逻辑名称(在这种情况下,当然是"MyBox").
怎么会这样呢?
"name"测试对象属性返回重新添加测试对象时生成的名称. 逻辑名称没有(记录的)测试对象属性. 运行时对象属性不可能包含名称,因为它不是AUT GUI中的名称.
所以我认为测试对象不知道它的名字.只有存储库"知道"测试对象存储在哪个名称下.
所以我将不得不检查存储库本身,而不是测试对象.
该ObjectRepositoryUtilAPI允许我(通过GetChildren,或其他方法)来找到repository's测试对象集合中的测试对象,并使用该GetLogicalName方法来得到它的名字.精细.
但是,使其工作的唯一方法是通过加载来获取对存储库的引用.我得到的印象是,这个API旨在操纵(或分析)来自QTP外部的回购,而不是来自测试运行.我不想重新加载存储库.我想在一个已经加载的存储库中查找测试对象.
该RepositoriesCollectionAPI可以告诉其加载(通过其名称和路径)我,但它不提供获取的手段引用到对象实例代表的库之一.
那么我怎样才能获得对已经加载的存储库的引用,所以我可以使用GetLogicalName?
或者通常问:给定对当前操作的共享存储库中包含的"普通"测试对象的引用,如何以编程方式找到其逻辑名称?
如果有一些超明智QTP向导一拉Motti谁知道这能不能做到,我倒是很欣赏来自他一个答案,即使它写着"不能做"如果这是真的.
例如,假设一个测试呼叫两个动作,A和B A执行通过调用"失败"步骤"Reporter.ReportEvent micFail, ..."和B进行'’通过调用步骤通过"Reporter.ReportEvent micpass, ..."
Reporter.RunStatusmicFail在A中执行失败步骤后立即返回.因此,即使在B中,B的状态完全为"绿色",也无法在"B"分支中判断出没有"失败"步骤当下.报告的测试运行状态Reporter.RunStatus" micFail从那时开始.
那么我怎样才能获得当前"分支"的运行状态?
我认为我要找的是当前或当前父级Reporter节点的颜色(即运行状态).
我正在研究以JavaDocs方式记录我的代码的方法.
有任何想法吗?
我使用UFT 11.52
到目前为止,我见过NaturalDocs + Perl.
还有其他想法吗?
提前致谢.
在某种情况下,我试图在QTP中使用select查询(更具体地说,QTP使用VB脚本)但是代码不起作用.
Option Explicit
Dim con,rs
Set con=createobject("adodb.connection")
Set rs=createobject("adodb.recordset")
con.open "Driver={Microsoft ODBC for Oracle};Server=myServer; Uid=USERNAME;Pwd=PASSWORD;"
rs.open "SELECT B.STATUS FROM STUDENT B WHERE B.BATCHCODE='FIRST' ",con
Do while not rs.eof
DataTable.GlobalSheet.AddParameter.RawValue = rs.fields("v1")
rs.movenext
Loop
Release objects
Set rs= nothing
Set con= nothing
Run Code Online (Sandbox Code Playgroud)
请帮助我知道代码的哪一部分导致脚本结果失败.
我想将QTP与Cruise Control集成,到目前为止我已经完成了,我被困在报告部分.
我想以某种方式向Cruise Control报告结果,我该如何做到这一点?请帮忙?
在VB脚本主机中编程(脚本)时,如何了解实现的内容和不实现的内容?
例如,记录(或:structure关键字)未实现,但类(或:class关键字)未实现.
Dim as <Type>不允许使用所有" as"短语.
您可以在类中创建属性,但也不能创建as任何类型的属性.
您不能从基类继承(" Inherits"关键字未知).
等等.
我看到脚本主机是一个脚本主机,所以保持其功能有限可能是有意义的.
但是,我没有看到这些限制以可访问的,甚至是逻辑的方式记录在某个地方,给出了所有意义.目前,我被迫坚持试错工作流程,并在QTP的在线帮助中单独查找我想到的每一个细节(我可能会发现其他我目前忘记的细节).这是微软设计的现实,还是我忽略了这一点?
问题出现在QTP上,它使用Windows脚本主机作为脚本语言.当然,我可以查找我正在寻找的每一个细节 - 但是,这些是我的主要问题:
在哪里可以找到涵盖脚本主机的各种VBA方言(和版本?)之间语言差异的详细列表或表格?
可以为脚本主机中包含的内容提供(简单)推理吗?