Як натиснути програмно кнопку на іншому сайті на 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. Кидаємо на форму три текстбокса і кнопку.

Як натиснути програмно кнопку на іншому сайті на c # - технічний відділ

У перший текстбокс будемо підставляти нашу посилання, в другій будемо позначимо як ім'я нашої html кнопки. Ну і третє поле будемо записувати відповідь сервера після натискання htmlкнопкі.

В обробник кнопки додамо наступний код:

установка HTMLAgilityPack

Для вирішення проблеми нам знадобитися також доповнення HTML Agility Pack це HTML парсер. Його можна знайти в Nuget через пошук або додати через ту ж консоль nuget командою:

Потім в клас додамо

Додамо два класи які будуть описувати нашу форму і поля введення

Клас який буде описувати нашу форму

Додамо відсутній клас ButtonClicker в проект.

Для тестів будемо використовувати нашу форму.

Запускаємо і тести:

Як натиснути програмно кнопку на іншому сайті на c # - технічний відділ