Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / CEF4Delphi в потоке с внешней формой / 25 сообщений из 139, страница 1 из 6
24.07.2019, 11:50
    #39840878
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Буду признателен, тем кто работает с CEF3/CEF4 для Delphi за помощь.

Некоторые сайты используют CloudFlare, поэтому простым IdHTTP не обойтись - нужен более менее полноценный и современный браузер с поддержкой js/ajax. А то встроенный древний IE подвисает 21931836 .

Как я уже давно понял, любому браузеру нужна визуальная форма для работы и в потоке без видимой на экране формы он работать не будет.

Поэтому появилась идея вынести загрузку страницы из потока на форму с использованием synchronize. Может быть будет правильнее вместо доступа к форме и браузеру использовать не synchronize, а какие-то другие методы "общения"?
Или вообще реализовать идею без потока. Может хромиум умеет "нажимать" на ссылку как это делает пользователь мышкой?
...
Рейтинг: 0 / 0
24.07.2019, 12:03
    #39840889
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Самое универсальное решение - отдельный браузер, запущенный в режиме WebDriver. Софт для внутренних нужд или на распространение?
...
Рейтинг: 0 / 0
24.07.2019, 12:05
    #39840891
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
На распространиние, правда в "единичном" экземпляре :)


Василий 2браузер, запущенный в режиме WebDriver
это как? что для этого надо?
...
Рейтинг: 0 / 0
24.07.2019, 12:13
    #39840898
ziv-2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
X11,
В CEF4 можно вызывать любой javascript код, делать инъекции. Загрузил код, вызвал нужные функции.
...
Рейтинг: 0 / 0
24.07.2019, 12:58
    #39840922
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Да, читал краткую инфу.
но мне всего-то нужно "пробежаться" по страничкам и получить InnerHTML.
InnerHTML уже понял как получать.
...
Рейтинг: 0 / 0
24.07.2019, 14:15
    #39840960
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
X11Василий 2браузер, запущенный в режиме WebDriver
это как? что для этого надо?
Браузер, WebDriver-драйвер (гы) и обвязка REST интерфейса.
Для Хрома, например, http://chromedriver.chromium.org/downloads
Но если просто нужно тыкнуть мышкой, это оверхед. Действительно попробуй CEF, а если нужна параллельность и с потоками не заладится - можно организовать субпроцессы вместо потоков
...
Рейтинг: 0 / 0
25.07.2019, 13:00
    #39841351
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Часто встречается какой-то "Visitor". Что это такое?

function CookieVisitorProc
CookieVisitor
TCefFastCookieVisitor
OnNavigationVisitorResultAvailable
...
Рейтинг: 0 / 0
25.07.2019, 13:01
    #39841352
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
А есть у кого простой пример работы с куками?
Как задать папку хранения, например?

Т.к. то ,что есть здесь http://parsing-and-i.blogspot.com/2013/01/tchromium-cookies-in-delphi.html
уже устарело
...
Рейтинг: 0 / 0
25.07.2019, 13:25
    #39841370
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
X11Как задать папку хранения, например?

Код: pascal
1.
GlobalCEFApp.Cache := 


Теперь и кэш, и куки хранятся в общей папке
...
Рейтинг: 0 / 0
25.07.2019, 16:13
    #39841493
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Мало того, все настройки нужно выполнять до строки
GlobalCEFApp.StartMainProcess;

