Microsoft Excel IE Automation - Выбор элемента из выпадающего списка - PullRequest
0 голосов
/ 14 апреля 2020

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

<div id="ReportViewerControl_ctl04_ctl07_divDropDown" onclick="event.cancelBubble=true;" onactivate="event.cancelBubble=true;" style="display:inline-block;border-color:DarkGray;border-width:1px;border-style:Solid;overflow:auto;background-color:window;display:none;position:absolute;z-index:11;">
            <table cellpadding="0" cellspacing="0" style="background-color:window;">
                <tr>
                    <td nowrap="nowrap"><span><input id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl00" type="checkbox" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl00" checked="checked" onclick="$get('ReportViewerControl_ctl04_ctl07').control.OnSelectAllClick(this);" /><label for="ReportViewerControl_ctl04_ctl07_divDropDown_ctl00">(Select All)</label></span></td>
                </tr><tr>
                    <td nowrap="nowrap"><span><input id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl02" type="checkbox" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl02" checked="checked" onclick="$get('ReportViewerControl_ctl04_ctl07').control.OnValidValueClick(this, 'ReportViewerControl_ctl04_ctl07_divDropDown_ctl00');" /><label for="ReportViewerControl_ctl04_ctl07_divDropDown_ctl02">Shift&nbsp;1</label></span></td>
                </tr><tr>
                    <td nowrap="nowrap"><span><input id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl03" type="checkbox" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl03" checked="checked" onclick="$get('ReportViewerControl_ctl04_ctl07').control.OnValidValueClick(this, 'ReportViewerControl_ctl04_ctl07_divDropDown_ctl00');" /><label for="ReportViewerControl_ctl04_ctl07_divDropDown_ctl03">Shift&nbsp;2</label></span></td>
                </tr><tr>
                    <td nowrap="nowrap"><span><input id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl04" type="checkbox" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl04" checked="checked" onclick="$get('ReportViewerControl_ctl04_ctl07').control.OnValidValueClick(this, 'ReportViewerControl_ctl04_ctl07_divDropDown_ctl00');" /><label for="ReportViewerControl_ctl04_ctl07_divDropDown_ctl04">Shift&nbsp;3</label></span></td>
                </tr>
            </table><span><input type="hidden" name="ReportViewerControl$ctl04$ctl07$divDropDown$ctl01$HiddenIndices" id="ReportViewerControl_ctl04_ctl07_divDropDown_ctl01_HiddenIndices" value="0,1,2" /></span>
        </div><iframe id="ReportViewerControl_ctl04_ctl11_ctl01" onclick="event.cancelBubble=true;" onactivate="event.cancelBubble=true;"

Вот что я пытался сделать:

Do
DoEvents
Loop Until ieObj.readyState = 4
    ieObj.document.getElementById("ReportViewerControl_ctl04_ctl07_divDropDown_ctl02").Checked = "Unchecked"

Поле для этого элемента остается без изменений. Любые предложения о том, как изменить это, будет принята с благодарностью. Заранее спасибо.

1 Ответ

1 голос
/ 14 апреля 2020

Вы должны установить проверенное значение на False, чтобы оно не было проверено.

Пример кода такой:

Sub LOADIE()
    Set ieA = CreateObject("InternetExplorer.Application")
    ieA.Visible = True
    ieA.navigate "http://www.example.com"
    Do Until ieA.readyState = 4
       DoEvents
    Loop

    ieA.document.getElementById("ReportViewerControl_ctl04_ctl07_divDropDown_ctl02").Checked = False
End Sub

Результат примерно такой:

enter image description here

...