#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. Извините, это не сработало. Я или кто-то другой, возможно, смогу предложить правильное решение или подтолкнуть вас в правильном направлении, если вы сможете указать ошибки, которые вы получаете. Если вы не можете прикрепить снимок экрана, то дословный текст поможет, если вам нужно их ввести. Они могут быть загадочными, но они полезны. Я еще не до конца уверен, что это ваш скрипт.