0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 51
|
||||||
Webbrowser Делать действие только после полной загрузки страницы30.11.2011, 15:31. Показов 12735. Ответов 17
Метки нет Все метки)
(
Здравствуйте!
Мне не получается решить одну проблему. Я создаю автокликер, для этого использую WebBrowser. Все действия автокликера помещены в одну функцию. Для задержки вызова функции использую таймер. Проблема заключается в том, что функция вызывается когда еще не загружена страница.
0
|
30.11.2011, 15:31 | |
Ответы с готовыми решениями:
17
Выполнить действие после загрузки страницы WebBrowser Отключить отображение страницы до полной ее загрузки в WebBrowser Как сделать ожидание полной загрузки страницы в webbrowser? |
![]() 2769 / 2069 / 386
Регистрация: 22.07.2011
Сообщений: 7,812
|
|
30.11.2011, 15:53 | |
Ну так а почему бы не запускать таймер после загрузки страницы (по событию). ?
а в обработчиках типа btn_T_start_Click можно просто ставить признак того что таймер можно запускать. З.Ы вообще я даже не уверен что тут таймер нужен, загрузился документ - кликнули, и так по циклу., но вам виднее.
0
|
14 / 14 / 1
Регистрация: 23.06.2011
Сообщений: 34
|
|||||||||||
01.12.2011, 00:35 | |||||||||||
я обычно вставляю функцию
1
|
0 / 0 / 0
Регистрация: 19.05.2018
Сообщений: 5
|
||||||
19.05.2018, 11:16 | ||||||
Вот сейчас как сталкер 2, оживляю тему =)
1) webBrowser1_DocumentCompleted вызывается на странице по несколько раз (после загрузки каждого фрейма), и после первого вызова код бежит дальше, не обращая внимания на дальнейшие загрузки и вызовы webBrowser1_DocumentCompleted в webBrowser, поэтому не выход. (А webBrowser1.ReadyState вообще где-то в параллельной вселенной инициируется видимо, его вообще опущу) 2) Джокеру большое спасибо, паузу его юзаю и в дело и не в дело, в различных её модификациях, но для решения ожидания загрузки подходит как топор для точки карандаша. 3) Поэтому решил, что нужен свой топор: Смысл в том, чтобы проверять меняется ли количество элементов на странице, если не меняется, значит все загрузилось. За возможную топорность кода даже не извиняюсь, я любитель-самоучка.
![]()
0
|
0 / 0 / 0
Регистрация: 19.05.2018
Сообщений: 5
|
||
19.05.2018, 11:55 | ||
Мой "нубо-код" хоть как-то адаптируется под параметры рабочей станции и интернета конечного пользователя. А Вы в этой теме даже идеи в рабочем направлении не высказали, так что если конструктива нет - лучше глаз удаляйте =)
0
|
![]() 2769 / 2069 / 386
Регистрация: 22.07.2011
Сообщений: 7,812
|
||
19.05.2018, 12:11 | ||
Да и постановка задачи странная , какая цель преследуется в конечном итоге ? П.С webBrowser в целом устаревший компонент , есть более современные решения с большими возможностями.
0
|
0 / 0 / 0
Регистрация: 19.05.2018
Сообщений: 5
|
|||
19.05.2018, 12:29 | |||
Задача та же, что и в топике.
Решения с К примеру webBrowser1_DocumentCompleted может инициироваться дважды, потому что страница грузит 2 фрейма. но при этом второго инициирования webBrowser1_DocumentCompleted код формы, следующий после webBrowser1.Navigate не ждет, он начинает выполняться не смотря на то, что на страницу не загружен второй фрейм, т.е. отсутствует куча элементов. Мой "код" следит, меняется ли количество элементов на веб странице, и если оно перестало меняться, значит страница прогрузилась полностью. П.С. в теме про webBrowser я описал возможное решение для webBrowser =) остальное - лирика. И да - возможно.
0
|
![]() 2769 / 2069 / 386
Регистрация: 22.07.2011
Сообщений: 7,812
|
|
19.05.2018, 12:50 | |
В топике совершенно другая проблема , там человек запускал асинхронный таймер который обращался к элементам документа еще до того , как тот был загружен. - т.е в целом подход неверный был.
А у Вас какая проблема ? - конечно , documentcompleted будет вызываться для каждого фрейма , потому как фрейм содержит свой элемент документа , и это нормально. А то , что Вы проверяете document.all - так это ни к селу ни к городу , оно к фреймам никакого отношения не имеет. , и это никак не значит что страница загрузилась полностью , более того , если на момент проверки кодом число элементов может совпадать , то через секунду эта ситуация может уже измениться - у вас нет синхронизации с работой браузера. - в общем , .... ноу комментс как говориться. Если Вам нужна работа с каким то элементом во фрейме , так дождитесь его загрузки по событию и потом взаимодействуйте , к чему все эти непонятные велосипеды , которые еще и не работают к тому же.
0
|
0 / 0 / 0
Регистрация: 19.05.2018
Сообщений: 5
|
|
19.05.2018, 13:18 | |
да, после метки L1 время паузы стер случайно в pause().. надо pause(500) к примеру
П.С. вот сейчас конструктив =) но тем не менее, работает =) Добавлено через 27 минут пока что лучших вариантов по приостановке выполнения кода во время ожидания загрузки всех элементов веб страницы я не нашел на просторах англо- и рускоязычного интернета. если Вы знаете как дождаться загрузки всех фреймов, то милости просим - решение на экран.
0
|
![]() 2769 / 2069 / 386
Регистрация: 22.07.2011
Сообщений: 7,812
|
|
19.05.2018, 13:30 | |
Получаете список фреймов на странице и отслеживаете событие загрузки , как только все события отработали по списку , так все. П.С Фреймы могут содержать другие фреймы - так что это все нужно проверять.
П.С П.С Но обычно такого извращения не требуется , т.к цели вполне конкретные , это не дождаться загрузки всего и вся , а дождаться загрузки вполне определенного элемента с которым нужно работать , и только.
0
|
0 / 0 / 0
Регистрация: 19.05.2018
Сообщений: 5
|
||
19.05.2018, 13:41 | ||
если бы он еще пояснил, что его функцию просто после каждой загрузки страницы надо вставлять, а не в WbDocCompleted, например, было бы очень хорошо, не родилось бы мое чудовище =) А Ваши рассуждения я и сам родил давно, с алгоритмами у меня все нормально, а вот с кодом не особо, вот и выкручиваюсь как могу =)
0
|
0 / 0 / 0
Регистрация: 29.10.2018
Сообщений: 1
|
||||||
04.12.2018, 12:10 | ||||||
Может будет полезно. Сделал ограничение цикла. Выход при превышении определенного интервала, если вдруг страница так и не загрузилась
0
|
04.12.2018, 12:10 | |
Помогаю со студенческими работами здесь
18
Ожидание полной загрузки страницы WebBrowser в статическом методе Как выполнить действие после полной загрузки формы? События Load и Shown не подходят! Webbrowser Делать действие только после полной загрузки страницы Ожидание полной загрузки страницы в WebBrowser Открыть 3 ссылки в webbrowser c ожиданием полной загрузки страницы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
|
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
|
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
|
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
|
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
|
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
|
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
|
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
|
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025
Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .
|
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025
gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .
|