Выберите опцию, используя Excel Automation с Internet Explorer - PullRequest
1 голос
/ 24 апреля 2019

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

Чтобы выбрать раскрывающийся вариант, который я пробовал:

 myHTMLFrame2.all.Item("QSGAA5V0GAFRWAOL34D8OK78W2ZUJO").Focus
    myHTMLFrame2.all.Item("QSGAA5V0GAFRWAOL34D8OK78W2ZUJO").selectedIndex = 1
    myHTMLFrame2.all.Item("QSGAA5V0GAFRWAOL34D8OK78W2ZUJO").FireEvent "onchange"

Ничего не происходит с вышеупомянутым

Dim myHTMLFrame2 As HTMLDocument
    Set myHTMLFrame2 = HTMLDoc.frames(3).document
    Dim elem As Object

    Set elem = myHTMLFrame2.document.getElementById("QSGAA5V0GAFRWAOL34D8OK78W2ZUJO")
(results in "object not supported error")
    elem.Focus
    elem.selectedIndex = 2

Это HTML-код:

<div id="QSGAA5V0GAFRWAOL34D8OK78W2ZUJO-answer-body">
                    <div class="select_holder select_jquery">
                        <select id="QSGAA5V0GAFRWAOL34D8OK78W2ZUJO" overwrite="1" level="0"
                            val="$escapeTool.html($!{answerValue})" required="true" questionid="QSGAA5V0GAFRWAOL34D8OK78W2ZUJO" totalorder="0" questiondefid="QDGAA5V0GAFRWAOL34D8OK78W2ZUJP"
                            responsetype="STATIC_MENU" autocomplete="off"
                            aria-activedescendant="" aria-labelledby="QSGAA5V0GAFRWAOL34D8OK78W2ZUJO-label" tabindex="0">
                            <option value=""></option>
                            <option value="New User(s)" ps="0" aria-selected="false">New User(s)</option>
                            <option value="Modify User Details or Applications" ps="1" aria-selected="false">Modify User Details or Applications</option>
                            <option value="Add/Modify User By Attachment" ps="2" aria-selected="false">Add/Modify User By Attachment</option>
                            <option value="clear">(clear)</option>
                        </select>
                    </div>
                </div>

Ответы [ 3 ]

0 голосов
/ 25 апреля 2019

Попробуйте выполнить тест с кодом ниже, может помочь решить проблему.

Код:

     Sub demo()

            Dim URL As String
            Dim IE As Object

            Set IE = CreateObject("InternetExplorer.Application")

            IE.Visible = True

            URL = "C:\Users\Administrator\Desktop\107.html"

            IE.Navigate URL

            Do While IE.ReadyState = 4: DoEvents: Loop   'Do While
            Do Until IE.ReadyState = 4: DoEvents: Loop   'Do Until

             IE.Document.GetElementByID("QSGAA5V0GAFRWAOL34D8OK78W2ZUJO").Value = "Modify User Details or Applications"

            Set IE = Nothing  


End Sub

Вывод в IE 11:

enter image description here

0 голосов
/ 30 апреля 2019

@ Qharr & @Deepak - Спасибо

Я проверил элемент и оказалось, что код создает элемент «input» во время выполнения.Для выполнения мероприятия я использую ключи отправки.Не очень элегантно, но это работает.

myHTMLFrame2.all.Item("QSGAA5V0GAFRWAOL34D8OK78W2ZUJO_input").Focus
myHTMLFrame2.all.Item("QSGAA5V0GAFRWAOL34D8OK78W2ZUJO_input").Value = "New User(s)"
myHTMLFrame2.all.Item("QSGAA5V0GAFRWAOL34D8OK78W2ZUJO_input").Click
Application.SendKeys "{DOWN}"
Application.SendKeys "{DOWN}"
Application.SendKeys "~"
0 голосов
/ 24 апреля 2019

Вы можете попробовать присоединить событие к элементу выбора. Я нацелился на использование тега и атрибута, если идентификатор является динамическим Если id статический, то используйте это. Если он находится внутри iframe, добавьте соответствующий синтаксис перед доступом.

Dim dropDown As Object, onChange As Object
Set dropDown = ie.document.querySelector("select[overwrite='1']")
Set onChange = ie.document.createEvent("htmlevents")
onChange.initEvent "change", True, False
ie.document.querySelector("[value='New User(s)']").Selected = True
links.dispatchEvent onChange
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...