Я автоматизирую, то есть из Excel VBA, вот так, частично
Set ie = CreateObject("InternetExplorer.Application")
With ie
.navigate "http://www.statspass.com/login.asp"
Do While .Busy: DoEvents: Loop
Do While .readyState <> 4: DoEvents: Loop
With .document.forms(0)
.txtUsername.Value = "username"
.txtPassword.Value = "*****"
.submit
End With
Позже в коде я перехожу на другой URL и получаю некоторые данные.Вчера все работало нормально.Сегодня, когда он попадает в строку «Отправить», веб-сайт отображает окно с сообщением «Другой сеанс выходит из системы».Я установил ie.Visible = True и прошел через код, чтобы понять это.Как написано, окно сообщения не отображается.Когда отображается окно сообщения, оно находится на странице, а .Busy (не показан выше) всегда имеет значение true, поэтому код просто находится в цикле.
Когда ie.Visible = False, нетВ окне сообщения (как я и ожидал) код не задерживается, но при следующем вызове метода Navigate он заканчивается на странице входа (поскольку он еще не вошел в систему), и я получаю сообщение об ошибке, пытаясь получить доступ к определенномутаблицы, которых нет на экране входа в систему.
Мне нужно войти на этот сайт, перейти на определенную страницу и получить информацию из таблицы.Основываясь на том, где сейчас находится мой код, я хочу выяснить, как сказать «ОК» этому окну сообщения, если и когда оно существует.Но если мне нужно сделать шаг назад и рассмотреть альтернативные методы, я не против этого.
Менее важно, но я все еще не понимаю, почему этот код сработал вчера?Я протестировал его, отправил клиенту, который сообщил об этих ошибках, и сегодня я получаю ошибки.