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

#html #vbscript

#HTML #vbscript

Вопрос:

Я написал базовый скрипт (очень мало опыта) для открытия 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:

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

Хотите верьте, хотите нет, это просто может быть функция ожидания (ie). Итак, вы можете попробовать добавленную мной функцию 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
  

Комментарии:

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

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