用QTP软件查询后如何用xpahqtp的脚本语言是什么来写出

QTP中常用的VBS函数_QuickTestPro_领测软件测试网
QTP中常用的VBS函数
发表于:来源:作者:点击数:
QTP中常用的 VB S函数 软件测试 Left 函数 返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。 语法 Left(string, length) Left 函数的语法有下面的命名参数: 部分 说明 string 必要参数。字符串表达式其中最左边的那些字符将被返回。如果
QTP中常用的S函数&&
Left 函数返回 Variant (String),其中包含字符串中从左边算起指定数量的字符。语法Left(string, length)Left 函数的语法有下面的命名参数:
部分&&&&&&& 说明&&&&&&&&&& string&&&&&&& 必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。&&&&&&&&&& length&&&&&&& 必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。&&&&&&&&
说明欲知 string 的字符数,使用 Len 函数。注意&&& LeftB 函数作用于包含在字符串中的字节数据。所以 length 指定的是字节数,而不是要返回的字符数。
Mid 函数从字符串中返回指定数目的字符。Mid(string, start[, length])参数string 字符串表达式,从中返回字符。如果 string 包含 Null,则返回 Null。 Start string 中被提取的字符部分的开始位置。如果 start 超过了 string 中字符的数目,Mid 将返回零长度字符串 ("")。 Length 要返回的字符数。如果省略或 length 超过文本的字符数(包括 start 处的字符),将返回字符串中从 start 到字符串结束的所有字符。 说明要判断 string 中字符的数目,可使用 Len 函数。下面的示例利用 Mid 函数返回字符串中从第四个字符开始的六个字符:Dim MyVarMyVar = Mid("VB脚本is fun!", 4, 6) 'MyVar 包含 "Script"。注意&& MidB 函数与包含在字符串中的字节数据一起使用。其参数不是指定字符数,而是字节数。
Len 函数返回字符串内字符的数目,或是存储一变量所需的字节数。Len(string | varname)参数string 任意有效的字符串表达式。如果 string 参数包含 Null,则返回 Null。 Varname 任意有效的变量名。如果 varname 参数包含 Null,则返回 Null。 说明下面的示例利用 Len 函数返回字符串中的字符数目:Dim MyStringMyString = Len("VBSCRIPT") 'MyString 包含 8。注意&& LenB 函数与包含在字符串中的字节数据一起使用。LenB 不是返回字符串中的字符数,而是返回用于代表字符串的字节数。
Right 函数从字符串右边返回指定数目的字符。Right(string, length)参数string 字符串表达式,其最右边的字符被返回。如果 string 参数中包含 Null,则返回 Null。 Length 数值表达式,指明要返回的字符数目。如果为 0,返回零长度字符串;如果此数大于或等于 string 参数中的所有字符数目,则返回整个字符串。 说明要确定 string 参数中的字符数目,使用 Len 函数。下面的示例利用 Right 函数从字符串右边返回指定数目的字符:Dim AnyString, MyStrAnyString = "Hello World"&&&&& ' 定义字符串。MyStr = Right(AnyString, 1)&&& ' 返回 "d"。MyStr = Right(AnyString, 6)&&& ' 返回 " World"。MyStr = Right(AnyString, 20)&& ' 返回 "Hello World"。注意&& RightB 函数用于字符串中的字节数据,length 参数指定返回的是字节数目,而不是字符数目。
InStr 函数返回某字符串在另一字符串中第一次出现的位置。InStr([start, ]string1, string2[, compare])参数start 可选项。数值表达式,用于设置每次搜索的开始位置。如果省略,将从第一个字符的位置开始搜索。如果 start 包含 Null,则会出现错误。如果已指定 compare,则必须要有 start 参数。 string1 必选项。接受搜索的字符串表达式。 string2 必选项。要搜索的字符串表达式。 compare 可选项。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,将执行二进制比较。 设置compare 参数可以有以下值:
常数&&&&&&& 值&&&&&&& 描述&&&&&&&&&& vbBinaryCompare&&&&&&& 0&&&&&&& 执行二进制比较。&&&&&&&&&& vbTextCompare&&&&&&& 1&&&&&&& 执行文本比较。&&&&&&&& 返回值InStr 函数返回以下值:
如果&&&&&&& InStr 返回&&&&&&&&&& string1 为零长度&&&&&&& 0&&&&&&&&&& string1 为 Null&&&&&&& Null&&&&&&&&&& string2 为零长度&&&&&&& start&&&&&&&&&& string2 为 Null&&&&&&& Null&&&&&&&&&& string2 没有找到&&&&&&& 0&&&&&&&&&& 在 string1 中找到 string2&&&&&&& 找到匹配字符串的位置&&&&&&&&&& start & Len(string2)&&&&&&& 0&&&&&&&& 说明下面的示例利用 InStr 搜索字符串:Dim SearchString, SearchChar, MyPosSearchString ="XXpXXpXXXP"&& ' 要搜索的字符串。SearchChar = "P"&& ' Search for "P".MyPos = Instr(4, SearchString, SearchChar, 1)&& ' 在位置 4 进行的文本比较。返回 6。MyPos = Instr(1, SearchString, SearchChar, 0)&& ' 在位置 1 进行的二进制比较。返回 9。MyPos = Instr(SearchString, SearchChar)&& ' 默认情况下,进行的是二进制比较(省略了最后的参数)。返回 9。MyPos = Instr(1, SearchString, "W")&& ' 在位置 1 进行的二进制比较。返回 0(找不到 "W")。注意&& InStrB 函数使用包含在字符串中的字节数据,所以 InStrB 返回的不是一个字符串在另一个字符串中第一次出现的字符位置,而是字节位置。
LTrim、RTrim与 Trim 函数返回不带前导空格 (LTrim)、后续空格 (RTrim) 或前导与后续空格 (Trim) 的字符串副本。LTrim(string)RTrim(string)Trim(string)string 参数是任意有效的字符串表达式。如果 string 参数中包含 Null,则返回 Null。说明下面的示例利用 LTrim, RTrim, 和 Trim 函数分别用来除去字符串开始的空格、尾部空格、 开始和尾部空格:Dim MyVarMyVar = LTrim("&& vbscript ")&& 'MyVar 包含 "vbscript "。MyVar = RTrim("&& vbscript ")&& 'MyVar 包含 "&& vbscript"。MyVar = Trim("&& vbscript ")&& 'MyVar 包含 "vbscript"。
Rnd 函数返回一个随机数。Rnd[(number)]number 参数可以是任意有效的数值表达式。说明Rnd 函数返回一个小于 1 但大于或等于 0 的值。number 的值决定了 Rnd 生成随机数的方式:
如果 number 为&&&&&&& Rnd 生成&&&&&&&&&& 小于零&&&&&&& 每次都相同的值,使用 number 作为种子。&&&&&&&&&& 大于零&&&&&&& 序列中的下一个随机数。&&&&&&&&&& 等于零&&&&&&& 最近生成的数。&&&&&&&&&& 省略&&&&&&& 序列中的下一个随机数。&&&&&&&& 因每一次连续调用 Rnd 函数时都用序列中的前一个数作为下一个数的种子,所以对于任何最初给定的种子都会生成相同的数列。在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有基于系统计时器的种子。要产生指定范围的随机整数,请使用以下公式: Int((upperbound - lowerbound + 1) * Rnd + lowerbound)这里, upperbound 是此范围的上界,而 lowerbound 是此范围内的下界。注意&& 要重复随机数的序列,请在使用数值参数调用 Randomize 之前,立即用负值参数调用 Rnd。使用同样 number 值的 Randomize 不能重复先前的随机数序列。
Randomize 语句初始化随机数生成器。语法Randomize [number]可选的 number 参数是 Variant 或任何有效的数值表达式。说明Randomize 用 number 将 Rnd 函数的随机数生成器初始化,该随机数生成器给 number 一个新的种子值。如果省略 number,则用系统计时器返回的值作为新的种子值。如果没有使用 Randomize,则(无参数的)Rnd 函数使用第一次调用 Rnd 函数的种子值。注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。Rnd 函数示例本示例使用 Rnd 函数随机生成一个 1 到 6 的随机整数。本示例用 Randomize 语句初始化随机数生成器。由于忽略了数值参数, 所以 Randomize 用 Timer 函数的返回值作为新的随机数种子值。
Dim MyValueRandomize&& ' 对随机数生成器做初始化的动作。
MyValue = Int((6 * Rnd) + 1)&& ' 生成 1 到 6 之间的随机数值。Split函数描述返回一个下标从零开始的一维数组,它包含指定数目的子字符串。语法Split(expression[, delimiter[, count[, compare]]])Split函数语法有如下几部分:
部分&&&&&&& 描述&&&&&&&&&& expression&&&&&&& 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。&&&&&&&&&& delimiter&&&&&&& 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。&&&&&&&&&& count&&&&&&& 可选的。要返回的子字符串数,–1表示返回所有的子字符串。&&&&&&&&&& compare&&&&&&& 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。&&&&&&&&
设置值compare参数的设置值如下:
常数&&&&&&& 值&&&&&&& 描述&&&&&&&&&& vbUseCompareOption&&&&&&& –1&&&&&&& 用Option Compare语句中的设置值执行比较。&&&&&&&&&& vbBinaryCompare&&&&&&& 0&&&&&&& 执行二进制比较。&&&&&&&&&& vbTextCompare&&&&&&& 1&&&&&&& 执行文字比较。&&&&&&&&&& vbDatabaseCompare&&&&&&& 2&&&&&&& 仅用于Microsoft Access。基于您的的信息执行比较。&&&&&&&&
Replace 函数返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。Replace(expression, find, replacewith[, compare[, count[, start]]])参数expression 必选项。字符串表达式包含要替代的子字符串。 Find 必选项。被搜索的子字符串。 Replacewith 必选项。用于替换的子字符串。 Start 可选项。expression 中开始搜索子字符串的位置。如果省略,默认值为 1。在和count 关联时必须用 count 可选项。执行子字符串替换的数目。如果省略,默认值为 -1,表示进行所有可能的替换。在和 start 关联时必须用。 Compare 可选项。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,缺省值为 0 ,这意味着必须进行二进制比较。 设置compare 参数可以有以下值:
常数&&&&&&& 值&&&&&&& 描述&&&&&&&&&& vbBinaryCompare&&&&&&& 0&&&&&&& 执行二进制比较。&&&&&&&&&& vbTextCompare&&&&&&& 1&&&&&&& 执行文本比较。&&&&&&&& 返回值Replace 返回以下值:
如果&&&&&&& Replace 返回&&&&&&&&&& expression 为零长度&&&&&&& 零长度字符串 ("")。&&&&&&&&&& expression 为 Null&&&&&&& 错误。&&&&&&&&&& find 为零长度&&&&&&& expression 的副本。&&&&&&&&&& replacewith 为零长度&&&&&&& expression 的副本,其中删除了所有由 find 参数指定的内容。&&&&&&&&&& start & Len(expression)&&&&&&& 零长度字符串。&&&&&&&&&& count 为 0&&&&&&& expression 的副本。&&&&&&&& 说明Replace 函数的返回值是经过替换(从由 start 指定的位置开始到 expression 字符串的结尾)后的字符串,而不是原始字符串从开始至结尾的副本。下面的示例利用 Replace 函数返回字符串:Dim MyStringMyString = Replace("XXpXXPXXp", "p", "Y")&& '二进制比较从字符串左端开始。返回 "XXYXXPXXY"。MyString = Replace("XXpXXPXXp", "p", "Y", '文本比较从第三个字符开始。返回 "YXXYXXY"。3,, -1, 1)
StrComp 函数返回一个表明字符串比较结果的值。StrComp(string1, string2[, compare])参数string1 必选项。任意有效的字符串表达式。 string2 必选项。任意有效的字符串表达式。 Compare 可选项。指示在计算字符串时使用的比较类型的数值。如果省略,则执行二进制比较。有关数值,请参阅“设置”部分。 设置compare 参数可以有以下值:
常数&&&&&&& 值&&&&&&& 描述&&&&&&&&&& vbBinaryCompare&&&&&&& 0&&&&&&& 执行二进制比较。&&&&&&&&&& vbTextCompare&&&&&&& 1&&&&&&& 执行文本比较。&&&&&&&& 返回值StrComp 函数有以下返回值:
如果&&&&&&& StrComp 返回&&&&&&&&&& string1 小于 string2&&&&&&& -1&&&&&&&&&& string1 等于 string2&&&&&&& 0&&&&&&&&&& string1 大于 string2&&&&&&& 1&&&&&&&&&& string1 或 string2 为 Null&&&&&&& Null&&&&&&&& 说明下面的示例利用 StrComp 函数返回字符串比较的结果。如果第三个参数为 1 执行文本比较;如果第三个参数为 0 或者省略执行二进制比较。Dim MyStr1, MyStr2, MyCompMyStr1 = "ABCD": MyStr2 = "abcd"&& '定义变量。MyComp = StrComp(MyStr1, MyStr2, 1)&& ' 返回 0。MyComp = StrComp(MyStr1, MyStr2, 0)&& ' 返回 -1。MyComp = StrComp(MyStr2, MyStr1)&& ' 返回 1。
CInt 函数返回表达式,此表达式已被转换为 Integer 子类型的 Variant。CInt(expression)expression 参数是任意有效的表达式。说明通常,可以使用子类型转换函数书写代码,以显示某些操作的结果应被表示为特定的数据类型,而不是默认类型。例如,在出现货币、单精度或双精度运算的情况下,使用 CInt 或 CLng 强制执行整数运算。CInt 函数用于进行从其他数据类型到 Integer 子类型的国际公认的格式转换。例如对十进制分隔符(如千分符)的识别,可能取决于系统的区域设置。如果 expression 在 Integer 子类型可接受的范围之外,则发生错误。下面的示例利用 CInt 函数把值转换为 Integer: Dim MyDouble, MyIntMyDouble = &&&&& ' MyDouble 是 Double。MyInt = CInt(MyDouble)&&& ' MyInt 包含 2346。注意&& CInt 不同于 Fix 和 Int 函数删除数值的小数部分,而是采用四舍五入的方式。当小数部分正好等于 0.5 时, CInt 总是将其四舍五入成最接近该数的偶数。例如, 0.5 四舍五入为 0, 以及 1.5 四舍五入为 2.
CStr 函数返回表达式,该表达式已被转换为 String 子类型的 Variant。CStr(expression)expression 参数是任意有效的表达式。说明通常,可以使用子类型转换函数书写代码,以显示某些操作的结果应被表示为特定的数据类型,而不是默认类型。例如,使用 CStr 强制将结果表示为 String。CStr 函数用于替代 Str 函数来进行从其他数据类型到 String 子类型的国际公认的格式转换。例如对十进制分隔符的识别取决于系统的区域设置。expression 根据下表决定返回的数据:
如果 expression 为&&&&&&& CStr 返回&&&&&&&&&& Boolean&&&&&&& 字符串,包含 True 或 False。&&&&&&&&&& Date&&&&&&& 字符串,包含系统的短日期格式日期。&&&&&&&&&& Null&&&&&&& 运行时错误。&&&&&&&&&& Empty&&&&&&& 零长度字符串 ("")。&&&&&&&&&& Error&&&&&&& 字符串,包含跟随有错误号码的单词 Error。&&&&&&&&&& 其他数值&&&&&&& 字符串,包含此数字。&&&&&&&& 下面的示例利用 CStr 函数把数字转换为 String: Dim MyDouble, MyStringMyDouble = 437.324&&&&&&&& ' MyDouble 是双精度值。MyString = CStr(MyDouble)& ' MyString 包含 "437.324"。
LCase 函数返回字符串的小写形式。LCase(string)string 参数是任意有效的字符串表达式。如果 string 参数中包含 Null,则返回 Null。说明仅大写字母转换成小写字母;所有小写字母和非字母字符保持不变。
下面的示例利用 LCase 函数把大写字母转换为小写字母:Dim MyStringDim LCaseStringMyString = "VBSCript"LCaseString = LCase(MyString)&& ' LCaseString 包含 "vbscript"。UCase 函数返回字符串的大写形式。UCase(string)string 参数是任意有效的字符串表达式。如果 string 参数中包含 Null,则返回 Null。说明只有小写字母被转换成大写字母;所有大写字母和非字母字符均保持不变。下面的示例利用 UCase 函数返回字符串的大写形式:Dim MyWordMyWord = UCase("Hello World")&& ' 返回"HELLO WORLD"。
MsgBox 函数在对话框中显示消息,等待用户单击按钮,并返回一个值指示用户单击的按钮。MsgBox(prompt[, buttons][, title][, helpfile, context])参数prompt 作为消息显示在对话框中的字符串表达式。prompt 的最大长度大约是 1024 个字符,这取决于所使用的字符的宽度。如果 prompt 中包含多个行,则可在各行之间用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符的组合 (Chr(13) & Chr(10)) 分隔各行。 Buttons 数值表达式,是表示指定显示按钮的数目和类型、使用的图标样式,默认按钮的标识以及消息框样式的数值的总和。有关数值,请参阅“设置”部分。如果省略,则 buttons 的默认值为 0。 Title 显示在对话框标题栏中的字符串表达式。如果省略 title,则将应用程序的名称显示在标题栏中。 Helpfile 字符串表达式,用于标识为对话框提供上下文相关帮助的帮助文件。如果已提供 helpfile,则必须提供 context。在 16 位系统平台上不可用。 Context 数值表达式,用于标识由帮助文件的作者指定给某个帮助主题的上下文编号。如果已提供 context,则必须提供 helpfile。在 16 位系统平台上不可用。 设置buttons 参数可以有以下值:
常数&&&&&&& 值&&&&&&& 描述&&&&&&&&&& vbOKOnly&&&&&&& 0&&&&&&& 只显示确定按钮。&&&&&&&&&& vbOKCancel&&&&&&& 1&&&&&&& 显示确定和取消按钮。&&&&&&&&&& vbAbortRetryIgnore&&&&&&& 2&&&&&&& 显示放弃、重试和忽略按钮。&&&&&&&&&& vbYesNoCancel&&&&&&& 3&&&&&&& 显示是、否和取消按钮。&&&&&&&&&& vbYesNo&&&&&&& 4&&&&&&& 显示是和否按钮。&&&&&&&&&& vbRetryCancel&&&&&&& 5&&&&&&& 显示重试和取消按钮。&&&&&&&&&& vbCritical&&&&&&& 16&&&&&&& 显示临界信息图标。&&&&&&&&&& vbQuestion&&&&&&& 32&&&&&&& 显示警告查询图标。&&&&&&&&&& vbExclamation&&&&&&& 48&&&&&&& 显示警告消息图标。&&&&&&&&&& vbInformation&&&&&&& 64&&&&&&& 显示信息消息图标。&&&&&&&&&& vbDefaultButton1&&&&&&& 0&&&&&&& 第一个按钮为默认按钮。&&&&&&&&&& vbDefaultButton2&&&&&&& 256&&&&&&& 第二个按钮为默认按钮。&&&&&&&&&& vbDefaultButton3&&&&&&& 512&&&&&&& 第三个按钮为默认按钮。&&&&&&&&&& vbDefaultButton4&&&&&&& 768&&&&&&& 第四个按钮为默认按钮。&&&&&&&&&& vbApplicationModal&&&&&&& 0&&&&&&& 应用程序模式:用户必须响应消息框才能继续在当前应用程序中工作。&&&&&&&&&& vbSystemModal&&&&&&& 4096&&&&&&& 系统模式:在用户响应消息框前,所有应用程序都被挂起。&&&&&&&& 第一组值 (0 - 5) 用于描述对话框中显示的按钮类型与数目;第二组值 (16, 32, 48, 64) 用于描述图标的样式;第三组值 (0, 256, 512) 用于确定默认按钮;而第四组值 (0, 4096) 则决定消息框的样式。在将这些数字相加以生成 buttons 参数值时,只能从每组值中取用一个数字。返回值MsgBox 函数有以下返回值:
常数&&&&&&& 值&&&&&&& 按钮&&&&&&&&&& vbOK&&&&&&& 1&&&&&&& 确定&&&&&&&&&& vbCancel&&&&&&& 2&&&&&&& 取消&&&&&&&&&& vbAbort&&&&&&& 3&&&&&&& 放弃&&&&&&&&&& vbRetry&&&&&&& 4&&&&&&& 重试&&&&&&&&&& vbIgnore&&&&&&& 5&&&&&&& 忽略&&&&&&&&&& vbYes&&&&&&& 6&&&&&&& 是&&&&&&&&&& vbNo&&&&&&& 7&&&&&&& 否&&&&&&&& 说明如果同时提供了 helpfile 和 context,则用户可以按 F1 键以查看与上下文相对应的帮助主题。如果对话框显示取消按钮,则按 ESC 键与单击取消的效果相同。如果对话框包含帮助按钮,则有为对话框提供的上下文相关帮助。但是在单击其他按钮之前,不会返回任何值。当MicroSoft Internet Explorer使用MsgBox函数时,任何对话框的标题总是包含"VBScript",以便于将其与标准对话框区别开来。下面的例子演示了 MsgBox 函数的用法: Dim MyVarMyVar = MsgBox ("Hello World!", 65, "MsgBox Example")&& ' MyVar 包含 1 或 2,这取决于单击的是哪个按钮。
原文转自:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)QTP使用技巧(一) - 不要安于现状=奋斗=永不停息 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
将测试进行到底!
QTP使用技巧(一)
& 13:09:22
/ 个人分类:
这是从别的网上找来的,这些内容对我有很大的帮助,所以我就把它粘来了,以备不时之需。。1.runaction后面能不能接变量(动态调用action,所以从取数据做action名字了,但是调用总是找不到)?&&&&A:脚本中原有RunAction "testbase [case1]", oneIteration& &把引号中的内容放到Global表中的第22行,然后将代码修改为:& & datatable.getsheet("Global")& & datatable.setcurrentrow(22)& & strLogin=DataTable("ActionName","Global")& & RunAction strLogin, oneIteration& && & help中也有相关帮助& &如:& & Syntax& & RunAction ActionName, [IterationMode , IterationRange , Parameters]& & ActionName : String : The name of the action&2.QTP8.2中调用VB函数的问题(用VBscrīpt写了一些脚本需要的几个通用函数,有没有办法可以用类似include的方式进行调用,而不需要每次都把这些函数Copy到新的脚本中)?&&A:程序开头加上ExecuteFile "..\..\..\project\DeVariable.vbs"&3.QTP如何做回归测试(300多个TestCase,TD是否可以管理)?&&A:TD可以实现,可以生成测试集,一个测试集可以包含若干个测试脚本& & QTP8.2本身提供一个工具Test Batch Runner但是运行完没有报告。& & MI有另一个工具叫MTM(multitestmanager)&4.qtp自动节图功能A:具体可参考此帖:&5.在中如何设置使用别的浏览器(XP系统,用IE访问程序时,每次总提示屏蔽安装ActiveX插件,需要手动安装.但把这个过程录制到QTP后,回放一次是成功的。当我给某个输入框参数化了好多数据后,回放过程中,某些就会失败.& &可能有两个方面可以解决这问题1、每个动作设置延迟时间2、设置为用别的浏览器。)& & (失败的提示信息是&&object not visible)&&A:1.延迟可用WAIT X(X单位是秒)& & 2.可以安装插件添加新的浏览器& && & SystemUtil.Run "file” "params" "dir" "op'' "mode"& && & QTP运行可执行文件的方法及其参数& &&&ps:建议是用IE浏览器,或者IE内核浏览器做测试&6.checkpoint检查网页,是否能实现只要网页出现乱码就返回错误报告?&&A:Text not displayed能解决问题& &关于Text Checkpoint的总结。& & 1)Text Checkpoint的检查部分分为三个部分。Checked Text、Text Before、Text After。在默认的情况下,Checked Text执行的是精确检查,其余两个部分执行的是模糊检查。Text&Before(After)检查的内容可以比实际的内容少。但是不能有和是实际内容不相符的地方,否则就失败。& & 2) Exact match选项。如果选择了这个选项,三部分完全都进行精确检查。个人觉得和只检查checked Text部分没有区别。& & 3) Text not displayed。这个选项本质上就是一个结果取反的过程。就是把检查的结果给反过来,把pass变成Fail,Fail变成pass。我觉得这样就很容易理解。&7.WSH的应用方法&&A:WSH实际上是一个脚本语言的运行环境,它之所以具备强大的功能,是在于其充分挖掘了脚本语言的潜力。因此,如果抛开脚本语言而空谈WSH,那实际上就没有了意义。而如果再展开来讲述脚本语言,显然就离开了今天的主题。在这种情况下,只好采取一种折衷的方法:给大家推荐几个脚本文件利用WSH执行任务的实例,希望大家能通过这些例子对WSH的使用有一个初步的认识。  脚本文件的编写十分方便,你可以选用任意一个文字编辑软件进行编写,编写完成后,只需将它保存为WSH所支持的文件名就可以了(如.js文件和.vbs文件)。最常用的就是记事本编辑器,下面的实例都是以它作为工具编写的。打开记事本编辑器,在上面编写如下内容:  Wscrīpt.Echo("走近WSH")  将它保存为以.vbs或.js为后缀名(千万不要写成了.txt)的文件并退出记事本。双击执行这个文件。  这一次,我们要利用WSH完成一次创建十个文件夹的。代码如下:  dim objdir  set ōbjdir=wscrīpt.createobject("scrīpting.filesystemobject")  for k=1 to 10  anewfolder="c:\chapter" & k  objdir.createfolder(anewfolder)  next同样,将它存为.vbs文件并退出。运行后,我们会发现,C盘根目录下一次性多出了十个新文件夹。& &最后,再举一个在服务器上的运用。下面的代码将帮助你重新启动指定的IIS服务:  ' define a constant for stopped services  Const ADS_SERVICE_STOPPED = 1' get an ADSI object for a computer  Set ōbjComputer = GetObject("WinNT://MYCOMPUTER,computer")' get an object for a service  Set ōbjService = objComputer.GetObject("Service","MYSERVICE")' check to see if the service is stopped  If (objService.Status = ADS_SERVICE_STOPPED) Then' if the service is stopped, then start it  objService.Start  End If将它以startsvc.vbs为名保存在C:盘根目录。并通过如下命令执行:Cscrīpt C:\STARTSVC.VBS。运行后,经你指定的IIS服务项将被重新开启。其实,在Windows的samples目录下,有个WSH文件夹,那里面有不少很具代表性的.vbs和. js脚本文件。此外,利用WSH还可以自己编写脚本文件来提高网络管理方面的效率。8.从EXCEL中导出数据进行测试datatable.AddSheet("51sheet")datatable.ImportSheet "f:\test.xls","testsheet","51sheet"Dim i,RowCount '定义两个变量i=0RowCount=datatable.GetSheet("51sheet").GetRowCount '设置RowCount等于51sheet中的行数。msgbox RowCountDo while i&rowcounti=i+1 '第一次进入循环,执行这句后,i=1'datatable.getsheet("51sheet").setcurrentrow(i)&&这句话被我注释掉了,正确的写法应该是下面这样,分开写。datatable.getsheet("51sheet")datatable.setcurrentrow(i)'执行过上面两句后,CurrentRow是第一行。tempData=DataTable.GetSheet("51sheet").GetParameter("Name").Value& && && && && && &'现在,我们调用msgbox看看下面这种调用方法得到的是什么值?没错,是第一行的值,下一次循环呢?'得到的是第二行的值么?msgbox "GetParameter-Name:"&tempData '这里弹出我们要看的值。'下面我们用另外一种方法来得到。msgbox "GetParameter-i:"&DataTable.GetSheet("51sheet").GetParameter(1).Value '这里我用GetParameter(1)去得到sheet中第一列的值。loop&9.关于dtGlobalsheet与dtLocalsheet1) dtGlobalsheet只有一个,它的index值比较特殊,它有两个index值,一个是1还有一个是内置的默认的1000。你可以用1或者1000去引用它都是正确的。当然了,如果你用dtGlobalsheet来引用它也是正确的。这个sheet的Name叫做"Global"。注意:SheetName是区分大小写的。2) dtLocalsheet可以用index:1001来引用,当然,也可以用2来引用。至于其它自定义的sheet嘛,你就只能用index:3来引用了。它没有内置的默认的类似前两个那样的index值。3) datatable这个对象只有一个。就是所有sheet的集合。或许你把它理解为excel文件比较好。dtsheet呢?就是其中的每个sheet。所不同的就是MI为他们做了一些默认值。在我们的应用中,可能会有多个action,如:actiion1,actiion2,actiion3这些action也分别对应有各自默认的LoaclSheet.即:actiion1,actiion2,actiion3。如果每个action中,我们都只用到一个sheet,那就好办了,在每个action中都可以用localsheet来引用,但是如果我们有两个及两个以上的sheet.那么就比较容易乱套了。&10.移动当前位置的行For i=1&&to 3datatable.getsheet("Global")datatable.setcurrentrow(i)DataTable("C","Global") = DataTable("nodename","Global")‘把表Global中的nodename字段中的内容取出来。Next&11.如何能记录到页面的校验码?(Output value能不能得到页面的校验码,一般的校验码是由随即生成的 ,用QTP怎么录脚本在登陆前得到校验码并输入到校验码一栏)& &A:1)一个很简单的方法:测试时叫开发屏蔽掉检验码的功能后,再录制脚本。检验码的功能可以手工很简单测试出来。& &&&2)想得到图片的校验码,唯一的方法就是跟程序员拿程序,然后自己在脚本里面写FUCNTION!& && &&&其它就要手动输入了!&12.QTP正则表达式的帮助& &A:见附件word文档:( 18:32, 26.5 K)13.自动测试实施计划& &1)分析实施可能存在的风险:就是决定是否实施,用成本 时间 效果 。。& &2)制定实施的时机:也就是在什么阶段& &3)研究所要测试的功能 性能& &4)分析在测试中可能遇到的问题 和困难& &5)预估所需要的人时和相应的硬件& &7)确定负责人员和相关测试人员& &6)制定详细的测试计划 方案& &7)最后是执行计划&14.一个Action里如何调用在另一个Action中定义的函数、过程(或变量、常量)& &例如:& &-----------------------------------& &'Action_A&& & Public strURL& && && &&&...... ......& & Function QueryList()& && &&&...... ......& && &&&...... ......&&& & End Function& &------------------------------------& &'Action_B& &'如何调用QueryList函数和strURL& &A:1)可以把这些变量和Function放在vbs文件作为resource文件共享,在每个Action中添加该文件.& && && &如果function中出现控件调用,那么必须确保该控件在相应的Action的object repository中是存在的.&  2)定义一个可被调用的ACTION里面唯一的放一个FUNCTION&15.如何管理QTP的源代码?(QTP生成的源代码比较多,而且和环境控件都有关,假如需要多人同时开发,&请问如何管理源代码?)& &A:一个是代码你可以通过vss,cvs等来进行管理& &&&一个是通过td或者qc的基于用例的代码管理& &&&其实第一种方法是基于版本控制来进行的,第二种方法是基于用例管理进行的& &&&角度不同,管理方法也不同,不过团队协作需要的大家分工明确,进度控制。代码管理可以借鉴开发的方法。&16:脚本不能回放,IE中的AtiveX设置有问题??& &A: TOOL---OPTIONS----Ative screen& &&&然后点开advanced..,把LOAD&&ACTIVEX CONTROLS打勾& &&&TOOL---OPTIONS----Ative screen& &&&然后点开advanced..,run scrīpts--&disabled!&17.如何参数化linkBrowser("Browser").Page("Page").SyncBrowser("Browser").Navigate "/cgi-bin/index.php"Browser("Browser").Page("51Testing---软件测试,软件质量工程师").SyncSet tags=Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Object.linksDim i,j, arr()i=0For Each element in tags& & If Ucase(element.tagname)="A" and left(element.InnerText,1)="[" Then& & & & & & & & & & & & ReDim Preserve arr(i+1)& & & & & & & && &&&arr(i)=element.InnerText& & i=i+1& & & & end ifNextFor j=0 to i& & & & & & & & & & & & Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Link("[版主讨论区]").SetTOProperty "Text",arr(j)& && && && &Browser("Browser").Page("51Testing软件测试论坛---软件测试,软件质量工程师").Link("[版主讨论区]").Click& & & & & & & & & & & & Browser("Browser").BackNext这段代码先是打开一个空的页面,然后输入url.到达论坛首页。然后得到所有版面的名称,也就是link的名称。存到数组里面。然后使用SetTOProperty更换录制时候录下的link的属性。这时候再click&&18.QTP在Debug状态,在Export View 区域不能写入任何东西A:如果你的目的是在debug过程中修改已执行过的命令,可以在Debug view的Command中执行命令,如重新执行已经执行过的命令,修改变量的值等等。如:Window("Flight Reservation").WinEdit("Name:").Set "51testing"已经执行,如果现在想修改“51testing”为“testing”,可以在command中执行Window("Flight Reservation").WinEdit("Name:").Set "testing"&19.动态变化值如何获取A:VAL=Browser("欢迎使用我的工作台").Page("欢迎使用我的工作台").Frame("managePlace_7").WebRadioGroup("userAccountId_0").GetROProperty("Value")Browser("欢迎使用我的工作台").Page("欢迎使用我的工作台").Frame("managePlace_7").WebRadioGroup("userAccountId_0").select val&20.如何一一获得Table中 某栏link的text?A:通过上面link的学习.我终于融会贯通,完成了我的问题:与大家共享://////////////////////////////////////////////////////////////////////////////////////Browser("Login").Page("Page").Frame("contents").ViewLink("treeview").Image("Tplus").ClickBrowser("Login").Page("Page").Frame("contents").ViewLink("treeview").Image("Tplus_2").ClickBrowser("Login").Page("Page").Frame("contents").ViewLink("treeview").Link("开课设置").ClickBrowser("Login").Page("Page").Frame("main").WebList("drpStatus").Select "任意"Browser("Login").Page("Page").Frame("main").WebButton("查找").ClickBrowser("Login").Page("Page").SyncDim finded,findCode,Nowout'define a constrat for findfindCode = 110901& &finded = falseFunction MaxPage(pageString)& &'msgbox pageString& &Dim ilen,i,j& &ilen = len(pageString)& &i=ilen& &While i&0& && &&&j = mid(pageString,i,1)& & & && & 'msgbox j& & & && & If instr("",j)&0 Then& && && &&&MaxPage = j& & & & & & & && & 'msgbox MaxPage& & & & & & & && & Exit function& & & && & End If& & & && & i=i-1& &WendEnd Function&&Dim trowcount,maxptrowcount = Browser("Login").Page("Page").Frame("main_8").WebTable("开课代码").RowCountmsgbox "Rowcount: "&trowcountNowout = Browser("Login").Page("Page").Frame("main_8").WebTable("开课代码").GetCellData(trowcount,1)Nowout = trim(Nowout)maxp = MaxPage(Nowout)msgbox "max page: "& maxpDim nowPage,checkidFor nowPage = 1 to maxp& &If&&finded Then& & & && & Exit for& &End If&&' link to the当前所需page&&If nowpage&1 Then& & Browser("Login").Page("Page").Frame("main_8").Link("[2]").SetTOProperty "Text","["&nowpage&"]"& & Browser("Login").Page("Page").Frame("main_8").Link("[2]").Click& & Browser("Login").Page("Page").Sync& &end if&&' Get the rowcount of table in now page& &trowcount = Browser("Login").Page("Page").Frame("main_8").WebTable("开课代码").RowCount& &msgbox "Rowcount: "&trowcount&&'link every record in the table of the page& &for i = 2 to trowcount&&- 2& & & & Nowout = Browser("Login").Page("Page").Frame("main_8").WebTable("开课代码").GetCellData(i,2)& & & & 'msgbox i&": "&Nowout& & checkid = "dgCourse:_ctl" &(i+1)& ":_ctl0"& & Browser("Login").Page("Page").Frame("main_8").WebCheckBox("dgCourse:_ctl3:_ctl0").SetTOProperty "name",checkid& & Browser("Login").Page("Page").Frame("main_8").WebCheckBox("dgCourse:_ctl3:_ctl0").Set "ON"& & & && & Browser("Login").Page("Page").Frame("main_8").Link("0901").SetTOProperty "Text",Nowout& & Browser("Login").Page("Page").Frame("main_8").Link("0901").Click& & Browser("开课设置详细信息").Page("开课设置详细信息").Sync& & & & 'wait(1)& & & & msgbox "begun"& & & & msgbox findCode& & & & msgbox Nowout& & & & msgbox "finished"& & & & If&&trim(findCode) = trim(Nowout) Then& && &&&finded = true& & & & & & & & msgbox "find is ok!"& & & & & & & & wait(2)& & & & & & & & Exit for& & & & End If& & Browser("开课设置详细信息").Close& & Browser("Login").Page("Page").Sync&&nextNext&21.网页下拉框的选择A:For i =1 to 10& & Randomize& & IndexNum=Int((10 - 5 + 1) * Rnd + 5)& & Browser(" Tours").Page("Find Flights_2").WebList("arrive").Select "#"&IndexNum& & wait(3)Next&Sub ChildObjects_Example()'The following example uses the ChildObjects method to find all the'list objects on a Web page, and then to select an item in each list.Set ōDesc = Descrīption.Create()oDesc("micclass").Value = "WebList"Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)NumberOfLists = Lists.Count()For i = 0 To NumberOfLists - 1Lists(i).Select i + 1NextEnd Sub&22.将测试数据单独拿出来A:取得一个Browser("Browser").Page("").WebList("fid").GetItem (1)取得全部Browser("Browser").Page("").WebList("fid").GetROProperty("all items")&以下可以在自带的例子中实现Window("Flight Reservation").WinComboBox("Fly From:").Select "Frankfurt"a=window("Flight Reservation").wincombobox("Fly From:").GetItem(1)reporter.ReportEvent 2,"下拉列表的值",a&23.和TD连接A:在QTP中不是有个Quality Center Connection,选择服务器连接,服务器处输入类似,其中computer_name为服务器的名字,连接后在测试结果中添加defect就可以与TD相连了。&

我要回帖

更多关于 qtp的脚本语言是什么 的文章

 

随机推荐