Вопрос

Я выполняю некоторую работу по автоматизации и могу перемещаться по сайту и публиковать сообщения в HTML-формах, но теперь передо мной стоит новая задача: Аякс формы.

Поскольку нет источника для чтения, мне остается задаться вопросом, можно ли заполнить форму Ajax программно, на C#.В настоящее время я использую невидимый axWebBrowser.

Заранее спасибо за вашу помощь!

Это было полезно?

Решение

Да, но я рекомендую использовать другой подход к запросу/ответу на страницы сервера, включая обычные страницы и страницы обработчика AJAX.

В С# попробуйте использовать Веб-запрос/Вебответ или более специализированные классы HttpWebRequest/HttpWebResponse.

Ajax — это не более чем «причудливое» название технологии, которая позволяет Javascript отправлять HTTP-запросы на сервер, который обычно реализует некоторые обработчики, которые создают специализированный, легкий контент для вызывающего Javascript (обычно закодированного как JSON).

Поэтому, чтобы имитировать вызовы AJAX, все, что вам нужно сделать, это проверить ваше целевое приложение (веб-страницу, на которую вы хотите «отправить сообщение») и посмотреть, какой формат используется для связи AJAX, а затем скопировать поведение Javascript страницы из C#. используя классы WebREquest/WebResponse.

Видеть поджигатель - отличный инструмент, который позволяет вам проверять веб-страницу, чтобы определить, какие вызовы она выполняет, на какие страницы и что эти страницы отвечают.Он также неплохо справляется с проверкой вызовов AJAX.

Вот очень простой пример того, как выполнить веб-запрос:

HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create("http://www.mysite.com");

using (HttpWebResponse resp = (HttpWebResponse)wReq.GetResponse())
{
   // NOTE: A better approach would be to use the encoding returned by the server in
   // the Response headers (I'm using UTF 8 for brevity)
   using (StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8))
   {
       string content = sr.ReadToEnd();
       // Do something with the content
   }
}    

POST — это тоже запрос, но с другим методом.Видеть эта страница для примера того, как сделать очень простой пост.

РЕДАКТИРОВАТЬ - Подробности о проверке поведения страницы с помощью Firebug.

Под проверкой страницы, которую вы пытаетесь реплицировать, я подразумеваю использование инструмента (я использую Firebug — в Firefox) для определения потока информации между страницей и сервером.

В Firebug это можно сделать с помощью панелей «Сеть» и «Консоль».На панели «Сеть» перечислены все запросы, выполняемые браузером при загрузке страницы.В то время как «Консоль» будет перечислять сообщения между страницей и сервером, которые происходят после загрузки страницы.Те сообщения, которые происходят после загрузки страницы, по сути являются вызовами AJAX, которые вы захотите реплицировать (Примечание:Чтобы это работало, в Firebug должен быть включен мониторинг сети)

Проверить Учебник Майкла Синка чтобы узнать больше о Firebug и поэкспериментировать с панелью консоли, чтобы узнать больше о запросах AJAX.

Что касается «реплицирования поведения страницы из C# с использованием WebRequest/WebResponse» — вы должны понимать, что, как я уже говорил ранее, вызов Javascript AJAX — это не что иное, как HTTP-запрос.Это HTTP-запрос, который Javacript отправляет веб-серверу «за кулисами» или вне канала.Чтобы повторить это, на самом деле это ничем не отличается от репликации обычного GET или обычного POST, как я показал выше.И здесь в дело вступает Firebug.С его помощью вы можете просматривать запросы в том виде, в котором их делает Javascript — посмотрите на панель «Консоль» и посмотрите, как выглядит сообщение «Запрос».

Затем вы можете использовать тот же метод, что и выше, используя HttpWebRequest/HttpWebResponse для создания запроса того же типа, что и Javascript, только вместо этого делайте это из C#.

Грегг, я надеюсь, что это немного прояснит мой ответ, но помимо этого я предлагаю поиграть с Firebug и, возможно, узнать больше о том, как работает протокол HTTP и как AJAX работает как технология.

Другие советы

Вы рассматривали использование Selenium.AFAIK, вы можете написать тестовые примеры на C #, и я знаю, что наши тестировщики успешно использовали его раньше для тестирования пользовательского интерфейса сайта ASP.NET с поддержкой Ajax.

http://seleniumhq.org/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top