我正在尝试使用带有VBA绑定的Seleinum从网页的下拉列表中选择一个值,但是我做不到。
这是我尝试过的代码bot.FindElementById("holder-samples-date-type-inputEl").SendKeys "XX"
我没有收到任何错误代码,请运行该代码,请单击下拉按钮,显示列表,但未选择任何值,并且下拉列表保持不变。
我有一个与VBA和IE(DOM元素)相同的项目,并且此代码在Internet Explorer IE.document.getElementById("holder-samples-date-type-inputEl").Value = "XX"
中可以正常工作
此下拉列表的有趣部分是单击下拉列表图标后,我无法检查列表(例如右键单击列表),如果我单击网页中的其他位置或更改窗口,则下拉列表会关闭(就像它缩回一样)注意:这不是鼠标悬停的下拉列表。另外,当列表打开时,似乎还添加了其他代码(我粘贴了代码段)
下面是网页中的HTML。
<div id="holder-samples-date-type-triggerWrap" data-ref="triggerWrap" class="x-form-trigger-wrap x-form-trigger-wrap-default x-form-trigger-wrap-invalid">
<div id="holder-samples-date-type-inputWrap" data-ref="inputWrap" class="x-form-text-wrap x-form-text-wrap-default x-form-text-wrap-invalid"><input id="holder-samples-date-type-inputEl" data-ref="inputEl" type="text" role="combobox" aria-label="Chargebacks: Date Type" aria-readonly="false" aria-required="true" aria-haspopup="true" aria-expanded="false" aria-autocomplete="list" size="1" name="P_samples_Date_Type" readonly="readonly" class="x-form-field x-form-required-field x-form-text x-form-text-default x-form-invalid-field x-form-invalid-field-default" autocomplete="off" aria-labelledby="holder-samples-date-type-labelEl" aria-owns="boundlist-1206" componentid="holder-samples-date-type" data-errorqtip="<ul class="x-list-plain"><div>Date Type</div><li>This field is required</li></ul>" aria-invalid="true"></div>
<div id="holder-samples-date-type-trigger-picker"
aria-label="Trigger" class="x-form-trigger x-form-trigger-default x-form-arrow-trigger x-form-arrow-trigger-default "><img class="combo-trigger-placeholder" src="https://www.sample.net/clr/images/16x16_transparent.png" title="combobox trigger" alt="combobox trigger"></div>
</div>
由于我无法右键单击下拉选项。我在开发人员窗口中做了一个“查找”选项,下面是下拉菜单项的网页代码,它位于iframe中
<div id="boundlist-1206-listWrap" data-ref="listWrap" role="presentation" class="x-boundlist-list-ct x-unselectable" style="overflow: auto; height: auto;">
<ul id="boundlist-1206-listEl" data-ref="listEl" class="x-list-plain">
<div data-qtip="" class="x-boundlist-item x-boundlist-item-over" tabindex="-1" data-recordindex="0" data-recordid="31" data-boundview="boundlist-1206" id="ext-932" role="option" aria-selected="false">Received Date</div>
<div data-qtip="" class="x-boundlist-item" tabindex="-1" data-recordindex="1" data-recordid="32" data-boundview="boundlist-1206" id="ext-933" role="option" aria-selected="false">Status Date</div>
<div data-qtip="" class="x-boundlist-item" tabindex="-1" data-recordindex="2" data-recordid="33" data-boundview="boundlist-1206" id="ext-934" role="option" aria-selected="false">Due Date</div>
<div data-qtip="" class="x-boundlist-item" tabindex="-1" data-recordindex="3" data-recordid="34" data-boundview="boundlist-1206" id="ext-935" role="option" aria-selected="false">Disposition Date</div>
</ul>
</div>
答案 0 :(得分:1)
一些有用的观点:
1)如果在iframe内,则需要先切换到iframe
bot.SwitchToFrame(identifier)
标识符可以是通过iframe名称/ id等选择的元素。
2)您可以在使用SendKey之前尝试单击并按住输入文本框
bot.FindElementById("x").ClickAndHold
'sendkeys line here
3)您可以尝试使用javascript设置值
bot.ExecuteScript "document.getElementById('x').value = 'xx';"