выбрать значение из выпадающего сайта по VBA - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь выбрать значение в раскрывающемся веб-сайте, и я пытаюсь так много способов, но ничего не получается. Я застрял в одной точке, где мне нужно выбрать значение из раскрывающегося списка. У меня есть четыре раскрывающихся списка, и я хочу выбрать опциювыпадающий, затем переходите к следующему выпадающему, и картинка застревает при первом выпадении

Sub Select_dropdown_item()
Dim IE As InternetExplorer
Dim drp As Variant
dname = Range("A1").Value
Set IE = New InternetExplorer
IE.Visible = True
IE.navigate "https://anyror.gujarat.gov.in/"
    While IE.Busy = True Or IE.readyState <> 4: DoEvents: Wend
    IE.document.getElementById("Button1").Click

If IE.LocationURL = "https://anyror.gujarat.gov.in/CustomError.htm" Then
IE.Quit
MsgBox ("website can not comunicate with server")
Else
    ''if the script fails, activate the delay
'Application.Wait Now + TimeValue("00:00:05")

End If
Set drp = IE.document.getElementById("ddlDistrict")
For x = 0 To drp.Options.Length - 1
If drp.Options(x).Value = dname Then
drp.selectedIndex = x
Exit For
End If
Next
End Sub

это показывает ошибку 13 несоответствие типов в строке

Set drp = IE.document.getElementById("ddlDistrict")

так что помогите плз, это мой HTML-код для первоговыпадающий

    <option selected="selected" value="0">પસંદ કરો</option>
    <option value="01">કચ્છ</option>
    <option value="02">બનાસકાંઠા</option>
    <option value="03">પાટણ</option>
    <option value="04">મહેસાણા</option>
    <option value="05">સાબરકાંઠા</option>
    <option value="06">ગાંધીનગર</option>
    <option value="07">અમદાવાદ</option>
    <option value="08">સુરેન્દ્રનગર</option>
    <option value="09">રાજકોટ</option>
    <option value="10">જામનગર</option>
    <option value="11">પોરબંદર</option>
    <option value="12">જુનાગઢ</option>
    <option value="13">અમરેલી</option>
    <option value="14">ભાવનગર</option>
    <option value="15">આણંદ</option>
    <option value="16">ખેડા</option>
    <option value="17">પંચમહાલ</option>
    <option value="18">દાહોદ</option>
    <option value="19">વડોદરા</option>
    <option value="20">નર્મદા</option>
    <option value="21">ભરુચ</option>
    <option value="22">સુરત</option>
    <option value="23">ડાંગ</option>
    <option value="24">નવસારી</option>
    <option value="25">વલસાડ</option>
    <option value="26">તાપી</option>
    <option value="27">દેવભુમિ દ્વારકા</option>
    <option value="28">મોરબી</option>
    <option value="29">ગીર સોમનાથ</option>
    <option value="30">બોટાદ</option>
    <option value="31">અરવલ્લી</option>
    <option value="32">મહિસાગર</option>
    <option value="33">છોટાઉદેપુર</option>

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Используйте атрибут css = селектор значения и объедините его в переменной

ie.document.querySelector("[value='" + dname + "']").Selected = True

Если это значение имеется более чем в одном раскрывающемся списке и при условии, что заданный вами идентификатор верен и подходит для соответствующего раскрывающегося списка, вы можете захотетьдобавьте родительский идентификатор, чтобы выделить соответствующий раскрывающийся список

ie.document.querySelector("#ddlDistrict [value='" + dname + "']").Selected = True 
0 голосов
/ 19 октября 2019

Я выполнил код на моей машине, и он отлично работает в режиме отладки. Я бы предложил добавить ожидание в 5-10 секунд перед строкой, в которой вы получаете выпадающий объект.

**Application.Wait Now + TimeValue("00:00:05")**
Set drp = IE.document.getElementById("ddlDistrict")
For x = 0 To drp.Options.Length - 1
If drp.Options(x).Value = dname Then

Это должно работать нормально, но будет зависеть от задержки сервера и вашей скорости интернетаа также.

...