参加
面试 ,是一次总结,也是一次挑战 , 是一次重新寻找自己 ! 去经历 , 去感受 , 去总结 , 面对真实的自己 ! 坦然接受结果 !
1.选择网页上所有的复选框 !
checkout=description.create()
checkout("html tag").value="Input"
checkout("type").value="checkout"
checkouts=browser(browser).page(page).childobjets(checkout)
checkoutsnum=checkouts.count
for i= 0 to checkoutsnums-1
checkouts(i).set"on "
next
这个题比较有意思 ,
学习了 childobject 不错 !
2.编写在QTP脚本,实现向记事本中输入“0123456789ABCDEFG”后,按ENTER? Function notes(s)
Set fso=createobject("scripting.filesystemobject")
set newnotes=fso.opentextfile("c:\test.txt",8,true )
noteswrite=newnotes.writeline()
notes=noteswrite
End Function
Call notes("0123456789ABCDEFG")
Set wsh=createobject(wscript.shell)
wsh.sendkeys"{enter}"
3.获取桌面上名字为“vivian”记事本对象
set notes=description.create()
notes("text").value="vivian"
set bjectnotes=desktop.childobjects(notes)
4.找到一个图片的文件类型 !
用object spy 找到图片的name ,通过属性取得文件名
filename=Browser("Browser").page("page").image("image").gettoproperty("filename")
temarray=split(filename,".")
type=ubound(temarray)
msgbox type
5.如何删除你要删除的文件夹 !
dim spdrive ,spfolder , sppath
spdrive="c:/"
spfolder="mytest"
sppath=spdrive&spfolder
set fso=createobject("scripting.filesystemobject")
fso.deletefolder(sppath)
fso.createfolder("d:/mytest")
6.如果关掉msgbox
set wsh=createobject(wscript.shell)
wsh.popup“停留5s,然后关闭”,“5”,“title”
title 是magbox的titile
7.你是怎么来做qtp流程是什么 !
1.进行功能测试在进行到B版本时候把qtp的对象加到对象库里面 , 2.确定进行自动化的模块的用例,和测试数据 (包括要参数化的, 检查点的 )
3.开发测试用的函数 和模块脚本 ,调试单独的脚本能够调通 !
4.调试整个脚本 !
5.分享报告 ,报bug !
6.进行了td和qtp的链接 ,用一个td和qtp的插件 ,找到相应的脚本就可以了 !
8.如何删除cookie值 ,
一种方法是调用webutil里面的方法来删除
set owebutil=createobject(“mecury.gui_webutil”)
owebutil.deletecookies
owebutil=nothing
我用得方法是webutil qtp隐藏的方法 ,这个方法可以到qtp的bin的目录下面 ,用exescope来获得 具体的名字是:(wwwspack.dll )
<安装目录>/bin/StdPackage.dll (标准对象包)
<安装目录>/bin/WWWPackage.dll (WEB对象包)
<安装目录>/bin/VbPackage.dll (VB对象包)
<安装目录>/bin/AcxPackage.dll (ActiveX对象包)
<安装目录>/bin/VoPackage.dll (虚拟对象包) 我们可以分别使用Exescope来打开以上以及DLL来查看其对象的隐藏方法,打开后在TYPELIB里可以查看,里边有许多QTP的隐藏方法
第二种方法是:按照vs2008 然后打开qtp debugview 然后把你要看的对象选中 ,然后右键 ,点击add to watch 然后 debug from this step ,然后你就可以在debugview下面看到你选中的属性和方法了 !
9,用qtp如何来打开一个word ,并且输入文字 ,然后关闭
set wsh=createobject("word.application")
wsh.visiable=true
set doc=wsh.document.add
set range=doc.paragraphs.add.range
range.text="hello i am gaomeng "
set range2=doc,pagragraphs,add.range
range,text="hello i am vivian "
label : vbA是应用的一个vb的一个子集 !
10录制鼠标右键的方法 !
1.用setting 的方法 replay 方法 ( 1.用浏览器模式 2.为用鼠标模式 )
2.click 鼠标的的点击方法有 (micleftbtn 0)表示左击 , micrightbtn 1 表示右点击 , micmiddlebtn 2 是中点击
setting.webpackage("replay")=2
Browser(browser).page.click ,, micrright
set wsh=createobject(wscript.sheell)
wsh.sendkeys"{down}"
wsh.sendkeys"{down}"
wsh.sendkeys"{enter}"
setting.webpackage("replay")=1
第二种方法是用fireevent 方法感觉很好用
setting.webpackage("replay")=2
browser("browser").page(“page”).link("google大全")fireevent("onclick"),,,micrightbtn
这个fireevent 这个方法还可以用到 onmouseover 用到悬浮菜单上面
关于悬浮菜单 还可以用 :
问题现象:
系统中有一些菜单是用浮动窗口做的,鼠标移动到某个菜单项上,然后下面会有浮动菜单弹出。本来可以用很简单的Fireevent "Onmouseover" 来解决。不过我遇到的菜单这样处理了没有反应,而另一个同事遇到同样的问题就可以很容易解决。
解决办法:
后来据我分析,同事那边估计那个菜单项是Link的,而我遇到的菜单项是WebElement的,据HP专家讲,QTP的这个FireEvent对WebElement支持的不好。于是专家提供了一个引用外部API的方法给我来解决问题。下面拿来分享一下,也许哪天你就会碰到这样的问题,不妨试试。
Extern.Declare micLong, "SetCursorPos", "user32.dll", "SetCursorPos", micLong, micLong Extern.SetCursorPos X,Y '鼠标移动到坐标(X,Y)
Extern.Declare micVoid, "mouse_event", "user32.dll", "mouse_event", micLong, micLong, micLong, micLong, micLong Extern.mouse_event 2,X,Y,0,0 '鼠标按下 Extern.mouse_event 4,X,Y,0,0 '鼠标抬起
这里有2个方法,分别是SetCursorPos和mouse_event。首先取得WebElement的绝对坐标,然后分别加一点(因为坐标是控件左上角,避免点不到,把坐标的横纵坐标都加5-10左右),然后使用SetCursorPos方法,鼠标就会正常移动到那个控件上,菜单也就正常弹出来了。mouse_event可能用到的比较少,其实就是Click点击事件,如果用这种方法写就很麻烦,必须把鼠标按下和鼠标抬起都用上才能作为点击的事件。后来在我做的脚本里,经常会用到鼠标移动的方法,点击的方法目前没用到,因为基本上Click都很正常,也许哪天出问题了就可以用这种了。
扩展一下,其实QTP里可以用这个Extern.Declare引用很多外部的API,只要你知道怎么用,像上面两个方法,我也是通过帮助看懂了一点点,具体这个Extern.Declare怎么用还是去看帮助吧。
这个extern 的方法来引用外部的dll 库文件中的方法 或者函数 !
Extern.DeclaremicHwnd, "FindWindow", "user32.dll", "FindWindowA",
micString, micString |
michwnd :是qtp的数据类型
“findwindow” : 是引用的方法
“user32.dll” 是引用的库 (最好写上你存储的路径)
“findwindownA” 在dll中程序的名字 , 如果没有就是方法的名字
“micstring”: 是方法的参数类型
“micstring”:是方法的参数类型
这个对于引用 程序中开发的动态库非常的有用 !
通过以上例子我们可以看到又有了一种新的控制对象的方法,其中控制对象有很多种
我这里就以百度搜索框输入为例,总结一下确定对象的一些方法
1.最普通的方法
- Browser("百度一下,你就知道").Page("百度一下,你就知道")
- .WebEdit("wd").Set "helloworld"
2.描述性编程
Browser("百度一下,你就知道").Page("百度一下,你就知道").webedit("name:=wd").Set "123"
3.对象自身接口- Browser("百度一下,你就知道").Page("百度一下,你就知道")
- .WebEdit("wd").Object.value="helloworld"
4.DOM技术Browser("百度一下,你就知道").Page("百度一下,你就知道").Object.getElementById("kw").value="helloworld"