【问题标题】:Create Internet Explorer variable from shell.application object从 shell.application 对象创建 Internet Explorer 变量
【发布时间】:2015-06-15 13:49:39
【问题描述】:

我正在检索一个活动的 Internet Explorer 选项卡,以便为经过身份验证的站点运行自动化脚本。我需要将应用程序实例本身作为要操作的东西,因为我有一种方法可以导航到我想要的页面,因为按钮没有 ID 来调用它。

我首先在这里找到正确的页面,然后从那里开始一切顺利。

Dim oShell, oWSHShell, sTitle, wndw, bMatch, oSelect
set oShell =createobject("shell.application")
set oWSHShell = createobject("wscript.shell")
sHTMLTitle = "Add Account"

bMatch =false 
for each wndw in oShell.windows 
    if instr(lcase(typename(wndw.document)), "htmldocument") > 0 then 
        sTitle =wndw.document.title
        if Instr(sTitle, sHTMLTitle)<> 0  then 
            bMatch =true 
            exit for 
        end if 
    end if 
next 

有没有办法可以将 oShell 对象保存为以后可以引用的对象?我看到的任何关于声明 IE 对象的参考都是为了创建一个在这里不起作用的全新窗口,因为您必须重新验证自己并破坏整个目的。

【问题讨论】:

  • 我已经通过创建一个 IE 对象并导航到我需要访问的 URL 进行了一些测试,但是虽然这会保持身份验证/登录,但它会创建一个全新的 IE 实例,这不是我在找。另外,通过 Set IE = CreateObject("InternetExplorer.Application") 创建对象,然后在循环中使用 ie = wndw 不起作用

标签: internet-explorer vbscript


【解决方案1】:

如果我理解正确,那么根据您的评论,我认为您走在正确的轨道上。 wndw 是您的 IE 对象。但是在分配对象引用时需要使用Set 关键字。例如:

Set objSaveIE = Nothing

for each wndw in oShell.windows 
    if instr(lcase(typename(wndw.document)), "htmldocument") > 0 then 
        sTitle =wndw.document.title
        if Instr(sTitle, sHTMLTitle)<> 0  then 
            Set objSaveIE = wndw 
            exit for 
        end if 
    end if 
next

' Now you can use objSaveIE as you would any other IE object...
If Not objSaveIE Is Nothing Then objSaveIE.Navigate "www.google.com"

【讨论】:

  • 太好了,谢谢。我想使用 set 是从 VB 迁移到 VBS 的怪癖之一。
猜你喜欢
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
相关资源
最近更新 更多