У меня есть tChromium для работы под Delphi 7, все должно работать одинаково.
Есть шаги, которые я взял для чтения элементов из DOM
Сначала я получил обертку от этого проекта: https://code.google.com/p/delphichromiumembedded/downloads/detail?name=dcef-r306.7z&can=2&q=
Существует также одна для XE2, не займет много, чтобы преобразовать, что XE3, если вам нужна помощь в этом, я с радостью помогу по запросу.
Затем объявить начало и конец в tchromium
procedure TMainForm.crmLoadStart(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame); begin
if (browser <> nil) and (browser.GetWindowHandle = crm.BrowserHandle) and ((frame = nil) or (frame.IsMain)) then FLoading := True;
end;
,
procedure TMainForm.crmLoadEnd(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
if (browser <> nil) and (browser.GetWindowHandle = crm.BrowserHandle) and ((frame = nil) or (frame.IsMain)) then begin
FLoading := False;
// see if loaded
while(httpStatusCode <> 200) do begin
Application.ProcessMessages;
Sleep(50);
end;
browser.GetMainFrame.VisitDomProc(DomProc);
end;
end;
Объявить процедуру, которая называется domproc как так:
procedure DomProc(const Doc: ICefDomDocument);
var
Node: ICefDomNode;
begin
url := Doc.BaseUrl;
if(url='www.goodwebsite.com') then // check if it is the right page and not add
Node := Doc.Body.Document.GetElementById('idofwhatyouarelookingfor');
Node.SetElementAttribute('value','Hello world :D');
end;
Это был самый надежный способ я до сих пор, вам нужно убедиться, что страница хорошо загружена и что вы получаете дом для righ t кадров.
Надеюсь, что это поможет вам, не забудьте проверить код примера в ссылке для загрузки выше, что очень помогло мне.
Получайте удовольствие от кодирования, скалы Delphi!
Зависит от версии Chromium, которую вы используете. Насколько я помню в нескольких версиях, DOM-итерация вообще не работала. – TLama
Последняя версия, загружаемая с официального сайта – LuckyD
Если мы говорим об обертке ['CEF1'] (https://code.google.com/p/delphichromiumembedded/) (поскольку существует также [' CEF3'] (https : //code.google.com/p/dcef3/), то я боюсь, что вы столкнулись именно с этой проблемой (похоже, ['происходит в CEF3'] (https://code.google. com/p/dcef3/issues/detail? id = 10)). Вы можете попробовать более старую версию 'CEF1' (не могу сказать, какая из них самая последняя, где это работает) и проверить, что изменилось с этой версии. – TLama