2016-09-27 90 views
1

私は現在、ウェブサイトを開き、ドロップダウンリストの値を選択して検索するスクリプトを作成しています。値の選択に問題がありますドロップダウンリストで、以下の私のVBSコード:DropDownListコントロールのVBSを使用してウェブページのドロップダウンリストの値を選択

Dim IE 
Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = 1 
IE.navigate "https://website.com/form.aspx" 
Do 
    WScript.Sleep 10 
Loop While IE.ReadyState <4 And IE.Busy 
'Button to access form 
Set SLTOI = IE.document.getElementByID("ctl00_m_g_4e7438b0_6aba_44b0_a0a1_f49486f81665_FormControl0_V1_I1_S1_I1_B1") 
SLTOI.click 
'Dropdownlist element 
Set SPCI = IE.document.getElementByID("ctl00_m_g_4e7438b0_6aba_44b0_a0a1_f49486f81665_FormControl0_V1_I1_S2_I2_D7") 
For Each opt In SPCI.options 
    MsgBox opt.value 
    If opt.value = "ION CISCO" Then 
     opt.Selected = True 
    Else 
     opt.Selected = False 
    End If 
Next 

ソースは、(IEの要素を検査するために開発者がオプションを使用して)以下れる

<SELECT tabIndex=0 title="" class="v_utCmzxtdUQZu9e3j_0 n_utCmzxtdUQZu9e3j_0 bb_utCmzxtdUQZu9e3j_0 d3_utCmzxtdUQZu9e3j_0" id=ctl00_m_g_4e7438b0_6aba_44b0_a0a1_f49486f81665_FormControl0_V1_I1_S2_I2_D7 style="DIRECTION: ltr" onfocus="return (DropDownList.OnFocus(this, event));" onblur="return (DropDownList.OnBlur(this, event));" onchange="return (DropDownList.OnChange(this, event));" OriginalId="V1_I1_S2_I2_D7" FormId="ctl00_m_g_4e7438b0_6aba_44b0_a0a1_f49486f81665_FormControl0" ViewDataNode="12" direction="ltr" wrapped="true" ScriptClass="DropDownList"><OPTION value=""></OPTION><OPTION value="ION CISCO" selected>ION CISCO</OPTION></SELECT> 

コードが正しく実行されますが、値ドロップダウンリストフィールドで選択されていません(Forの中にMsgboxを追加して、コードは実行されますが、Forはまったく入力されません)、リストから値を手動で選択して別の値を選択しようとすると、リストでは選択されていないクリアボタンをクリックしない限り、スクリプトを実行してリストを作成しているようです。

私のコードをどのように動作させることができるかについてのアイデアは、「FireEvent( "onchange")」を選択した後に使用しようとしましたが、動作しませんでした。

ご協力いただければ幸いです!

答えて

0

これはどうですか?

Dim IE As Object 
Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = 1 
IE.navigate "https://website.com/form.aspx" 
Do 
    WScript.Sleep 10 
Loop While IE.ReadyState <4 And IE.Busy 
'Button to access form 
Set SLTOI = IE.document.getElementByID("ctl00_m_g_4e7438b0_6aba_44b0_a0a1_f49486f81665_FormControl0_V1_I1_S1_I1_B1") 
SLTOI.click 
'Dropdownlist element 
Set SPCI = IE.document.getElementByID("ctl00_m_g_4e7438b0_6aba_44b0_a0a1_f49486f81665_FormControl0_V1_I1_S2_I2_D7") 

Dim SelectThis as String 
SelectThis = "ION CISCO" 
SPCI.Value = SelectThis 
+0

は、私は彼らがタイプバリアントあるとして特に何かなどの変数を暗くする必要は、決してありませんVBSを知っているから、お返事ありがとうございObjectとしてではなく、バリアントまた、あなたはIEを宣言する必要があります選択された値を変数に設定しようとした回数が少なくなってから、選択を試みましたが、良い結果は得られませんでした:(。 – pahb90

+0

あなたは正しいです。通常は変数を宣言する必要はありませんが、それは悪いものを壊すよりも良い習慣を始める方が簡単です。 –

関連する問題