2015-09-02 5 views
3

Я новичок в VBA и новичок в Stack Overflow, хотя я читал посты здесь некоторое время. Я много искал для ответа на мою проблему с кодированием, но я не могу найти ответ. Я пытаюсь войти на сайт, перейти на страницу, а затем очистить данные с этой страницы. Я начал строить код, который я проанализировал вместе с тем, что я нашел в Интернете. Я не могу заставить IE даже поместить мои учетные данные в соответствующие поля пользователя и PW после поиска их идентификаторов, используя «получить элементы». В результате я получаю сообщение об ошибке времени выполнения 424 - Требуется объект. Заранее благодарю за любую помощь.Excel VBA Вход в IE Сайт

'Open IE, navigate to the desired page and loop until fully loaded 
    Set IE = CreateObject("InternetExplorer.Application") 
    site = "https://www.ivolatility.com/login.j" 

    With IE 
     .Visible = True 
     .navigate site 
    Do Until Not IE.Busy And IE.readyState = 4 
     DoEvents 
    Loop 

    End With 

'Input the userid and password 
    IE.Document.getElementById("username").Value = "xxxxxx" 
    IE.Document.getElementById("password").Value = "xxxxxx" 

'Click the "Search" button 
    IE.Document.getElementById("login_go").Click 

    Do Until Not IE.Busy And IE.readyState = 4 
     DoEvents 
    Loop 
+0

Эти элементы не имеют таких идентификаторов. –

ответ

2

Вы пытаетесь использовать имя входного элемента HTML как его идентификатор The два не обязательно одинаковы, хотя иногда вы увидите.

<input type="text" id="username" name="username" value="" size="10" class="s2" maxlength="63 "> 

Но это не тот случай здесь. Вам нужно рассматривать элементы по именам теорем, а не ids.

dim n as long 'this belongs at hte top witrh the other Dims 

'Input the userid and password 
For n = 0 To ie.document.getelementsbytagname("input").Length - 1 
    With ie.document.getelementsbytagname("input")(n) 
     Select Case LCase(.Name) 
      Case "username" 
       .Value = "xxxxxx" 
      Case "password" 
       .Value = "zzzzzz" 
      Case "login_go" 
       .Click 
       n = 99999 
      Case Else 
       'ignore 
     End Select 
    End With 
Next n 
Do While ie.Busy Or ie.readyState <> 4: DoEvents: Loop 

Клик работает в этом случае, так как представить приходит после ввода элементов имени имя пользователя и пароль.

1

Как нет HTML-элементов с идентификаторами «имя пользователя», «пароль» и «login_go», то Value нуль не может быть установлен.

Если структура документа остается той же все время, вы можете получить доступ к этим элементам с индексами:

IE.Document.getElementsByTagName("input")(3).Value = "xxxxxx"  
IE.Document.getElementsByTagName("input")(8).Value = "xxxxxx" 
... 
IE.Document.getElementsByTagName("form")(1).Submit 
Смежные вопросы