C# Опубликовать данные в форму

Ранее я использовал Selenium для автоматизации веб-процессов. Тем не менее, он не всегда работает надежно и, что более важно, он зависит от размера экрана, который не всегда одинаков.

Теперь у меня есть такая форма (очень упрощенная):

<form type="POST" name="demoform">
  First name:<br>
  <input type="text" name="firstname"><br>
  Last name:<br>
  <input type="text" name="lastname">
</form>

Раньше я бы искал имена входов и вводил данные. Но сейчас я хочу сделать это другим способом. Интересно, как отправить данные через POST и как получить весь HTML-результат веб-страницы. Кроме того, мне интересно, является ли последний ответ HTML или это HTML-код страницы, который увидят реальные пользователи.

2 ответа

Решение

Ранее я использовал Selenium для автоматизации веб-процессов. Тем не менее, это не всегда работает надежно и, что более важно, это зависит от размера экрана

Вы действительно не подкрепили свое утверждение о надежности, но я должен не согласиться. Недавно я работал над проектом, в котором использовался драйвер Selenium Chrome, и у меня не было проблем с надежностью, и я не видел ничего зависящего от разрешения экрана? Вы должны делать что-то не так. Во всяком случае, поскольку вы хотите использовать другую технику, вот краткая информация о том, как вы бы это сделали:

Кроме того, мне интересно, является ли последний ответ HTML или HTML-код страницы, который увидят реальные пользователи?

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

Следующим шагом является ознакомление с HttpClient (.NET 4.5+ или WebClient для более ранних версий). Это позволяет вам общаться с веб-сайтом, используя полностью настраиваемые объекты. Вы можете настроить практически любой аспект запроса или ответа: заголовки, куки-файлы, протоколы и т. Д. (Так что все соответствует Fiddler). Этот класс уже содержит много логики, поэтому вы можете сосредоточиться на том, что для вас наиболее важно, а именно на общении.

Интересно, как отправить данные через POST и как получить весь HTML-результат веб-страницы.

Вот как бы вы использовали HttpClient скачать строку html:

public Task<string> GetHtmlAsync(string url)
{
    try
    {
        var t = Task.Run(async () => {
            using (var client = new HttpClient())
            {
                var response = await client.GetAsync(url);
                return await response.Content.ReadAsStringAsync();
            }
        });
        return t;
    }
    catch (HttpRequestException e)
    {
        return Task.FromException<string>(e);
    }
}

Это очень похоже на POST, но на Stackru уже был дан ответ: как сделать веб-запрос HTTP POST

Попробуй это...

  <form method="post" action="pagename" name="demoform">

      First name:<br>

      <input type="text" name="firstname"><br>

      Last name:<br>

      <input type="text" name="lastname">

      <input type="submit" value="Submit" />
    </form>
Другие вопросы по тегам