Невозможно выбрать значение из раскрывающегося списка на веб-странице с использованием селена VBA - PullRequest
0 голосов
/ 06 февраля 2019

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

Это код, который я пробовал 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=&quot;x-list-plain&quot;><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>

Ниже приведеноизображение enter image description here

Поскольку я не могу щелкнуть правой кнопкой мыши по раскрывающемуся варианту.Я сделал параметр «Найти» в окне разработчика, и ниже приведен код веб-страницы для выпадающего элемента, который находится внутри 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>

1 Ответ

0 голосов
/ 06 февраля 2019

Некоторые моменты, которые могут помочь:

1) Если внутри iframe вам нужно будет сначала переключиться на iframe

bot.SwitchToFrame(identifier)

Идентификатором может быть элемент, выбранный по имени / идентификатору iframe.и т.д.

2) Вы можете попробовать нажать и удерживать текстовое поле ввода перед использованием SendKeys

bot.FindElementById("x").ClickAndHold
'sendkeys line here

3) Вы можете попробовать установить значение с помощью javascript

bot.ExecuteScript "document.getElementById('x').value = 'xx';"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...