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>