51Testing软件测试论坛

标题: qtp中怎样随机获取下列列表框WebElement中的值 [打印本页]

作者: pingguo109    时间: 2011-3-2 13:27
标题: qtp中怎样随机获取下列列表框WebElement中的值
最近测试的一个软件,下拉菜单录不出来,spy识别为webedit,下拉菜单中各个元素,识别为webelement,qtp中怎样随机获取下列列表框中的值
作者: shingo0109    时间: 2011-3-2 14:18
本帖最后由 shingo0109 于 2011-3-2 14:19 编辑

貌似看到过这类问题,是不是需要click这个webedit, 下拉菜单才会显示出来?

LZ要么把该控件发个图上来看看吧
作者: 今天有雾    时间: 2011-3-2 15:32
不是weblist 控件?
作者: pingguo109    时间: 2011-3-3 09:12
不是weblist控件,开发的时候采用的是Ext的CommboBox控件
[attach]71717[/attach]
QTP识别时,将红色框识别为WebEdit,蓝色框识别为image,绿色框识别为WebElement
作者: pingguo109    时间: 2011-3-3 09:17
怎么办,因为系统设计的界面含有三个下拉菜单,分为“用途”“科”“属”,第一个下拉菜单选择项不同,后面的一个下拉菜单内容也不同,三个是由关联的,因此如果将下拉菜单中的每一个项都单独识别一个WebElement,显然工作量是相当庞大的,而且可维护性很低
请求高手提点
作者: shingo0109    时间: 2011-3-3 09:22
没看到LZ发的图片
作者: 819longjiayan    时间: 2011-3-3 09:39
没看到LZ发的图片
作者: pingguo109    时间: 2011-3-3 09:51
[attach]71722[/attach]
作者: shingo0109    时间: 2011-3-3 10:48
回复 8# pingguo109


具体选择的操作是不是先点击蓝框,之后绿框下拉列会显示出来, 然后再在下拉列表里进行选择?
还是在webedit里click一下, 下拉列表就会显示出来?
作者: pingguo109    时间: 2011-3-3 11:01
要先点击篮框,绿框下拉列才会显示出来,然后点击下拉列中的一项进行选择,webEdit中可以进行输入的,Click,下拉列不会显示出来
作者: shingo0109    时间: 2011-3-3 13:44
本帖最后由 shingo0109 于 2011-3-3 13:46 编辑

回复 10# pingguo109


要不用模拟键盘输入随机选择, LZ试试看, 我简单写了个代码作个参考:
Browser("CreationTime:=0").Page(":=").Image("xxxxx").Click
Set wsh = CreateObject("wscript.shell")
scount = RandomNumber(1, 10)
For i = 0 To scount
    wsh.sendKeys "{DOWN}"
Next
wsh.SendKeys "{ENTER}"
作者: pingguo109    时间: 2011-3-3 14:08
非常感谢,我试试看
作者: pingguo109    时间: 2011-3-3 14:22
我还想问一下因为系统设计的界面含有三个下拉菜单,分为“用途”“科”“属”,第一个下拉菜单选择项不同,后面的一个下拉菜单内容也不同,三个是由关联的,因此如果将下拉菜单中的每一个项都单独识别一个WebElement,
RandomNumber(1, x)
x不是固定的,怎么弄?
作者: shingo0109    时间: 2011-3-3 14:50
本帖最后由 shingo0109 于 2011-3-3 15:03 编辑

回复 13# pingguo109

不知前面的回答是否成功了呢?

用键盘模拟输入已经和下拉框里的内容无关了, 我想问下如果在最后一个选项继续按Down键, 光标会回到第一个选项么, 如果是的话, 其实就没关系了, 反正会循环的向下移动
作者: pingguo109    时间: 2011-3-3 15:05
是和下拉框里的内容无关,但是和下拉框里所含项的数量有关,在最后一个选项继续按Down键, 光标不会回

到第一个选项,而是在最后一个位置不动,那如果我设置一个比较大的数,而下拉菜单没有那么多项,是不是

也不会报错,但是超出的会选择最后一项?
作者: shingo0109    时间: 2011-3-3 15:18
本帖最后由 shingo0109 于 2011-3-3 15:20 编辑

回复 15# pingguo109


