Страницы: 1
RSS
Почему не заполняется одно поле в ИЕ при заполнении таким же образом других полей
 
доброго времени суток всем!
Почему одно поле выбивается из списка?
Есть код. Открывает ИЕ и заполняет поля
но одно поле не заполняет
как побороть?
Код
Sub Rab_IE()
    Dim ie, rod
    Dim pe1, pe2, pf, pi, pt, but
    Dim emm: emm = "пример@gmail.com"
    Dim fio: fio = "Моторин"
    Dim nam: nam = "Александр"
    Dim Text: Text = "Примите, пожалуйста, обращение. Подробности в файле"
    
Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.navigate ("http://services.government.ru/letters/form/")
 
    pe1 = ie.document.getElementsByClassName("input__text input__email textinput required")
    pe1.Value = emm
    
    pe2 = ie.document.getElementsByClassName("input__text input__email textinput")
    pe2.Value = emm ' НЕ ЗАПОЛНЯЕТ ПОЛЕ
    
    pf = ie.document.getElementsByClassName("input__text input__surname textinput required")
    pf.Value = fio
    
    pi = ie.document.getElementsByClassName("input__text input__firstname textinput required")
    pi.Value = nam
    
    pt = ie.document.getElementsByClassName("textarea input__ question required")
    pt.Value = Text
 
End Sub
Думал может есть возможность послать сообщение окну, но SPYXX не показывает окон  
 
если ваша задача  - заполнить поля в ИЕ - то заполняйте
если задача в чем-то другом - обьясните в чем? (чем вашей жизни мешают не заполненные поля в ИЕ)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Пытаюсь объяснить ещё раз:
Заполняются все кроме одного
Помогите понять причину
Цитата
чем вашей жизни мешают не заполненные поля в ИЕ
Поле обязательно к заполнению
Или подскажите как решить проблему с помощью VBA
Надо заполнить все обязательные поля и нажать кнопку
Изменено: Александр Моторин - 30.12.2021 21:33:36
 
допустим, вы с помощью VBA заполнили все поля и нажали кнопку
открылась какая-то новая страница, откройте ее руками, она у вас есть, открыта, что дальше? чем это вам помогло а жизни?
задача-то в чем???
Изменено: Ігор Гончаренко - 30.12.2021 22:01:34
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Александр Моторин, столько лет на форуме и не знаете, как нужно оформлять код? Я уже не говорю про название темы.
 
Метод getElementsByClassName возвращает НЕСКОЛЬКО результатов (массив или коллекция результатов)
Об этом говорит Elements (а не Element) в названии метода
Потому последующее обращение .Value некорректно (и не срабатывает, когда найдено несколько элементов)

Надо примерно так:
ie.document.getElementsByClassName("input__email")(0).Value = "текст"
Изменено: Игорь - 31.12.2021 16:00:53
 
Всем спасибо
Ближе всех к истине был Игорь
Там действительно в некоторых местах оказался не один элемент и нужен был перебор с дополнительной проверкой
Изменено: Александр Моторин - 01.01.2022 16:41:22
 
Если кому надо вот кусок заполнения полей и нажатие кнопки из рабочего кода      
Код
      Set ie = CreateObject("InternetExplorer.Application")
            ie.Visible = True
        '    ie.Visible = False
            ie.navigate ("http://services.government.ru/letters/form/")
            
            While ie.readyState <> 4 Or ie.Busy: DoEvents: Wend
            
            pe1 = ie.document.getElementsByClassName("input__text input__email textinput required")
        '    pe1.innerText = emm
            pe1.Value = emm
            
            For Each div In ie.document.getElementsByClassName("input__text")
               If div.ClassName = "input__text input__email textinput" Then
                 div.Value = emm
               End If
            Next
            
            pf = ie.document.getElementsByClassName("input__text input__surname textinput required")
        '    pf.innerText = emm
            pf.Value = fio
            
            pi = ie.document.getElementsByClassName("input__text input__firstname textinput required")
        '    pi.innerText = emm
            pi.Value = ima
            
            
            pt = ie.document.getElementsByClassName("textarea input__ question required")
        '    pt.innerText = emm
            pt.Value = text
            
            For Each div In ie.document.getElementsByClassName("submit-button-layer")
                Debug.Print div.innertext
               If InStr(1, div.innertext, "Отправить обращение", vbTextCompare) > 0 Then
                 div.all(0).Click
               End If
            Next
Страницы: 1
Читают тему
Наверх