Скрипт Visual Basic для входа на веб-сайт, затем на другую веб-страницу - сработало, теперь есть ошибки? - PullRequest
0 голосов
/ 29 марта 2019

Я написал базовый скрипт (очень мало опыта), чтобы открыть Internet Explorer, войти в систему, а затем перейти на сайт внутри сайта (поиск).Это работало в течение года, но теперь это не работает, и я не знаю почему.

Если я удаляю код, который переходит на внутренний поиск, он работает.Итак, логин работает, но перенаправление вызывает ошибку.Я думал, что это должно быть что-то на веб-сайте, которое изменилось, но если я делаю это вручную (то есть вручную введите поиск по сайту - после того, как я вошел в систему с помощью скрипта), это работает, поэтому я не вижу, как это могло произойтиперестал работать.

Set IE = CreateObject("InternetExplorer.Application")
function run()
     IE.Visible = True
     IE.Navigate "https://pennsylvania.pmpaware.net/login"
     Wait IE
  With IE.Document
    .getElementByID("auth_key").value = "USERNAME"
    .getElementByID("password").value = "PASSWORD"
    Wait IE
    .getElementsByName("commit").Item(0).Click
    Wait IE
    IE.Navigate "https://pennsylvania.pmpaware.net/rx_search_requests/new"
  End With
End function

Sub Wait(IE)
  Set autoIt = CreateObject("AutoItX3.Control")
  Do
    autoIt.Sleep 500
  Loop While IE.ReadyState < 4 And IE.Busy 
  Do
    autoIt.Sleep 500
  Loop While IE.ReadyState < 4 And IE.Busy 
End Sub


Sub IE_OnQuit
  On Error Resume Next
  WScript.StdErr.WriteLine "IE closed before script finished."
  WScript.Quit
End Sub

Я просто хотел, чтобы скрипт зашел на сайт (который работает), а затем открыл страницу поиска.Его использовали многие мои коллеги больше года, и очень расстраивает, что он перестал работать.Я действительно ценю людей, которые смотрят на это и пытаются помочь мне.Спасибо.

1 Ответ

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

Я не могу оставить комментарий, поэтому я извиняюсь, что это в разделе ответов, но я взял ваш код (см. Ниже), и он, кажется, работает. Основное отличие состоит в том, что я не передаю действительные учетные данные, но я получаю сообщение об ошибке, которое у меня нет разрешения. После этого я добавил еще один веб-сайт, чтобы убедиться, что он может перемещаться после неудачных попыток, а сценарий может перейти на что-то другое. Я добавил упрощенную функцию Wait ().

Верьте или нет, это может быть просто функция ожидания (т.е.). Так что вы можете попробовать Wait (), который я добавил, что исключает добавленные параметры.

Если «Wait ()» не помогает, я думаю, что либо URL-адрес, возможно, изменился, либо ИТ-персонал установил новый протокол безопасности, поскольку к нему переходят с помощью учетных данных. Это может быть проблема с брандмауэром, антивирусом или другим программным обеспечением безопасности.

Option Explicit
Dim IE
Set IE = CreateObject("InternetExplorer.Application")

IE.visible = true
IE.Navigate "https://pennsylvania.pmpaware.net/login"
Wait()
With IE.Document
    .getElementByID("auth_key").value = "USERNAME"
    .getElementByID("password").value = "PASSWORD"
    Wait()
    .getElementsByName("commit").Item(0).Click
    Wait()
    IE.Navigate "https://pennsylvania.pmpaware.net/rx_search_requests/new"
 End With

Wait()

IE.Navigate "www.equip.org"

Sub Wait()
    do while IE.Busy
        Wscript.Sleep 500
    Loop
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...