使用InternetExplorer.Application获取会话cookie

时间:2011-02-04 22:41:38

标签: javascript automation

假设我已经使用InternetExplorer.Application以编程方式导航到一个网站,该网站又设置了一个会话cookie,我该如何访问该cookie的值(此时仅在内存中)?

我能想到的唯一方法是将一些客户端脚本添加到Document.Body.InnerHTML中,然后使用.Navigate(“javascript:functionName()”)调用该脚本。假设该函数反过来创建一个元素,其中包含我可以在那时检索的cookie的值。

然而,这似乎令人费解,我还没有成功。请告诉我有一个更简单的方法。

编辑:Rick Strahl在另一个论坛上回答了我的问题。显然我没有仔细阅读文档,因为有一个document.cookie属性可以给我答案而不需要任何复杂的过程。

现在,我是否对自己的问题进行投票? :)

2 个答案:

答案 0 :(得分:1)

为了完整起见,我将我在上面的问题中添加的答案作为答案。

答案很简单,有一个document.cookie属性可以提供我想要的价值。我发现,困难在于找到可通过InternetExplorer.Application对象访问的DOM的官方文档。 Visual Studio中的Intellisense没有显示这个属性(至少对我而言)所以我假设没有这个属性。

我想我在这里找到了DOM的官方文档:

http://msdn.microsoft.com/en-us/library/ms535862(v=VS.85).aspx

和cookie属性具体在这里:

http://msdn.microsoft.com/en-us/library/ms533693(v=vs.85).aspx

希望这可以帮助别人避免在将来追逐他们的尾巴。

答案 1 :(得分:0)

感谢brettbaggott指出我正确的方向。以下是感兴趣的人的代码:

Private Declare Sub Sleep Lib "kernel32" _
    (ByVal dwMilliseconds As Long)

Private Function getCookie()
    Dim myIe As Object
    Set myIe = CreateObject("InternetExplorer.Application")
    myIe.Visible = False
    myIe.Navigate "http://someurl"
    Do While myIe.Busy
        Sleep 20
    Loop
    getCookie= myIe.Document.cookie
End Function