问自己今天是否比明天进步了 !

qtp面试准备题!

上一篇 / 下一篇  2011-11-15 21:50:05 / 个人分类:QTP学习

参加面试 ,是一次总结,也是一次挑战 , 是一次重新寻找自己 ! 去经历 , 去感受 , 去总结 , 面对真实的自己 ! 坦然接受结果 ! 

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


EndFunction

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  "
这个具体的word.application 的方法很多 可以到micrsoft的msdn里面查找   具体网址 : http://msdn.microsoft.com/enus/library/ff821215.aspx    

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.最普通的方法

  1. Browser("百度一下,你就知道").Page("百度一下,你就知道")
  2. .WebEdit("wd").Set "helloworld"  


2.描述性编程

Browser("百度一下,你就知道").Page("百度一下,你就知道").webedit("name:=wd").Set "123"  

 

3.对象自身接口
  1. Browser("百度一下,你就知道").Page("百度一下,你就知道")
  2. .WebEdit("wd").Object.value="helloworld"  
4.DOM技术
Browser("百度一下,你就知道").Page("百度一下,你就知道").Object.getElementById("kw").value="helloworld" 



TAG:

轮回师的个人空间 引用 删除 mqq508   /   2013-08-31 07:28:42
写的不错,看来是高手
轮回师的个人空间 引用 删除 mqq508   /   2013-08-31 07:28:24
5
 

评分:0

我来说两句

Open Toolbar