Delphi检查GetElementByID返回值的有效性

Posted 程序员之梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi检查GetElementByID返回值的有效性相关的知识,希望对你有一定的参考价值。

Delphi 可以像javascript 脚本语言一样使用GetElementByID方法访问网页中指定ID的元素,一般要配合TWebBrowser组件使用。首先使用TWebBrowser浏览网页,然后访问网页的元素,例如:

procedure TForm1.Button1Click(Sender: TObject);
var
  aElement: OleVariant;
begin
  aElement := WebBrowser1.OleObject.Document.GetElementByID(‘btnLogin‘);
  aElement.value := ‘登录按钮‘;
  aElement.click;
end;

如果网页中存在ID为“btnLogin”的按钮,则以上代码没有任何问题,如果不存在,则对aElement进行的设置值和点击操作都将引发异常,所以应该对GetElementByID的返回值进行检查。但是对OleVariant类型变量的有效性进行检查却非常困难,通过使用VarType函数对aElement进行类型检查可以知道该变量是varDispatch类型的,所以可以转换成接口进行检查返回值是否有效,完整代码如下:

procedure TForm1.Button1Click(Sender: TObject);
var
  aElement: OleVariant;
begin
  aElement := WebBrowser1.OleObject.Document.GetElementByID(‘btnLogin‘);
  if IDispatch(aElement) <> nil then //对返回值进行有效性检查
  begin
    aElement.value := ‘登录按钮‘;
    aElement.click;
  end;
end;

以上是关于Delphi检查GetElementByID返回值的有效性的主要内容,如果未能解决你的问题,请参考以下文章

delphi 如何检查指定服务的状态

Delphi TWebBrowser[6] 获取网页所有链接(元素)

如何在 Delphi 中禁用关于“返回值......可能未定义”的警告?

Delphi XE 中的 VaComm

无效的 LngLat 对象:(NaN, NaN) - getElementById 不返回值

在Delphi中如何获得SQL中存储过程的返回值?