我有一个TWebbrowser组件和一些按钮做东西。到目前为止,这种方法效果很好,但在一个程序中,我想点击网站上的一个按钮来显示其他信息,这些信息也应该被点击。
所以我得到了这个:
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-0').Click();
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-1').Click();
WebBrowser1.OleObject.Document.GetElementByID('linkDtlC0-2').Click();
然后我必须单击网站上的一个按钮才能显示要点击的下三个元素。到目前为止没有问题,但点击按钮后,网站需要几秒才能显示三个元素。
我的问题: 当我尝试在单击按钮后立即单击元素时,会导致错误,表示没有元素(尚未)使用此名称单击。当然我可以让我的程序等待几秒钟(更多)只是确定然后尝试点击,但我不想浪费时间所以我的问题是: 有没有办法检查TWebbrowser内的Document上是否存在元素(按名称)?
答案 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;