Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 55

Как получить Html код формы отображаемой над основной страницей

22.10.2017, 16:27. Показов 2229. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго дня!

Может быть кто подскажет как получить Html код формы отображаемой над основной страницей. Есть вконтакте раздел "Товары", в нем при нажатии на кнопку добавить отображается форма редактирования нового товара. Вот хотелось бы получить html код этой формы. Код кнопки в вк

HTML5
1
<button id="market_add_item_btn" class="flat_button" onclick="return Market.showEditBox();">Добавить товар</button>
Делаю через компонент webBrowser от VS. При попытке получения html получаю код основной страницы, над которой открыта форма. Делаю так:

C#
1
2
3
4
5
6
//Нажимаем кнопку "Добавить"
addNewProductButton.InvokeMember("click");
 
//Получаем документ новой страницы
var addNewProductHtmlDocument = WebBrowser.Document;
if (addNewProductHtmlDocument != null) AddNewPoster(addNewProductHtmlDocument, task)
Пробовал и задержку сделать

C#
1
2
//Подождем пару сек...
Thread.Sleep(2000);
Но результата это не дало...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2017, 16:27
Ответы с готовыми решениями:

Получить html код страницы, отображаемой в WebBrowser
Как получить html код страницы, отображаемой в WebBrowser, находящемся на WPF форме?

Обновление основной формы данными из внедрённой формы, основанной на основной форме
Всем привет! Извиняюсь за тавтологию, но зато изложено кратко! В приложении БД. Не обращайте внимание на много таблиц и схему. Они в...

Как сделать курсор-песочные часики над страницей WEB?
Как сделать курсор нестандартного вида над документом WEB на время между нажатием клавиши submit и до перерисовки страницы с сервера?

31
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
08.11.2017, 08:55
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от auskst Посмотреть сообщение
Правильно ли понимаю, что для отправки или получения данных используются post или get запросы?
Если используется Http протокол, то да. Еще может быть WebSocket. Там Post/Get запросов нет.

Цитата Сообщение от auskst Посмотреть сообщение
или это как раз зависит от того на чем написан сайт?
Думаю, что в стоковом варианте все CMS работают через Http. Могу, конечно, ошибаться, т.к. со всеми CMS просто не знаком.
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 55
08.11.2017, 09:04  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Если используется Http протокол, то да. Еще может быть WebSocket. Там Post/Get запросов нет.
Судя по анализу в хроме закладки network, вижу что есть websoket, значит вряд ли post и get запросы?

Цитата Сообщение от Shogun31337 Посмотреть сообщение
Думаю, что в стоковом варианте все CMS работают через Http. Могу, конечно, ошибаться, т.к. со всеми CMS просто не знаком.
Думаете юла работает под CMS? мне кажется у нее свой движок...
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
08.11.2017, 09:30
Цитата Сообщение от auskst Посмотреть сообщение
Судя по анализу в хроме закладки network, вижу что есть websoket, значит вряд ли post и get запросы?
Видимо, да. Но, по большому счету, какая разница как в браузер данные попадают? Хоть Дед Мороз их туда приносит, главное, что они там появляются. Вы же работаете с конечными данными, а не с протоколами. При парсинге DOM документа, механизмы, использующиеся для его формирования, в принципе, роли не играют.

Цитата Сообщение от auskst Посмотреть сообщение
Думаете юла работает под CMS? мне кажется у нее свой движок...
Эммм... А какая разница между движком и CMS? То что используется что то самописное, вовсе не означает, что это нельзя назвать CMS. То, что там не джумла какая-нибудь, это понятное дело!
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 55
09.11.2017, 08:10  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Видимо, да. Но, по большому счету, какая разница как в браузер данные попадают? Хоть Дед Мороз их туда приносит, главное, что они там появляются. Вы же работаете с конечными данными, а не с протоколами. При парсинге DOM документа, механизмы, использующиеся для его формирования, в принципе, роли не играют.


Эммм... А какая разница между движком и CMS? То что используется что то самописное, вовсе не означает, что это нельзя назвать CMS. То, что там не джумла какая-нибудь, это понятное дело!
Не спорю

Добавлено через 11 часов 17 минут

Цитата Сообщение от OwenGlendower
Значит ищи по каким-то другим признакам - по наличию класса или атрибута, по расположению внутри определенного элемента, по тексту внутри элемента и т.д.
Что-то не получается получить требуемый объект.

Код элемента в разметке страницы выглядит следующим образом:

HTML5
1
<div role="combobox" aria-expanded="false" aria-owns="" aria-activedescendant="react-select-2--value" class="Select-input" tabindex="0" aria-readonly="false" style="border: 0px; width: 1px; display: inline-block;"></div>
Пробую искать так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var comboboxElementList = htmlDocument.GetElementsByTagName("div");
            foreach (HtmlElement elem in comboboxElementList)
            {
                if (elem.InnerHtml != null && elem.InnerHtml.Contains("<div role=\"combobox\" aria-expanded=\""))
                {
                    elem.InvokeMember("click");
                }
 
                //if (elem.OuterHtml.Contains("Выберите категорию"))
                //{
                //    elem.InvokeMember("click");
                //}
            }
