Як натиснути програмно кнопку на іншому сайті на c # - технічний відділ
Розберемо такий випадок коли нам надсилають посилання на підтвердження, а після переходу за посиланням відкривається сторінка з кнопкою підтвердження на яку треба натиснути. Або просто треба натиснути на кнопку на сторінці HTML. Якщо з переходом по посиланню більш менш все зрозуміло, то з натисканням кнопки досить не просто. Давайте розбиратися.
Трохи теорії.
Зазвичай копка є частиною HTML форми. Відповідно натискаючи на кнопку браузер формує відповідь сервера, зазвичай в POST запиті, збираючи всі дані з input елементів в веб-форми. Простіше кажучи мета натискання кнопки це відіслати представленіt заповненої веб-форми на веб-сервер.
Візьмемо такий приклад:
У цьому прикладі є форма з ім'ям «login» методом «POST» і обробником «Home / Result». І є поля id і sitename які вже заповнені значеннями id і deptech відповідно, також є кнопка з ім'ям «send».
У підсумку потрібно сформувати уявлення веб форми відіслати на обробник «Home / Result».
За замовчуванням інтернет-тип даних для відправки веб-форм медіа це: «application / x-www-form-urlencoded».
Це формат для кодування пар ключ-значення з можливістю дублювання ключів. Кожна пара ключ-значення відділяється символом , Ключ відділений від значення символом =. У ключах і значеннях прогалини замінюються на знак +, і потім, використовуючи URL-кодування, замінюються все не буквено-цифрові символи.
Для нашого прикладу:
Буде закодована в такий спосіб
WebClient нам на допомогу.
Так як ми працюємо на пряму з протоколом то ця відповідь ми повинні сформувати самостійно.
Відкриваємо проект в VisualStudio, створюємо проект під назвою, наприклад, ClickHtmlButton. Кидаємо на форму три текстбокса і кнопку.

У перший текстбокс будемо підставляти нашу посилання, в другій будемо позначимо як ім'я нашої html кнопки. Ну і третє поле будемо записувати відповідь сервера після натискання htmlкнопкі.
В обробник кнопки додамо наступний код:
установка HTMLAgilityPack
Для вирішення проблеми нам знадобитися також доповнення HTML Agility Pack це HTML парсер. Його можна знайти в Nuget через пошук або додати через ту ж консоль nuget командою:
Потім в клас додамо
Додамо два класи які будуть описувати нашу форму і поля введення
Клас який буде описувати нашу форму
Додамо відсутній клас ButtonClicker в проект.
Для тестів будемо використовувати нашу форму.
Запускаємо і тести:
