51Testing软件测试论坛

标题: QTP9.2如何使用相对路径,请高手们指教 [打印本页]

作者: 52042722    时间: 2009-2-26 08:44
标题: QTP9.2如何使用相对路径,请高手们指教
如题:
QTP9.2如何使用相对路径,请高手们指教,我在其他的帖子看到了一些用法,但是都无法使用,请有用的人给个解决方法。
作者: powell505    时间: 2009-2-26 10:55
观望中……
作者: zhangx1818    时间: 2009-2-26 11:22
在tools->options-folders下面设置
作者: b47617    时间: 2009-2-26 11:43
在你的文件前加入“ ..\..\ ”,试试可用不
作者: dreamever    时间: 2009-2-26 12:06
以前我是用VBS来解决这个问题的,这种做法仅供参考。QTP是否提供了这样的功能我不太清楚,看看其他人的回答吧。
使用相对路径的话,其实是“父目录” + “相对目录”的形式。比如说对于一个目录“D:\07CI\CI自动化测试\src\TestLog”,相对目录是“\src\TestLog”,那么我们就在src那个目录下写一个vbs文件,代码大意如下:
Set Wshell = CreateObject("WScript.Shell")
path = Wshell.CurrentDirectory
MsgBox path
这样,在任何时候我们需要引用相对目录的时候,我们都可以写path&"\src\TestLog",不用每次去手动指定path变量,因为path变量的值是通过那个vbs文件的目录位置来决定的。
另外还一种方法,把你希望的相对目录写到系统的环境变量中,QTP提供了一种方法可以将环境变量作为参数来进行调用,但是怎么操作记不清了,搂主还是看一下相关的帮助文档吧。
作者: 52042722    时间: 2009-2-26 13:09
原帖由 dreamever 于 2009-2-26 12:06 发表
以前我是用VBS来解决这个问题的,这种做法仅供参考。QTP是否提供了这样的功能我不太清楚,看看其他人的回答吧。
使用相对路径的话,其实是“父目录” + “相对目录”的形式。比如说对于一个目录“D:\07CI\CI自动化测 ...




谢谢5楼的回答,我觉得第一种方法可以尝试,至于第二中方法我已经尝试过了,即使在所需要的路径写在环境变量里面,那么最后在导入这个环境变量的XML文件也是需要一个路径的,那么这路径还是绝对路径的,所以第二中方法不可行, 还是很感谢你的回答。


那么再说说第一种方法,大的意思是要写一个公共函数来获取当前资源文件的路径,然后以函数返回值的形式传给QTP,这个方法应该可以行 我需要实践一下 。。



至于4楼同学的方法 我已经尝试过了 QTP识别不了那个格式的路径,所以。。。

至于3楼同学的方法  如果每个用例都需要设置一个,那么自动化系统就不那么自动化了, 再者就算设置了对应的路径,那个路径也是绝对路径,在项目移植过程中还是会出现错误的


谢谢大家
作者: testlab    时间: 2009-2-27 16:22
如果通过vbs实现的话,在executefile的时候仍然是要一个vbs的路径。那再从脚本里得到path还有什么意义呢?
似乎只有把所有需要的文档都放在TestDir下才可以在项目移植时不修改脚本路径,不知道我说的对不对啊
作者: 52042722    时间: 2009-2-28 15:47
原帖由 testlab 于 2009-2-27 16:22 发表
如果通过vbs实现的话,在executefile的时候仍然是要一个vbs的路径。那再从脚本里得到path还有什么意义呢?
似乎只有把所有需要的文档都放在TestDir下才可以在项目移植时不修改脚本路径,不知道我说的对不对啊


哈哈 楼上聪明啊 所以只能在每个测试用例前面加上一个获取当前测试用例所在的路径的函数,然后让本地的资源文件和测试用例在一个目录下 那么就可以随时获取到当前资源文件所在的路径了,所以有了这个函数 不管数据移植到哪里 只要资源文件的和测试用的位置不变就OK了。
附上对应的函数:
'-------------------函数说明---------------
'产品版本: xxxx(3.0)
'测试员:     XXX
'进展程度:   完成
'基本思路: 为了让QTP的脚本增加可移植性,和更加的自动化。增加这个自动获取当前资源存放的路径的函数
'主要功能函数: 增加这个自动获取当前资源存放的路径的函数
'--------------------函数开始-------------
Public Function LocalPath()
  Dim Wshell,Path1,i,j,MyStr,z
  Set Wshell = CreateObject("WScript.Shell")
             path1 = Wshell.CurrentDirectory
                j = Len(Path1)
          For i = j To 1 Step -1
                   MyStr = Mid(Path1,i,1)
          If MyStr = "\" Then
             z = left(Path1,i)
             Exit For
          End if
         Next
      LocalPath = z
End Function
'--------------------函数结束------------
作者: yushudd    时间: 2009-7-2 11:07
不知道还有没有人关注这个帖子,QTP自己可以识别相对路径。
以“D:\07CI\CI自动化测试\src\TestLog.vbs”为例:
在tools->options-folders下设置“D:\07CI\CI自动化测试\src\”,在settings-resourse下只写“TestLog.vbs”就可以了,QTP完全可以找到。
也可以这样设置:
在tools->options-folders下设置“D:\07CI\CI自动化测试\”,在settings-resourse下只写“src\TestLog.vbs”

但是如果你像下面这样配置QTP就找不到了:
在tools->options-folders下设置“D:\07CI\CI自动化测试\src”,在settings-resourse下写“..\TestLog.vbs”。

[ 本帖最后由 yushudd 于 2009-7-2 11:29 编辑 ]
作者: zhou840401    时间: 2009-7-2 15:55
有一个文件的路径为 d:\test\test1\a.vbs
只要在folder中设置一个值,比如:d:\test\test1
然后在引用的时候,可以这样的引用  "..\test1\a.vbs"

10.0版本的qtp可以直接这样引用 了"a.vbs"
作者: xiaomi12333    时间: 2010-11-8 14:03
楼主,我是刚学qtp的  想请教一下可以吗?
我在用qtp做登陆脚本的时候,先配置一个环境变量,然后
Datastr=Environment(“testLogin”)&“\user.xls”
set Exlobj=CreateObject(“excel.application”)
Exlobj.visible=true
Exlobj.Dislayalerts=false
set book=Exlobj.workbook.open(Datastr)
set sheet=book.worksheet("sheet1")
for i=2 to sheet.usedrange.rows.count
username=Exlobj.worksheets("sheet1").cells(i.1)
userpwd=Exlobj.worksheets("sheet1").cells(i.2)
Browser(“。。。”).page("...").webEdit(".....").set username
Browser(“。。。”).page("...").webEdit(".....").set userpwd

next
exlobj.quit
set exlobj=nothing
我这个是通过环境变量中读取的绝对路径,脚本换个目录就开不开了!
请问我应该怎样用你的那段代码呢? 我对代码不是了解,还请各位大侠帮帮?
作者: xiaomi12333    时间: 2010-11-8 14:57
能不能给我指点,指点? 怎么没人说话啊????
作者: linhd030    时间: 2010-11-8 16:29
set book=Exlobj.workbook.open(Datastr)

这句应该是set book=Exlobj.workbooks.open(Datastr)
set sheet=book.sheets("sheet1")
作者: linhd030    时间: 2010-11-8 16:33
你脚本的单引号双引号和句号逗号括号等是否全为英文状态下输入?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2