司空公子 发表于 2004-9-2 13:07:11

如何让combox自动选取它的子项

我有一个Web页面,想让robot自动选择combox里的子项,如图1。
是否是用SQASetProperty,如何使用?

我用Object Property抓取combox的属性,只有innerText, name, tagName, type之类的。它的Baseline里写的是innerText=Please select a value; name=subClassId; tagName=SELECT; type=select-one。但是它在脚本里的语句是Result = ComboBoxVP (CompareProperties, "Type=ComboBox;Name=subClassId", "VP=Object Properties")
所以我用的语法是这样的Result=SQASetProperty ("\;Type=ComboBox;Name=subClassId","innerText","Part"),希望让combox自动选择Part这个子项。但是调试的结果Result的返回值是1003,也就是它找不到这个object。我的语句是否有问题。

司空公子 发表于 2004-9-2 13:07:53

当我抓取windows应用程序的combox时,如图2。
用Object Property可以抓出ItemDat, ItemSelected, List, Text, Type之类的。其中ItemSelected里的就是当前所选择的子项的值,比如ItemSelected=Broker;List里有所有子项的列表,而Type的值是DropDownList。而它在脚本里的语句是Result = ComboBoxVP (CompareProperties, "Label=Type:", "VP=Object Properties2")这个我又该如何抓取?
我用Result=SQASetProperty ("Type=DropDownList;Label=Type:","ItemSelected","Part")结果返回值是1003,找不到。

司空公子 发表于 2004-9-2 13:08:26

还有一个问题,如图3。我测的这个Web页面菜单是Link,鼠标移到字上,比如Create,它就会自动显示下拉菜单。这是否也算是combox?要想选取它的子项,该如何操作?

司空公子 发表于 2004-9-6 14:56:34

有人可以帮助我吗?

pcl2004_27 发表于 2004-9-11 16:49:36

第一个问题 如何让combox自动选取它的子项?
这里我自己写了一个html页面,就是简单模拟了一下功能!
<html>
<head>
<title>
Combobox
</title>
</head>
<body>
这是一个Combo的测试

        <p><select size="1" name="D1">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        </select></p>

</body>
</html>



Sub Main
    Dim Result As Integer
    Dim varStr as String
    'Initially Recorded: 2004-9-1116:53:40
    'Script Name: TestCom
    StartBrowser "C:\Documents and Settings\Administrator\桌面\html.html", "WindowTag=WEBBrowser"
   
    Window SetContext, "WindowTag=WEBBrowser", ""
    Browser NewPage,"HTMLTitle=Combobox",""
    'ComboBox Click, "Name=D1", ""
    'ComboListBox Click, "Name=D1", "Text=2"
    Result=SQAGetProperty("Type=ComboBox;Name=D1","innerText",varStr)
End Sub

以上脚本,返回值为innerText为1,2,3。这里要说明innerText返回值他是返回的是<p><select size="1" name="D1">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        </select></p>
这段代码中select中下边中显示出来的关键字1,2,3。如果属性是outerHtml将是下边的属性值:<SELECT size=1 name=D1> <OPTION selected>1</OPTION> <OPTION>2</OPTION> <OPTION>3</OPTION></SELECT>

所以这说明robot识别combobox没有识别出来你的下拉选项!你可以通过一段代码就可以看出来,代码如下:
ComboBox Click, "Name=D1", ""
ComboListBox Click, "Name=D1", "Text=2"

针对这个问题,我们可以两个解决方法
1.纪录键盘移动!上下操作,可以设置属性!
2.下边的代码,可以是我针对我的网页实现combobox的,主要是针对selectindex属性设置
'$Include "sqautil.sbh"
Sub Main
    Dim Result As Integer
    Dim varStr as String
    Dim List1Content() As String
    'Initially Recorded: 2004-9-1116:53:40
    'Script Name: TestCom
    StartBrowser "C:\Documents and Settings\Administrator\桌面\html.html", "WindowTag=WEBBrowser"
   
    Window SetContext, "WindowTag=WEBBrowser", ""
    Browser NewPage,"HTMLTitle=Combobox",""
   
   Result = SQASetProperty ("Type=ComboBox;Name=D1", "SelectedIndex", "2")

    if Result=sqaSuccessthen
       msgbox "ok"
    else
       msgbox result
    end if

End Sub

[ Last edited by pcl2004_27 on 2004-9-11 at 17:55 ]

pcl2004_27 发表于 2004-9-11 18:14:27

第二个问题
参数错误 ,type仍然是combobox,你用的属性其实是下拉列表显示后出现的那个里列表控件(这是由于combobox由两个控件组成,其中应该就是你的那个DropDownList),还有ItemSelected属性应该是索引值(好像,我没有vb的环境,所以没有试验)

注意:1003错误是找不到对象,这个要注意!

pcl2004_27 发表于 2004-9-11 18:15:52

第三个问题
这个是不对的,从实现上这个是个菜单。而不是combobox,这点要注意,如果要获取他的属性,我觉得应该没有什么必要,而且实现上好像也有困难!

tomzhang 发表于 2005-12-22 14:08:15

回去研究一下!

村上舞!舞!舞 发表于 2006-1-10 22:06:54

是该研究一下,我都是用
    ComboListBox Click, "Type=ComboListBox;HTMLId=sb_ddlWorkDepartment", "Index=" & i
这种语名来选取择下拉框中的某一项的。其中变量I是index值
页: [1]
查看完整版本: 如何让combox自动选取它的子项