Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 вперед Ctrl→ все |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
Буду признателен, тем кто работает с CEF3/CEF4 для Delphi за помощь. Некоторые сайты используют CloudFlare, поэтому простым IdHTTP не обойтись - нужен более менее полноценный и современный браузер с поддержкой js/ajax. А то встроенный древний IE подвисает 21931836. Как я уже давно понял, любому браузеру нужна визуальная форма для работы и в потоке без видимой на экране формы он работать не будет. Поэтому появилась идея вынести загрузку страницы из потока на форму с использованием synchronize. Может быть будет правильнее вместо доступа к форме и браузеру использовать не synchronize, а какие-то другие методы "общения"? Или вообще реализовать идею без потока. Может хромиум умеет "нажимать" на ссылку как это делает пользователь мышкой? |
24 июл 19, 11:50 [21933393] Ответить | Цитировать Сообщить модератору |
Василий 2 Member Откуда: Сообщений: 1016 |
Самое универсальное решение - отдельный браузер, запущенный в режиме WebDriver. Софт для внутренних нужд или на распространение? |
24 июл 19, 12:03 [21933415] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
На распространиние, правда в "единичном" экземпляре :)
это как? что для этого надо? |
||
24 июл 19, 12:05 [21933419] Ответить | Цитировать Сообщить модератору |
ziv-2014 Member Откуда: Сообщений: 589 |
X11, В CEF4 можно вызывать любой javascript код, делать инъекции. Загрузил код, вызвал нужные функции. |
24 июл 19, 12:13 [21933437] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
Да, читал краткую инфу. но мне всего-то нужно "пробежаться" по страничкам и получить InnerHTML. InnerHTML уже понял как получать. |
24 июл 19, 12:58 [21933489] Ответить | Цитировать Сообщить модератору |
Василий 2 Member Откуда: Сообщений: 1016 |
Браузер, WebDriver-драйвер (гы) и обвязка REST интерфейса. Для Хрома, например, http://chromedriver.chromium.org/downloads Но если просто нужно тыкнуть мышкой, это оверхед. Действительно попробуй CEF, а если нужна параллельность и с потоками не заладится - можно организовать субпроцессы вместо потоков |
||||
24 июл 19, 14:15 [21933569] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
Часто встречается какой-то "Visitor". Что это такое? function CookieVisitorProc CookieVisitor TCefFastCookieVisitor OnNavigationVisitorResultAvailable |
25 июл 19, 13:00 [21934276] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
А есть у кого простой пример работы с куками? Как задать папку хранения, например? Т.к. то ,что есть здесь http://parsing-and-i.blogspot.com/2013/01/tchromium-cookies-in-delphi.html уже устарело |
25 июл 19, 13:01 [21934277] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
GlobalCEFApp.Cache := Теперь и кэш, и куки хранятся в общей папке |
||
25 июл 19, 13:25 [21934317] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
Мало того, все настройки нужно выполнять до строки GlobalCEFApp.StartMainProcess; см. пример в файле SimpleBrowser2.dpr |
25 июл 19, 16:13 [21934573] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
ппц :( это сложнее, чем я ожидал + 10 в карму, есть поможете понять, как после загрузки страницы найти определённый текст и ссылку, а потом и "щёлкнуть" по ней |
20 авг 19, 12:58 [21953359] Ответить | Цитировать Сообщить модератору |
sql2012 Member Откуда: РФ Сообщений: 776 |
1. исходный текст не получается? 2. в тексте не получается найти нужное? 3. в найденном не получается извлечь href? 4. не получается вызвать загрузку по указанному url? на каком пункте непонимание? |
||
20 авг 19, 13:54 [21953446] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
Есть примеры процедур SimpleNodeSearch и SimpleDOMIteration в демках. Разбираю их. Как я понял из примеров и комментариев, нужно использовать OnProcessMessageReceived. да, я так и делаю: GlobalCEFApp.OnProcessMessageReceived := GlobalCEFApp_OnProcessMessageReceived;
Далее. В качестве параметра в SimpleNodeSearch и в SimpleDOMIteration нужно передать aDocument: ICefDomDocument, т.к. обе процедуры принимают его на вход. Вот тут и начинаются танцы с бубном. Событие GlobalCEFApp_OnProcessMessageReceived получает и обрабатывает сообщения. Я знаю, как послать сообщение: browser.SendProcessMessage() Теперь остаётся понять: откуда его правильно посылать? здесь автор меня запутал https://www.briskbard.com/forum/viewtopic.php?f=8&t=861&p=3993 то пишет, что нужно: frame.SendProcessMessage(PID_BROWSER, msg); а потом, как я вроде бы понял, это неправильно. После окончательной загрузки страницы ведь это нужно делать? В каком событии? К сообщению приложен файл. Размер - 3Kb |
||||
20 авг 19, 14:13 [21953467] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12589 |
|
||
20 авг 19, 15:03 [21953526] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
Да, отсутствие нужных знаний и навыков ![]() |
20 авг 19, 15:19 [21953547] Ответить | Цитировать Сообщить модератору |
DarkMaster Member Откуда: Donetsk,Ukraine Сообщений: 6441 |
X11, Разметка произвольная? Может просто тупо внедрить на страницу свой JS и уже с его помощью искать и "кликать" по ссылкам? |
20 авг 19, 15:37 [21953561] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
Может быть, я не знаю. Я пока ещё даже искать не научился. |
20 авг 19, 15:50 [21953574] Ответить | Цитировать Сообщить модератору |
энди Member Откуда: Киров, Россия Сообщений: 1201 |
Мне казалось бы какой-то пример работы CEF без визуального рендера. |
20 авг 19, 16:18 [21953612] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
эммм, что? |
20 авг 19, 16:19 [21953615] Ответить | Цитировать Сообщить модератору |
Saller Member Откуда: exUSSR Сообщений: 1141 |
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(); } } } } |
||
20 авг 19, 17:06 [21953675] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
это точно для cef4delphi? |
20 авг 19, 17:08 [21953678] Ответить | Цитировать Сообщить модератору |
Saller Member Откуда: exUSSR Сообщений: 1141 |
X11, Да. Проверял на странице данной темы. Или давай ссылку на сайт, на котором нужно жмякнуть ссылку. |
20 авг 19, 17:11 [21953682] Ответить | Цитировать Сообщить модератору |
Gator Member Откуда: Москва Сообщений: 14980 |
Жмакай на сиквел.ру |
||
20 авг 19, 19:46 [21953770] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
так это ж не дельфи-код |
20 авг 19, 19:48 [21953771] Ответить | Цитировать Сообщить модератору |
X11 Member Откуда: Kharkiv, Ukraine Сообщений: 15044 |
doska.plus |
||
20 авг 19, 19:49 [21953772] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 вперед Ctrl→ все |
Все форумы / Delphi | ![]() |