0

谁能告诉我如何使用 vbscript 在 IE 窗口中设置可编辑组合框的值?

我已将要使用的 IE 窗口设置为对象。

如果它是一个文本框,我用过

ie.document.all("textboxname").value = "textboxvalue"

对于单选按钮,我使用过

ie.document.all("radiobuttonname")(2).click            --- where '2' is index of array (3rd value in array is selected)

对于不可编辑的组合框,我使用过

ie.document.all("comboboxname").selectedindex = 2    --- where '2' is index of array

以上所有代码都可以正常工作,但我无法为该 IE 窗口中的可编辑组合框设置值。

对于可编辑的组合框,我试过了

ie.document.all("editablecomboboxname").selectedindex = 2

或者

ie.document.all("editablecomboboxname").selectedindex.text = "text of any options in the combobox"

或者

ie.document.all("editablecomboboxname").selectedindex(2).click

或者

ie.document.all("editablecomboboxname").options.selected = 2

但是一切都会导致这个错误——“对象不支持这个属性或方法:”

谁能帮我这个?提前致谢

请注意,我只使用了 VBscript,没有使用 Visual Studio 或 QTP 等其他工具。

根据 Panayot Karabakalov 的要求,我在下面添加了一个这样的可编辑组合框的代码示例:

<td class="small">        
<span id="Curr Car Name" style = "display:none;"  class = "small">          
Curr Car Name 
<font  class="asteriskRed" style="font-size:11px" style="display:none;">*</font><br>
<input type="hidden" name='curr_car_name' id='curr_car_name' value='' style='width:180px;height=20px;' >

<script>
getTypeAhead(true,true,'curr_car_name',180,20,'null','AutoCompleteHighlight',  'AutoCompleteBackground','divclass','null',5,20,'curr_car_name_datasrc','','null',0,'setHHChangeIndicator();priorValidations();deleteRowFromAccordion(this);',310,100,'null','');
searchandFill('curr_car_name','',curr_car_name_datasrc);</script>
</span>
<input type="hidden" name="currentcarriernameHdd" id="currentcarriernameHdd" value="null"/>
</td

我将网页(用 Java 创建)保存为 html 文件并查看了它的源代码。从那里,我复制并粘贴了上面组合框的代码。我不确定它是否会有所帮助,因为我对 Java 了解不多。

——迪帕克。

4

2 回答 2

0

好吧,我会发布我的想法。

查看错误描述(Object 不支持此属性或方法),在我看来,您的名字调用...

ie.document.all("editablecomboboxname")

...返回不同的对象,即不是您期望的元素。而且由于您无法访问纯 HTML 源代码,这会使调试变得复杂。

我怀疑命名冲突。您可以做的是查看按名称返回的内容。

MsgBox TypeName(ie.document.all("editablecomboboxname").Type)

但是如果有一些命名冲突,我不知道你如何在没有实际对应的 HTML 代码块的情况下调试它。

于 2013-04-03T13:21:44.560 回答
0

@Panayot - 得到了我的问题的答案!!

正如你所说,我尝试过

MsgBox TypeName(ie.document.all("editablecomboboxname").Type)

它返回“字符串”。所以我去找我的一个 Java 同事,问他为什么即使 inputtype 是字符串,组合框也没有更新。经过大量讨论后,他给了我两个字段来更新组合框 - 一个标签字段将使用我想要在组合框中的字符串进行更新,另一个字段将使用与我选择的字符串对应的值进行更新。这就是我使用的:

ie.document.all("curr_car_name").value = 8001

ie.document.all("_lblcurr_car_name").value = "NO PRIOR CARRIER"

“curr_car_name”是可编辑组合框的名称,“_lblcurr_car_name”是可编辑组合框的标签。“NO PRIOR CARRIER”是我希望组合框拥有的文本,8001 是它的对应值。我从网页包含的 javascript 中获得了值 8001。这行得通。:) 感谢 Panayot 的所有帮助。

于 2013-04-08T13:25:28.737 回答