Пробую искать по совпадению внутри OuterHtml или InnerHtml, получаю несколько элементов, которые в данных полях содержат код всей страницы, требуемый же элемент найти не удается...

Есть какие-нибудь мысли на этот счет?
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
09.11.2017, 13:04
Цитата Сообщение от auskst Посмотреть сообщение
Есть какие-нибудь мысли на этот счет?
Попробуйте такой вариант:
C#
1
2
3
4
5
6
7
8
9
HtmlElementCollection elmts = htmlDocument.GetElementsByTagName("div");
List<HtmlElement> lst = new List<HtmlElement>();
for (int i = 0; i < elmts.Count; i++)
{
if (elmts[i].GetAttribute("className") == "Select-input")
    {
        lst.Add(elmts[i]);
    }
}
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 55
09.11.2017, 21:03  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Попробуйте такой вариант:
C#
1
2
3
4
5
6
7
8
9
HtmlElementCollection elmts = htmlDocument.GetElementsByTagName("div");
List<HtmlElement> lst = new List<HtmlElement>();
for (int i = 0; i < elmts.Count; i++)
{
if (elmts[i].GetAttribute("className") == "Select-input")
    {
        lst.Add(elmts[i]);
    }
}
Так получилось, спасибо.

Но вот дальше опять беда)

Получил несколько элементов, выбрал необходимый по дополнительному

C#
1
if (elmts[i].GetAttribute("className") == "Select-input" && elmts[i].GetAttribute("aria-activedescendant") == "react-select-2--value")
Пытаюсь сделать ему

C#
1
elmts[i].InvokeMember("click");
Не проходит. Как быть? попробовать установить значения атрибута
HTML5
1
aria-expanded="true"
вместо
HTML5
1
aria-expanded="false"
или тоже еще есть нюансы?
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 55
09.11.2017, 22:19  [ТС]
или может быть я вообще не тот элемент пытаюсь использовать?
Может быть мне нужно другой класс использовать? Возможно нужно пытаться работать с

HTML5
1
<div class="_yjs_field-select sc-dqBHgY kWnrrl" data-name="category"></div>
т.к. у этого класса после выбора значения в комбобоксе появляется скрытый элемент input (видно на втором скрине), у которого есть значение. Только вот что нужно сделать, для того, чтобы появился этот элемент?
Миниатюры
Как получить Html код формы отображаемой над основной страницей   Как получить Html код формы отображаемой над основной страницей  
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 55
13.11.2017, 20:51  [ТС]
есть мысли?
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
14.11.2017, 04:29
Цитата Сообщение от auskst Посмотреть сообщение
есть мысли?
С комбобоксами пока не сталкивался, поэтому ничего внятного посоветовать не могу... Думаю, что по комбобоксу кликать не нужно. Скорее всего нужно установить у нужного элемента комбобокса атрибут selected.
0
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 55
14.11.2017, 08:27  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
С комбобоксами пока не сталкивался, поэтому ничего внятного посоветовать не могу... Думаю, что по комбобоксу кликать не нужно. Скорее всего нужно установить у нужного элемента комбобокса атрибут selected.
В том то и беда, что тут у комбобокса значение то не проставляется, а устанавливается значение у скрытого элемента, который появляется после действий с комбобоксом)))
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
14.11.2017, 11:53
Цитата Сообщение от auskst Посмотреть сообщение
В том то и беда, что тут у комбобокса значение то не проставляется, а устанавливается значение у скрытого элемента, который появляется после действий с комбобоксом)))
Ну, пока что, к сожалению, помочь ничем не могу... Как будет время и настроение, попробую разобраться. Отпишусь, как будет результат.
1
0 / 0 / 0
Регистрация: 22.10.2017
Сообщений: 55
14.11.2017, 19:02  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Ну, пока что, к сожалению, помочь ничем не могу... Как будет время и настроение, попробую разобраться. Отпишусь, как будет результат.
Подождемс) сам еще попробую покопать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2017, 19:02

Перезагрузить фрейм с основной страницей
Добрый день! Подскажите, пожалуйста как во время перезагрузке фрейма обновить родительскую страницу?

CGI. Как получить данные из html формы и отослать данные клиенту в html формате?
Господа помогите с cgi. Никогда этого не делал под VB, а сейчас очень надо. Как получить данные из html формы и отослать данные клиенту в...

Появился отступ с верху над страницей и скролом в Mozilla Firefox. Как убрать подскажите пожалуйста?
Приветствую. Помогите пожалуйста разобраться. Во всех браузерах код отображается нормально, одинаково. Но в Mozilla Firefox появляется...

Как получить в приложении данные из html формы?
Доброго времени суток. Интересует следующий вопрос: Есть приложение на pyqt, в котором присутствуют множественные поля для ввода данных....

Как получить html код
Здраствуйте, помогите пожалуйсто, я весь день сегодня ищу функцию для получение html кода, есть что небудь такое в стандартных библиотеках...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru