0

Можно ли в окне программы отобразить часть браузера? Конкретно нужно отобразить со страницы только поле ввода. Как это можно сделать? Не нашёл как это сделать с помощью стандартного WebBrowser. Подскажите в какую сторону копать.

  • 2
    Разобраться как работает и какие данные отправляет форма и отправлять без WebBrowser. Если совсем все плохо, то можно через CefSharp например, но это чаще всего стрельба из пушки по воробьям. – Геннадий П Sep 16 '20 at 09:46
  • Копать можно, например сюда. Еще можно с помощью HtmlAgilityPack выдрать нужный кусок страницы, затем сформировать собственную страницу и отправить ее в WebBrowser. К слову, WebBrowser - это Internet Explorer 11, от поддрежки которого уже даже в Microsoft отказались. Я молчу про Гугл, который под этим браузером даже не пускает в авторизацию. – aepot Sep 16 '20 at 10:30
  • Небольшое уточнение. Поле которое нужно отобразить появляется только после аутентификации. Логин и пароль вводится на разных страницах идущих друг за другом. Мне нужно в программе отобразить поле- сначала поле логина (заполняем, жмём Enter, тем самым переходим на страницу с полем пароля, заполняем жмём Enter, а вот уже потом появляется поле ввода сообщения) Сделал программу на Selenium, но если мне нужно например 5 или 10 таких полей одновременно, то на каждое поле нужно открыть свой браузер. Задача в том чтоб эти "браузеры" открывались в окне программы и отображали только поле ввода. – Безшуму Ипыли Sep 16 '20 at 10:55
  • phantomjs не вариант, так как по полю нужно кликнуть чтоб оно стало активным (програмно это никак не сделать), его нужно именно загрузить, кликнуть, а потом вводить данные. – Безшуму Ипыли Sep 16 '20 at 10:57
  • 1
    так как по полю нужно кликнуть - поймите одну простую вещь, то, что вы видите, это UI, простое отображение для удобного использования ресурса пользователем. Сам же UI общается с сервером средствами POST/GET запросов, которые имеют свой стандарт. То есть, когда вы жмете например по кнопке "отправить", вы отправляете на сервер данные в JSON/XML/FORM формате с определенными заголовками и "печеньками", а в ответ, сервер отдает необходимые данные, которые UI обрабатывает и отображает вам. Другими словами, зачем вам UI, если можно работать напрямую с сервером? – EvgeniyZ Sep 16 '20 at 11:12
  • Страница создаётся динамически и когда она загружается, то этого поля там как бы нет. По id или селектором его нельзя выделить. Оно становится активным только после клика по нему. Как это можно сделать без браузера? Первое что приходит в голову это PhantomJS. Тогда придётся эмулировать клик по координатам, а потом уже работать с полем по id или чему-то ещё? А если мне нужно 5 или больше экземпляров этого поля? – Безшуму Ипыли Sep 16 '20 at 12:37
  • 1
    Вы меня не слышите, то, что вы видите, это клиент, не сервер! "динамически" - это значит, что Web страничка, которую вы видите, отправляет на сервер запрос, типа "Эй, сервер, дай мне такие-то данные, я их отображать буду!", сервер такой "Ну ладно... На тебе JSON", клиент при помощи JS берет эти данные от сервера и преобразует в HTML, который вы и видите. Нажмите просто F12 в браузере (а лучше установите Fiddler) и во вкладке Network (или ее аналог) смотрите какие запросы отправляются на сервер, при клике той или иной кнопки, вот их и эмулируйте, в 90% случаев этого более чем достаточно! – EvgeniyZ Sep 16 '20 at 12:59
  • Вот например я отправляю вам комментарий, на сервер идет запрос с определенными данными. Как видите, это простой POST запрос, который содержит в себе Cookie, заголовки и тело с текстом комментария, а в ответ сервер отдает HTML разметку этих комментарий, который клиент (что мы тут с вами видим в виде красивых кнопочек) уже отображает нам. – EvgeniyZ Sep 16 '20 at 13:01
  • @EvgeniyZ дело говорит, смотрите во вкладку Сеть в инструментах разработчика в браузере. Вы же в курсе, что такое HTTP? Браузер нужен тогда, когда вы хотите юзеру показать веб-страницу. Когда вы хотите отправить запрос на сервер - отправляйте запрос на сервер. Браузер для этого не нужен. – aepot Sep 16 '20 at 20:07

0 Answers0