【问题标题】:select value from website dropdown by vba通过 vba 从网站下拉列表中选择值
【发布时间】:2023-04-03 15:10:02
【问题描述】:

我正在尝试在网站删除中选择价值,我尝试了很多方法但没有任何效果 我被困在需要从下拉框中选择值的地方 我有四个下拉菜单,我想选择选项下拉菜单,然后转到下一个下拉菜单,我卡在第一个下拉菜单中

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>

【问题讨论】:

    标签: excel vba web-scraping browser-automation


    【解决方案1】:

    使用 css attribute=value 选择器并在变量中连接

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

    如果多个下拉菜单具有此值,并且您给定的 id 是正确的并且对于适当的下拉菜单,您可能希望添加父 id 以隔离适当的下拉菜单

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

    【讨论】:

    • 现在它在ie.document.querySelector("#ddlDistrict [value='" + dname + "']").Selected = True plz help 上显示对象所需的错误
    • 您之前是否有适当的页面加载等待?如果您按 F8 慢慢地通过代码,错误会消失吗?
    • 你用 F8 单步执行了吗?
    【解决方案2】:

    我已经在我的机器上执行了代码,它在调试模式下运行良好。 我建议在您获取下拉对象的行之前添加 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
    

    它应该可以正常工作,但也取决于服务器延迟和您的互联网速度。

    【讨论】:

    • 我现在使用建议它在行 For x = 0 To drp.Options.Length - 1 上显示所需的对象错误所以我该怎么做请帮助
    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多