Закрыть оповещение JavaScript с помощью VBA Automation - PullRequest
2 голосов
/ 28 февраля 2012

Я ищу способ закрыть окно всплывающего окна / сообщения Javascript (т.е. не окно NEW IE, а сценарий alert () ), который загружается при загрузке веб-страницы.

В настоящее время у меня есть код, который загружает данные в форму поиска, запускает поиск, извлекает необходимую информацию из результатов, выходит из поиска и затем переходит к следующему элементу в списке.В некоторых случаях в результатах поиска отсутствует часть важной информации.Когда это происходит, JavaScript на странице выскакивает сообщение при загрузке страницы, давая пользователю знать, что информация отсутствует.С помощью автоматизации код останавливается (ждет), чтобы окно очистилось, прежде чем продолжить, и пользователь должен нажать кнопку ОК, прежде чем это произойдет.

(У меня нет возможности изменить исходный скрипт страницынепосредственно, так как это выходит за рамки моей ответственности здесь, на работе. Кроме того, более важно сохранить эту функцию для общего пользования, она действительно только выиграет от этой функции небольшого использования, которую я создаю.)

Хотя я не могу изменить исходный скрипт, я нашел пример о том, как запретить отображение всплывающих окон / предупреждений путем изменения загруженного скрипта.Тем не менее, это относится к уже загруженной странице и не работает для меня (насколько я могу судить).

IE.Document.getElementById("clearRelItems").removeAttribute "onClick"
IE.Document.getElementById("clearRelItems").setAttribute "onClick", "return true;"

Можно ли использовать этот метод, чтобы внести изменения до того, как страница полностью загрузится?то есть это можно использовать для обхода / обхода вызова функции при загрузке страницы?

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

Я пытался захватить XML в соответствии с предложением @Kyle, но не уверен, что достаточно опытен, чтобы заставить этот метод работать.

Как еще можно обойти предупреждение?Есть ли способ активировать кнопку ОК в оповещении?Можно ли как-то обойти предупреждение / загрузку страницы?

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Одним из обходных путей может быть распознавание застрявшего сценария, а затем просто отправить нажатие клавиши "enter", чтобы закрыть всплывающее окно.

1 голос
/ 01 марта 2012

Рассматривали ли вы использование классов MS XML для непосредственного размещения данных и анализа результатов?Это намного быстрее, чем автоматизация IE, хотя по общему признанию это не всегда возможно

Редактировать: Не совсем, мы просто используем классы для обработки запроса и ответа, на самом деле мы не используем XML, я собрал это вместе длякто-то давным-давно дал вам представление:

Sub GetDataXML()

Dim strPostText As String, strResponse As String
Dim Pressure As Double, Temperature As Double
Dim XMLrequest As Object

Pressure = CDbl(InputBox("Enter the Pressure"))
Temperature = CDbl(InputBox("Enter the Temperature"))

strPostText = "lang=english&calc=standard&druck=" & Pressure & "&druckunit=1&temperatur=" & Temperature & "&tempunit=1&Submit=Calculate"

Set XMLrequest = CreateObject("MSXML2.XMLHTTP")

With XMLrequest
    .Open "POST", "http://www.peacesoftware.de/einigewerte/calc_co2.php5", False
    .setRequestHeader "Content-type", "application/x-www-form-urlencoded"
    .send (strPostText)
    Do: DoEvents: Loop Until .readyState = 4
    strResponse = .responseText
    .abort
End With

Debug.Print strResponse

End Sub

Еще проще, если вы используете таблицу запросов в Excel, поскольку она обрабатывает любой анализ данных.

Помогает ли вам вышесказанное?

...