51Testing软件测试论坛

标题: 为什么我取不到下拉框内的值呢? [打印本页]

作者: qingchunjun    时间: 2005-10-20 09:47
标题: 为什么我取不到下拉框内的值呢?
各位达人,我现在想取得一个下拉框内的所有值,代码如下:
Sub Main
    Dim Result As Integer
    dim varStr as string
    'Initially Recorded: 2005-10-20  9:21:29
    'Script Name: temp3
    StartBrowser "http://10.200.1.66", "WindowTag=web"
   
    Window SetContext, "WindowTag=web", ""
    Browser NewPage,"HTMLTitle=集成环境",""
    HTMLLink Click, "HTMLText=设立部门", ""
    Browser SetFrame,"Type=HTMLFrame;HTMLId=main",""
    Browser NewPage,"HTMLTitle=集成环境",""
    SQAGetProperty "Type=ComboBox;Name=select2","innerText",varStr
    msgbox varStr
   
End Sub
脚本回放时,msgbox中的内容是空的,没有取得任何值。但log里面显示是通过的,是怎么回事呢?

[ Last edited by ilovejolly on 2005-10-24 at 15:17 ]
作者: qingchunjun    时间: 2005-10-20 12:49
标题: 斑竹在吗?有没有谁可以帮帮我啊
我通过定位后
SQAGetProperty "HTMLTitle=集成环境;\;Type=HTMLFrame;HTMLId=main;HTMLTitle=集成环境;\;Type=ComboBox;Name=select2","innerText",varStr
msgbox Result
仍返回1003错误,为什么呢?
作者: ilovejolly    时间: 2005-10-20 13:46
杂志上有一篇介绍这个函数用法的文章
http://www.51testing.com/emagzine/No2_6.htm
作者: qingchunjun    时间: 2005-10-20 16:56
这个我也看过,也是按照上面写的定义了父框架,但robot还是找不到,我感到很奇怪
作者: ilovejolly    时间: 2005-10-20 17:06
你的函数格式,极可能是不正确的。这个格式包含两个方面,一个是属性,一个是定位控件的方法。你可以自己调试下,方法很多,思维可以灵活点。比如,首先不要说有框架的,找个没框架的web试,看能不能取到。这样来慢慢的定位问题。
希望对你有帮助。
作者: 19751456    时间: 2005-10-22 11:51
我想问问各位,有没有遇到过这种情况,使用了iframe的网站,最外层的页面title和frame内的页面的title是一样的,这样robot能不能定位到main区域(frame)内的某个控件呢?我试了没有定位成功,返回1003错误。各位碰到过这种情况吗 ?如果真的不能定位的话,应该如何解决这样的问题呢?
作者: ilovejolly    时间: 2005-10-22 14:02
你定位的时候,带的参数是htmlid,这个是不一样的
作者: qingchunjun    时间: 2005-10-24 11:06
标题: 还是没有取到下拉框内的值,望指点!
各位达人,我看了斑竹推荐的文章后,反复试验,始终未正确取到下拉框内的值。现我将代码和相关图片贴出来,希望各位给予指点!!

Sub Main
    Dim Result As Integer

    'Initially Recorded: 2005-10-24  9:55:07
    'Script Name: temp4
    StartBrowser "http://10.200.1.66/index.html", "WindowTag=web"
   
    Window SetContext, "WindowTag=web", ""
    Browser NewPage,"HTMLTitle=办公集成环境",""
    HTMLLink Click, "HTMLText=设立机关", ""
    Browser SetFrame,"Type=HTMLFrame;HTMLId=main",""
    Browser NewPage,"HTMLTitle=办公集成环境",""
    ComboBox Click, "Type=ComboBox;Name=select2", ""
    'ComboListBox Click, "Type=ComboListBox;Name=select2", "Text=正科级"
    result=sqagetproperty("HTMLTitle=办公集成环境;\;Type=HTMLFrame;HTMLId=main;HTMLTitle=
办公集成环境;\;Type=ComboBox;Name=select2","innerText",strText)
    msgbox strText       'msgbox内的内容为空白,没有返回任何错误代码
End Sub

由于不好贴图,相关图片附于附件内
作者: 司空公子    时间: 2005-10-24 12:56
你这个层次关系对不对啊,用抓验证点的方式在这个下拉框上抓一下,把代码贴出来看一下呢
作者: 司空公子    时间: 2005-10-24 13:48
参考一下这个代码

    Window SetTestContext, "Caption=Agile Advantage - Microsoft Internet Explorer", ""
'    Browser SetFrame,"Type=HTMLFrame;HTMLId=RightPane",""
'    Browser NewPage,"HTMLTitle=Select SubClass And Number",""
'    Result = ComboBoxVP (CompareProperties, "Type=ComboBox;Name=subClassId", "VP=Object Properties3")
    Window ResetTestContext, "", ""
   
    Result=SQAGetProperty("Caption=Agile Advantage - Microsoft Internet Explorer;\;Type=HTMLFrame;HTMLId=RightPane;\;Type=ComboBox;Name=subClassId","innerText", str1)
作者: qingchunjun    时间: 2005-10-24 15:12
标题: 问题解决了
现在该问题已经解决了。我参考了robot help中的ComboBoxVP函数附带的一个example后,照着上面的写法试了一下,果然成功了。那个example中关于验证点的语句是这样写的:Result = ComboBoxVP (CompareData, "Type=HTMLFrame;HTMLId=Main;\;Type=ComboBox; Name=Selectlist", "VP=SELECTVP1;Wait=2,30")
大家注意看,该句的"Type=HTMLFrame;HTMLId=Main;\;Type=ComboBox; Name=Selectlist"-------它同样是定位一个frame内的combobox控件,但其并没有写第一个“HTMLTitle=”的内容,所以我联想到我这样的情况是不是同样也可以这样进行定位。结果我修改我上午的代码如下:
Sub Main
    Dim Result As Integer
    dim strText as variant
    'Initially Recorded: 2005-10-24  9:55:07
    'Script Name: temp4
    StartBrowser "http://10.200.1.66/index.html", "WindowTag=web"
   
    Window SetContext, "WindowTag=web", ""
    Browser NewPage,"HTMLTitle=办公集成环境",""
    HTMLLink Click, "HTMLText=设立机关", ""
    Browser SetFrame,"Type=HTMLFrame;HTMLId=main",""
    Browser NewPage,"HTMLTitle=办公集成环境",""
    ComboBox Click, "Type=ComboBox;Name=select2", ""
    'ComboListBox Click, "Type=ComboListBox;Name=select2", "Text=正科级"
    result=sqagetproperty("Type=HTMLFrame;HTMLId=main;\;Type=ComboBox;Name=select2","innerText",strText)
    msgbox strText      
End Sub

运行,果然strText返回了期望的值。

现在这个result的写法跟司空斑竹写的result有所不同,也就是我原来的那种写法。原因现在还不太清楚,希望各位可以对照代码讨论讨论,相信会对有frame的页面的控件抓取会有所帮助,也希望碰到同样情况的同仁可以参考我的做法试一试,看能否成功。




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