VBscript从IE元素创建对象

时间:2019-02-01 13:09:49

标签: javascript html object vbscript element

我试图寻找答案,但无济于事。我每次都撞墙。 也许有人可以帮忙吗?

我正在尝试在网站上单击带有VBscript的元素。 这可行。但是,首先,我想检查元素是否存在循环。 如果不是通过以下代码得到的“无效使用null”错误,这将起作用。

如何创建对象以检查IE元素中是否存在该对象?

Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Navigate "url"
With IE.Document

Do
if not CreateObject(.getElementByID("formButton2343255")) is nothing then            
.getElementByID("formButton2343255").Click()
Exit Do
End if
WScript.Sleep 500 
Loop

SET objWshShell = Nothing
End With
End Function

我希望单击该按钮。但是在这种情况下,要么我的对象不存在,要么我无效地使用了null。

1 个答案:

答案 0 :(得分:0)

我尝试了您在我的自定义脚本中发布的代码,并认为我已经找到了解决方案。要检查元素是否存在,必须使用IsObject函数。但是,如果您尝试在DOM准备就绪之前使用它(即IE.ReadyState等于4),则会引发未指定的错误(典型的IE相关问题,很多怪癖)。

因此,我没有使用无限循环来等待元素存在,而是将其更改为等待DOM准备好;因此,在我打电话给IsObject时,它应该不再抛出错误,产生正确的结果,因此可以按预期进行检查。

下面的示例打开IE窗口并导航到https://stackoverflow.com;等待DOM准备就绪,然后单击左侧边栏(#nav-tags)上的“标签”菜单。因此,按预期导航到“标签”页面。非常像您的示例,因此您可以轻松地以此为指导来了解案例。

Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")

IE.Navigate "https://stackoverflow.com"
IE.Visible = True

'Wait til DOM is ready
Do Until IE.ReadyState = 4 : Loop

If IsObject(IE.Document.GetElementById("nav-tags")) Then
    IE.Document.GetElementById("nav-tags").Click()
End If

Set IE = Nothing