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

Webページ(Javaで作成)をhtmlファイルとして保存し、そのソースコードを表示しました。そこから、上記のコンボボックスのコードをコピーして貼り付けました。Javaの知識があまりないので参考になるかわかりません。

-- ディーパック。

4

2 に答える 2

0

さて、気になったことを投稿します。

エラーの説明 ( Object does not support this property or method ) を見ると、名前による呼び出しのように思えます...

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 が文字列であるにもかかわらずコンボボックスが更新されない理由を尋ねました。多くの議論の後、彼はコンボボックス用に更新する 2 つのフィールドを与えてくれました。ラベル フィールドはコンボボックスで必要な文字列で更新され、もう 1 つのフィールドは選択した文字列に対応する値で更新されます。これは私が使用したものです:

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 はそれに対応する値です。Web ページに含まれている JavaScript から値 8001 を取得しました。これは機能します。:) 助けてくれてありがとう、Panayot。

于 2013-04-08T13:25:28.737 に答える