LZ根据3个不同的下拉框找出一些不同的属性, 然后用childobjects来确定数量看看,然后再把该count传给RandomNumber函数, 我也简单写个代码作参考吧:
Set odesc = Description.Create
odesc("micclass").value="WebElement"
odesc("xxxxx").value="xxxxx"     这里LZ根据实际属性来修改吧

Set a=Browser("CreationTime:=0").Page(":=").ChildObjects(odesc)
msgbox a.count

LZ试试吧
作者: pingguo109    时间: 2011-3-3 15:20
好的,谢谢,我试试看
作者: pingguo109    时间: 2011-3-3 15:32
[attach]71735[/attach][attach]71736[/attach][attach]71737[/attach]
作者: pingguo109    时间: 2011-3-3 15:33
属性大部分都一致,使用X坐标可以吗?
作者: shingo0109    时间: 2011-3-3 15:49
回复 19# pingguo109


这个我也不确定, 要不LZ试试看吧,多加个属性来标识好了:
odesc("micclass").value="WebElement"
odesc("html id").value="ext-gen527"    '这里如果识别不了的话,在"-"前面加个"\"来转义下
odesc("abs_x").value="554"

然后输出下它的count看看对不对, 其他2个下拉框也类似
作者: pingguo109    时间: 2011-3-3 15:59
我这样写的
Set odesc=Description.Create
odesc("micclass").value="WebElement"
odesc("html id").value="ext-gen527"
odesc("abs_x").value="329"
Set a=Browser("系统登录").Page(":=").WebElement("资源植物编目查询").ChildObjects(odesc)
msgbox a.count

弹出窗口是0

Set a=Browser("系统登录").Page(":=").ChildObjects(odesc)
改成这样还是0
作者: shingo0109    时间: 2011-3-3 16:16
本帖最后由 shingo0109 于 2011-3-3 16:19 编辑

回复 21# pingguo109


先把childobjects那句改为: Set a=Browser("系统登录").Page(":=").ChildObjects(odesc)

如果还是0的话, 再把odesc("html id").value="ext-gen527" 这里的"-"前面加个转义"\"试试
作者: pingguo109    时间: 2011-3-3 16:52
按你说的改了后还是0
作者: shingo0109    时间: 2011-3-3 17:11
回复 23# pingguo109


那可能用坐标不行吧。

要不LZ就根据webedit控件加if else语句来判断好了, 如果是“用途”控件,就设成一个常量a, 如果是“科”控件, 就设成一个常量b
作者: pingguo109    时间: 2011-3-3 17:13
好的,真是太感谢了
作者: shingo0109    时间: 2011-3-3 17:15
回复 25# pingguo109


不客气, 如果能解决问题就好, 大家一起学习了~~
作者: june.diny    时间: 2011-3-3 17:28
有碰到过类似的问题,但是是JAVA的,而且点击下拉框后,出现的可以识别为javalist,这点和LZ的webelement不一样。
说下我的做法吧:先点击红色区域(控件是嵌在Table里面)---让这个栏位获得焦点,之后点击蓝色区域---出现下拉列表框,再选择对应选项。
作者: baggiojeremy    时间: 2011-3-6 11:26
楼主现在做的项目跟我的很像,都是ext Js动态生成的页面,希望shingo0109的回答能帮你解决,如果还没有,可以站短我
Ps:我不建议你用id之类的属性,因为这个也是很不稳定的
作者: wxy5g    时间: 2011-3-7 10:50
我有一个笨办法,楼主在录制下拉菜单的时候可以换成基于坐标的录制或基于鼠标的录制方法,页面完全打开的情况下下拉菜单的位置应该是比较固定的。
作者: pingguo109    时间: 2011-3-7 13:08
我目前是使用shingo0109提到的鼠标模式控制下拉菜单的, 运行时,页面全屏显示,可以达到目的,非全屏下,下拉菜单不会选中
对于第二个问题:获取下拉菜单项的个数,还是没有解决,我目前是设置了一个定值,可以实现0-定值,之间的随机选择
作者: kavensyw    时间: 2011-3-7 18:04
如果实在直接往WebEdit里边写值好了,加判断语句之类的,加上select case等等,
数据多就从数据库里取值吧。
作者: marsliu    时间: 2013-11-10 17:03
我也遇到楼主的问题了
大家有更好的建议吗?




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