В VBA после автоматической публикации XML-формы, как я могу автоматизировать взаимодействие с ответом? - PullRequest
1 голос
/ 11 января 2012

Я использую XML в VBA. Приведенный ниже код добавляет товар в корзину на удаленном веб-сайте (публикует форму). Затем код отображает результат в Internet Explorer.

Вы можете увидеть в ответе кнопку «получить оценки». Мне нужно автоматически щелкнуть это, ввести информацию о местоположении и получить ответ об оплате доставки и налоговых платежей (для товара, который в данный момент находится в корзине) на моем листе Excel 2010.

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

Option Explicit

Sub testing()
    Dim objIE As Object
    Dim xmlhttp As Object
    Dim response As String
     Set objIE = CreateObject("InternetExplorer.Application")
    objIE.navigate "about:blank"
    objIE.Visible = True
    Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
    '~~> Indicates that page that will receive the request and the type of request being submitted
    xmlhttp.Open "POST", "http://www.craft-e-corner.com/addtocart.aspx?returnurl=showproduct.aspx%3fProductID%3d2688%26SEName%3dnew-testament-cricut-cartridge", False
    '~~> Indicate that the body of the request contains form data
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    '~~> Send the data as name/value pairs
    xmlhttp.Send "Quantity=1&VariantID=2705&ProductID=2688"
     response = xmlhttp.responseText
    objIE.Document.Write response
    Set xmlhttp = Nothing
End Sub

1 Ответ

0 голосов
/ 17 января 2012

Что вы можете сделать, это:

  • Используйте XMLHTTP для получения источника страницы
  • Используйте объектную модель MSHTML для дальнейшей автоматизации страницы

Пример: Исследование методов браузера IE, часть II

Что код на этой странице делает:

  • Воспользуйтесь преимуществами скорости XMLHTTP для получения источника веб-страницы быстрее, чем автоматизируйте IE
  • Назначьте ответ XMLHTTP объекту MSHTML Document (эффективно «загружая» страницу внутри DOM), затем
  • Используйте традиционные методы OM для циклического перемещения по объектам страницы, нажатия кнопок и т. Д.

Риск самовосхваления - совет Тима. Ссылка, которую он предоставил, содержит несколько методов, которые вы могли бы использовать (конечно, после получения страницы с использованием XMLHTTP) для итерации по странице и нажатия кнопки «Получить оценки», либо для прямой ссылки на нее и вызова метода HTMLInputElement.Click .

...