Delphi:Webbrowser.Document - >按ID

时间:2017-11-05 21:18:15

标签: delphi element twebbrowser

我有一个TWebbrowser组件和一些按钮做东西。到目前为止,这种方法效果很好,但在一个程序中,我想点击网站上的一个按钮来显示其他信息,这些信息也应该被点击。

所以我得到了这个:

WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-0').Click();
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-1').Click();
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-2').Click();

然后我必须单击网站上的一个按钮才能显示要点击的下三个元素。到目前为止没有问题,但点击按钮后,网站需要几秒才能显示三个元素。

我的问题: 当我尝试在单击按钮后立即单击元素时,会导致错误,表示没有元素(尚未)使用此名称单击。当然我可以让我的程序等待几秒钟(更多)只是确定然后尝试点击,但我不想浪费时间所以我的问题是: 有没有办法检查TWebbrowser内的Document上是否存在元素(按名称)?

1 个答案:

答案 0 :(得分:0)

检查元素是否存在:

uses
  MSHTML;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant);
var
  Element: IHTMLElement;
begin
  if pDisp = TWebBrowser(ASender).ControlInterface then
  begin
    Element := (WebBrowser1.Document as IHTMLDocument3).getElementById('linkDtlC0-3');
    if Assigned(Element) then
      Element.click;
  end;
end;