51Testing软件测试论坛

标题: QTP下拉框的选项是变化的,如何才能让QTP选中选项 [打印本页]

作者: quanxinli    时间: 2011-1-14 09:49
标题: QTP下拉框的选项是变化的,如何才能让QTP选中选项
[img][attach]67889[/attach][img]。
图中下拉框中的选择是根据我输入的内容匹配出来的。图中下拉框中的选择是根据我输入的内容匹配出来的。

如果是手动输入351672,下拉框中会显示出“李泉鑫”的选项

在QTP中我使用SET方法给它赋值“351672”后,但是下拉框的内容无法显示出来,也就无法选择选项了

我还将下拉框中的“李泉鑫”对象加入到对象库中,然后再加一个选择“李泉鑫”的步骤,还是解决不了问题
!!!
大侠们像这种问题要怎么解决啊
作者: wugecat    时间: 2011-1-14 10:03
用一个比较笨的方法。。先点击定位到输入框;然后再用模拟键盘的方法输入;然后在点击显示出来的列表。。这样应该可以解决下拉框弹不出的情况。
作者: gztester    时间: 2011-1-14 10:07
不从下拉框选择,直接把完整值设置给对象行吗?
作者: shingo0109    时间: 2011-1-14 10:16
LZ, 这个控件用spy看到的是啥属性啊
作者: quanxinli    时间: 2011-1-14 10:27
回复 2# wugecat


   我之前也有想过这种方法,但是不知道怎么把光标定位在输入框中!有用过object.SetCaretPos,但系统会报错
作者: quanxinli    时间: 2011-1-14 10:28
回复 3# gztester


    不行哦。 这个控件一定得把下拉中的内容选中一下才能被系统识别
作者: quanxinli    时间: 2011-1-14 10:33
回复 4# shingo0109


    有两种属性一种是WebElement,另外一种是WebEdit见图中[attach]67890[/attach]
作者: wugecat    时间: 2011-1-14 10:43
回复  wugecat


   我之前也有想过这种方法,但是不知道怎么把光标定位在输入框中!有用过object.SetC ...
quanxinli 发表于 2011-1-14 10:27


Browser("XXX").Page("XXX").WebEdit("WebEdit").FireEvent "onfocus"
作者: shingo0109    时间: 2011-1-14 10:51
用obj.WebEdit("xxxxxx").FireEvent("onfocus")
之后再用模拟键盘的方法去选下拉框, 不知行不行
作者: shingo0109    时间: 2011-1-14 10:57
找了个类似的控件试了下可以选择到, LZ试试吧
Set obj =Browser("xxxxxx").Page("xxxxxx")
obj.WebEdit("xxxxxx").Set "Write"
obj.WebEdit("xxxxxx").FireEvent("onfocus")
Set wshShell=CreateObject("WScript.Shell")
wshShell.SendKeys  "{DOWN}"
wshShell.SendKeys  "{DOWN}"
wshShell.SendKeys  "{ENTER}"
作者: quanxinli    时间: 2011-1-14 12:55
回复 10# shingo0109


    我用你的方法试了一下。发现鼠标事件QTP没有写到程序中。也是说351没有写到程序中,是不是使用WScript.shell要先设置什么呢
Browser("BOSS").Page("BOSS").WebEdit("WebEdit").FireEvent "onfocus"

Dim wshShell
Set wshShell=CreateObject("WScript.Shell")
wshShell.SendKeys "3"
wshShell.SendKeys "5"
wshShell.SendKeys "1"
wshShell.SendKeys  "{DOWN}"
wshShell.SendKeys  "{DOWN}"
wshShell.SendKeys  "{DOWN}"
wshShell.SendKeys  "{ENTER}"
作者: quanxinli    时间: 2011-1-14 12:57
回复 8# wugecat


    这种方法是可以定位了,但是键盘事情,QTP还是没有执行哦。
作者: shingo0109    时间: 2011-1-14 13:13
回复 11# quanxinli


    应该不用设置啥吧
要不你可以先对WebEdit进行Set “351”, 然后再focus
Browser("BOSS").Page("BOSS").WebEdit("WebEdit").Set "351"
之后看你的下拉框选项是通过按Down键还是Enter键来显示出来的, 你就再用sendkey来模拟按键, 我举的那个控件就是输入值之后, 按Down键可以显示出下拉选项的, LZ再试试
作者: quanxinli    时间: 2011-1-14 14:02
回复 13# shingo0109


    还是执行这行wshShell.SendKeys  "{DOWN}"时,QTP没有执行DOWN。查网上资料也看不到怎么解决,我的系统B/S系统的,用PHP语言开发的。搞不懂为什么会这样?
Browser("BOSS").Page("BOSS").WebEdit("WebEdit").FireEvent "onfocus"
Browser(" BOSS").Page("BOSS").WebEdit("WebEdit").set "351"

Browser(" BOSS").Page("BOSS").Image("s").Click
Dim wshShell
Set wshShell=CreateObject("WScript.Shell")
'wshShell.SendKeys "3"
'wshShell.SendKeys "5"
'wshShell.SendKeys "1"
wshShell.SendKeys  "{DOWN}"
wshShell.SendKeys  "{DOWN}"
wshShell.SendKeys  "{DOWN}"
wshShell.SendKeys  "{ENTER}"
作者: shingo0109    时间: 2011-1-14 15:13
回复 14# quanxinli


    我的意思是先Set "351"之后再FireEvent "onfocus", 然后再sendkeys {"Down"}, 不行的话期待别人的答案了
作者: wugecat    时间: 2011-1-14 15:28
回复  wugecat


    这种方法是可以定位了,但是键盘事情,QTP还是没有执行哦。
quanxinli 发表于 2011-1-14 12:57



    因为执行的太快了,在FireEvent "onfocus"后面加等待时间 wait 5 然后在进行键盘操作就可以了
作者: quanxinli    时间: 2011-1-21 18:50
回复 16# wugecat


    还是不能解决哦
作者: jifeng    时间: 2011-1-26 19:57
本帖最后由 jifeng 于 2011-1-26 20:01 编辑

将对象放到对象库肯定是不行的。
网上找一下处理ajax的对象识别方法,你这个处理方式应该类似。

思路,激活下拉列表后(估计不是标准的list)再创建这个下拉列表的对象并返回,再对这个对象进行click处理就没问题了。

你的下拉列表由于是模糊匹配出来的,每次出来的和你对象库中的肯定是不一样的。
‘下拉列表的描述信息
Set MyPSTN = Description.Create()
MyPSTN("micclass").Value = "WebElement"
MyPSTN("id").Value = "text85Span"
MyPSTN("class").Value = "star"
MyPSTN("html tag").Value = "span"

set MyPSTNObj=Browser("登录").Page("管理界面").ChildObjects(MyPSTN)’返回下拉列表对象


MyPSTNObj(1).click   '点击选择下拉列表的某一项
作者: quanxinli    时间: 2011-1-30 22:34
回复 18# jifeng

谢谢哦!!!我最后叫开发人员改一下控件的方法,现在问题已经解决了。
作者: duoaij12    时间: 2015-4-16 15:54
怎么解决的,能否告知下呀




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