см. пример в файле SimpleBrowser2.dpr
...
Рейтинг: 0 / 0
20.08.2019, 12:58
    #39851555
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
ппц :( это сложнее, чем я ожидал

+ 10 в карму, есть поможете понять, как после загрузки страницы найти определённый текст и ссылку, а потом и "щёлкнуть" по ней
...
Рейтинг: 0 / 0
20.08.2019, 13:54
    #39851597
sql2012
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
X11ппц :( это сложнее, чем я ожидал

+ 10 в карму, есть поможете понять, как после загрузки страницы найти определённый текст и ссылку, а потом и "щёлкнуть" по ней

1. исходный текст не получается?
2. в тексте не получается найти нужное?
3. в найденном не получается извлечь href?
4. не получается вызвать загрузку по указанному url?

на каком пункте непонимание?
...
Рейтинг: 0 / 0
20.08.2019, 14:13
    #39851616
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Есть примеры процедур SimpleNodeSearch и SimpleDOMIteration в демках. Разбираю их.

Как я понял из примеров и комментариев, нужно использовать OnProcessMessageReceived.
да, я так и делаю:
GlobalCEFApp.OnProcessMessageReceived := GlobalCEFApp_OnProcessMessageReceived;

автор https://www.briskbard.com/forum/viewtopic.php?f=8&t=861&p=3993#p3840 you will need to send messages to the browser process

unit uDOMVisitor// To send messages from the render process you must use the browser.SendProcessMessage
// procedure with a PID_BROWSER parameter. The browser process receives those messages in
// the TChromium.OnProcessMessageReceived event.

Далее. В качестве параметра в SimpleNodeSearch и в SimpleDOMIteration нужно передать aDocument: ICefDomDocument, т.к. обе процедуры принимают его на вход.
Вот тут и начинаются танцы с бубном.
Событие GlobalCEFApp_OnProcessMessageReceived получает и обрабатывает сообщения.
Я знаю, как послать сообщение:
Код: pascal
1.
browser.SendProcessMessage()


Теперь остаётся понять: откуда его правильно посылать?

здесь автор меня запутал
https://www.briskbard.com/forum/viewtopic.php?f=8&t=861&p=3993
то пишет, что нужно:
Код: pascal
1.
frame.SendProcessMessage(PID_BROWSER, msg);


а потом, как я вроде бы понял, это неправильно.

После окончательной загрузки страницы ведь это нужно делать? В каком событии?
...
Рейтинг: 0 / 0
20.08.2019, 15:03
    #39851656
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
X11и в потоке без видимой на экране формы он работать не будет.Что мешает создать оконный цикл в нужном потоке?
...
Рейтинг: 0 / 0
20.08.2019, 15:19
    #39851674
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Да, отсутствие нужных знаний и навыков
...
Рейтинг: 0 / 0
20.08.2019, 15:37
    #39851687
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
X11,

Разметка произвольная? Может просто тупо внедрить на страницу свой JS и уже с его помощью искать и "кликать" по ссылкам?
...
Рейтинг: 0 / 0
20.08.2019, 15:50
    #39851698
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Может быть, я не знаю.
Я пока ещё даже искать не научился.
...
Рейтинг: 0 / 0
20.08.2019, 16:18
    #39851727
энди
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
Мне казалось бы какой-то пример работы CEF без визуального рендера.
...
Рейтинг: 0 / 0
20.08.2019, 16:19
    #39851730
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
эммм, что?
...
Рейтинг: 0 / 0
20.08.2019, 17:06
    #39851776
Saller
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
X11Может быть, я не знаю.
Я пока ещё даже искать не научился.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var links = document.querySelectorAll('a.forumLink');
if (links) {
    for (var x = 0; x <= links.length; x++) {
        if (links[x]) {
            if (links[x].innerHTML.trim().indexOf('Delphi') != -1) {
                links[x].click();               
            }
        }
    }
}
...
Рейтинг: 0 / 0
20.08.2019, 17:08
    #39851778
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
это точно для cef4delphi?
...
Рейтинг: 0 / 0
20.08.2019, 17:11
    #39851781
Saller
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
X11,

Да. Проверял на странице данной темы. Или давай ссылку на сайт, на котором нужно жмякнуть ссылку.
...
Рейтинг: 0 / 0
20.08.2019, 19:46
    #39851823
Gator
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
SallerИли давай ссылку на сайт, на котором нужно жмякнуть ссылку.
Жмакай на сиквел.ру
...
Рейтинг: 0 / 0
20.08.2019, 19:48
    #39851824
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
так это ж не дельфи-код
...
Рейтинг: 0 / 0
20.08.2019, 19:49
    #39851825
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CEF4Delphi в потоке с внешней формой
SallerX11,

Да. Проверял на странице данной темы. Или давай ссылку на сайт, на котором нужно жмякнуть ссылку.
doska.plus
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / CEF4Delphi в потоке с внешней формой / 25 сообщений из 139, страница 1 из 6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]