我正在尝试使用VBA excel自动化此网站。我陷入了一个需要从下拉框中选择值的位置。我对此非常陌生,因为这是我的第一个这样的项目。 这是我编码选择值的原因:
Set objSelect = objIE.document.getElementById("personTitle")
For Each opt In objSelect.Options
If opt.Value = "Miss" Then
'Debug.Print "found!"
opt.Selected = True
'opt.Selected = "selected"
Else
'Debug.Print "not found!"
opt.Selected = False
End If
Next
我也尝试使用debug.print来检查我试图找到的值是否实际上是否匹配 - 事实证明它匹配。 我面临的唯一问题是价值没有设定。 这里的任何一位大师都可以帮忙吗?
以下是该部分的HTML:
<div class="input-wrap input-wrap__inline">
<div tabindex="-1" class="select is-placeholder"><div class="select_display">Title</div><div class="select_arrow glyphicon glyphicon-chevron-down"></div><dl class="select_list"><dt class="pretend-dd is-hover" data-index="1" data-val="Mr">Mr</dt><dt class="pretend-dd" data-index="2" data-val="Mrs">Mrs</dt><dt class="pretend-dd" data-index="3" data-val="Miss">Miss</dt><dt class="pretend-dd" data-index="4" data-val="Ms">Ms</dt><dt class="pretend-dd" data-index="5" data-val="Dr">Dr</dt></dl></div><select name="personTitle" class="parsley-validated hasCustomSelect .no-change, .bv-dropdown-select is-invisible" id="personTitle" required="" data-required-message="Please select a title">
<option selected="selected" value="">Title</option>
<option value="Mr">Mr</option>
<option value="Mrs">Mrs</option>
<option value="Miss">Miss</option>
<option value="Ms">Ms</option>
<option value="Dr">Dr</option>
</select>
</div>
&#13;
答案 0 :(得分:1)
我想你想要一个不同的课程。该HTML代码段中的类为select_list
。然后是后续的dt
代码。
如果您观察到以下CSS选择器,其中"."表示类," dt"表示选择该类元素内的所有dt
标记,您将看到它做出正确的选择:< / p>
在下面的代码中,我将此选择器翻译为:
ieDoc.getElementsByClassName("select_list")(0).getElementsByTagName("dt")
这假设索引0是用于类"select_list"
的元素的正确索引。如果将集合设置为变量,则可以轻松检查集合以找到正确的索引,例如
Dim x As Object
Set x = ieDoc.getElementsByClassName("select_list")(0).getElementsByTagName("dt")
<强>代码:强>
Dim currentOption As Object
For Each currentOption In ieDoc.getElementsByClassName("select_list")(0).getElementsByTagName("dt")
If InStr(currentOption.innerText, "Miss") > 0 Then
currentOption.Selected = True
End If
Next currentOption
答案 1 :(得分:0)
如果您还没有尝试,可以尝试以下几个选项:
If opt.Value = "Miss" Then
'Debug.Print "found!"
opt.Click
OR
If opt.Value = "Miss" Then
'Debug.Print "found!"
opt.Focus
opt.FireEvent ("onchange")
如果这是在kendoGrid或kendoDropDownList中完成的事情,我也许可以帮助它。