如何正确使用括号
各位大哥大姐,有没有QTP的Object Model Reference中文版,小弟看英文版特别是关于函数和括号的使用方面实在是搞不清细节!大概意思懂了!在此求各位了!万分感谢!
[ 本帖最后由 walker1020 于 2006-9-11 16:52 编辑 ]
不好意思忘了标题!-------QTP的Object Model Reference中文版
汗!给楼主的两个建议
1, 把Object Model Reference 传上来,这样可以帮你看看关于函数和括号的使用方面的细节;2,你自己也可以写一些代码来弄明白函数和括号的具体使用。这样你对函数和括号的使用更有印象。 When programming in VBScript, it is important that you follow the rules for using or not using parentheses () in your statements.
You must use parentheses around method arguments if you are calling a method that returns a value and you are using the return value. For example, use parentheses around method arguments if you are returning a value to a variable, if you are using the method in an If statement, or if you are using the Call keyword to call an action. You also need to add parentheses around the name of a checkpoint if you want to retrieve its return value.
Tip: If you receive an Expected end of statement error message when running a step in your test, it may indicate that you need to add parentheses around the arguments of the step's method.
Following are several examples showing when to use or not use parentheses.
The following example requires parentheses around method arguments, since it returns a value to a variable.
Set WebEditObj = Browser("Mercury Tours").Page("Method of Payment").WebTable("FirstName").ChildItem (8, 2, "WebEdit", 0)
WebEditObj.Set "Example"
在上面两句中如果不使用webEditObj,应该怎么写!
应该这么写么:Browser("Mercury Tours").Page("Method of Payment").WebTable("FirstName").ChildItem 8, 2, "WebEdit", 0.Set "Example"
The following example requires parentheses around method arguments, since Call is being used.
Call RunAction("BookFlight", oneIteration)
如果不用Call,是不是应该这样写:RunAction "BookFlight",oneIteration
The following example requires parentheses around method arguments, since the method is used in an If statement.
If Browser("index").Page("index").Link("All kind of").WaitProperty("attribute/readyState", "complete", 4) Then Browser("index").Page("index").Link("All kind of").Click
不用if的话,是不是这样写:Browser("index").Page("index").Link("All kind of").WaitProperty "attribute/readyState", "complete", 4
Browser("index").Page("index").Link "All kind of".Click
The following example requires parentheses around method arguments, since it returns the value of the checkpoint.
a = Browser("MyBrowser").Page("MyPage").Check (checkPoint("MyProperty"))
Browser("MyBrowser").Page("MyPage").Check checkPoint("MyProperty")
The following example does not require parentheses around the Click method arguments, since it does not return a value.
Browser("Mercury Tours").Page("Method of Payment").WebTable("FirstName").Click 3,4
如果要赋值给变量的话,是不是这样写:
a =Browser("Mercury Tours").Page("Method of Payment").WebTable("FirstName").Click(3,4)
假设Click有返回值
你提的问题有一定的挑战性,所以我乐意为你解答。呵呵! 刚才把例子之前的英文翻译出来了,供你参考:
使用VbScript 进行编程的时候,你写的语句必须要遵守使用或不使用括号的规定。
如果你调用一个有返回值的函数并且要使用此返回值时,你就必须要用括号把函数的参数括起来。在下列情况,你就必须要使用括号把函数的参数括起来:
1, 你把函数的返回值赋给一个变量的时候;
2, 在If 语句中你使用函数的时候;
3, 使用Call这个关键词来调用一个action的时候。
如果你希望得到检查点的返回值,那么你也需要用括号把检查点(checkpoint) 的名字括起来。
提示:如果你在测试中运行脚本时,看到一个“语句缺少结束符” (Expected end of statement)错误信息,那么这预示着你需要用括号把这步操作中的函数的参数括起来。
[ 本帖最后由 walker1020 于 2007-7-19 23:39 编辑 ] 楼主的那四个问题还需要我回答吗?其中,关于第四个问题,你的 的思路明显有问题,点击( Click ) 这个函数有返回值吗?你非要返回一个值,这合理吗?! 个人感想:都是 VbScript 惹的祸!sdlkfj5 因为VbScript的语法非常灵活,可以加括号,也可以不加括号,所以在此问题上就很容易犯迷糊了。如果你想得到函数的返回值,那么就必须使用括号,否则可以使用括号,也可以不使用括号。 我的经验是:自己写脚本时,不管有没有返回值,对函数的参数都使用括号。这样肯定不会发生“语句缺少结束符” (Expected end of statement)错误信息。 谢谢版主非常详细的解答!我非常喜欢你的最后一个回答!不管什么情况都使用括号,总不会错的!而且这样的话代码看起来很有条理!当然这是我的想法,毕竟自己是c/c++,java程序员啊,不用括号怎么看都不顺眼!
再次感谢版主百忙之中的解答! 关于第四个问题,当然click是没有返回值的,我只是假设他有返回值,我那个语句是不是有写错! 对了,我还是想知道我改写那四个例子语句,是不是写对了! 对了,楼主能否毫不吝啬地把 Object Model Reference 文档传上来?sdlkfj5
楼主如果能把 这个文档 传上来,那楼主太伟大了。sdlkfj3
[ 本帖最后由 walker1020 于 2006-9-8 16:14 编辑 ] 你根据你的理解和我的翻译,你 认为自己的改写 对不对呢? 我认为是对的!整个objiect model reference传上来,我觉得不用吧,因为安装了qtp,就会有的。在Help->quitcktest professional Help中就有的亚
To 楼主
你说的是 AutomationObjectModel.chm 这个文件吗?如果不是,能否把文件名说一下。如果单纯地从语法角度来看,你写的那些语句都是对的。
要相信自己!只要你认为自己写的、做的都是对的,就要相信自己,就要坚持自己的立场!作为测试人员,千万不要被开发人员左右,更不要被他们牵着 “鼻子” 走! 呵呵! 实在不好意思拖了好久才回复,实在是公司事情太忙,昨晚加班到一点,请版主见谅!那个文件不是ObjectModelReference.chm而是GeneralHelp.chm,里面有内容包括:qtp user guide,qtp new feature guide,ObjectModelReference,VBScript Reference,大小大概21KB。以下是上传得文件。 楼主辛苦呀,晚上都下班到一点。辛苦辛苦!谢谢楼主。 原帖由 lileo 于 2006-9-8 15:22 发表
谢谢版主非常详细的解答!我非常喜欢你的最后一个回答!不管什么情况都使用括号,总不会错的!而且这样的话代码看起来很有条理!当然这是我的想法,毕竟自己是c/c++,java程序员啊,不用括号怎么看都不顺眼!
再次 ...
如果做过开发(c/c++或java),那么你肯定知道函数的参数需要用括号括起来。这与函数有没有返回值没有关系。“不自由成习惯了,你就自由,而不会有任何的不自由。” 现在的 VBscript的函数的参数可以不需要用括号括起来,开始是一点也不习惯。如果让我选择,我宁愿要C 或 Java 语言对语法的严格要求。 呵呵,我总是等等它报错了才...这下知道了! 原帖由 walker1020 于 2006-9-11 16:59 发表 http://bbs.51testing.com/images/common/back.gif
如果做过开发(c/c++或java),那么你肯定知道函数的参数需要用括号括起来。这与函数有没有返回值没有关系。“不自由成习惯了,你就自由,而不会有任何的不自由。” 现在的 VBscript的函数的参数可以不需要 ...
sdlkfj5 赞同
要养成良好的编程习惯,最好都加括号
java的编程习惯,个人认为是最好的,从QB到C到C++到TCL最后到VB,JAVA的无论是命名约定,还是编程风格,都认为是极好的。
页:
[1]
2