【问题标题】:InternetExplorer.Application ReadyState is always blankInternetExplorer.Application ReadyState 始终为空白
【发布时间】:2018-06-17 22:47:40
【问题描述】:

我的脚本中有这个非常简单的 sn-p:

$ie = New-Object -ComObject InternetExplorer.Application
$ie.visible = $true
$ie.navigate("https://10.0.0.1/ccmadmin/phoneFindList.do")
while ($ie.readyState -ne 4) { Start-Sleep -Milliseconds 100; Write-Host $ie.readyState }

我之前确实使用过非常相似的代码,没有任何问题,但是由于某种原因,当我运行此脚本时,$ie.readyState 只包含一个空白值,因此将一个空字符串打印到控制台,并且它永远不会设置为4(或其他任何事情。

我可以看到该页面有一个证书错误,但我很确定这应该仍然有效。

什么可能导致这个问题?

当单步执行脚本时,我可以看到 readyState 一直到第 3 行包含一个值 0,我们在这里调用 navigate - 此时 readyState 设置为空字符串或空白...

【问题讨论】:

  • 为什么你很确定它应该还能工作?
  • @Bill_Stewart 根据我看到的代码示例,在规避证书问题之前与上面的代码相同(通过将click 发送到继续页面链接),而且事实上这是昨天工作(至少脚本已经过了那个阶段)。
  • 我刚刚测试了您的帖子,指向了我的一个网站并获得了预期的输出。 1 1 1 1 1 3 4 ...我还访问了其他几个公共站点,每次都到达 4 个。
  • @postanote 我以前可能多次使用过此代码,所以我知道它确实有效。我的问题更多是关于为什么它在我的情况下可能不起作用,或者我必须尝试哪些选项来尝试调试这个烦人的问题?
  • 您的似乎是环境问题与 PoSH 问题。因为当我在您的站点上运行您的块时,我得到 1 4。至于故障排除,我会启动 fiddler 并查看您的站点作为响应或在另一台机器上尝试的内容。我还会测量它以检查响应时间,甚至设置一个调试器以附加到 IE 进程并查看吐出的内容。

标签: powershell internet-explorer automation


【解决方案1】:

当您查看 MSDN 和 W3C 站点上底层 IHTMLXMLHttp* 信息的所有 API 信息时,没有迹象表明使用 SSL 限制。跟踪请求并查看它所挂起的属性。

READYSTATE_UNINITIALIZED (0)

The object has been created, but not initialized (the IHTMLXMLHttpRequest::open method has not been called).

READYSTATE_LOADING (1)

A request has been opened, but the IHTMLXMLHttpRequest::send method has not been called. 

READYSTATE_LOADED (2)

The IHTMLXMLHttpRequest::send method has been called. No data is available yet. 

READYSTATE_INTERACTIVE (3)

Some data has been received; however, IHTMLXMLHttpRequest::responseText is not available. 

READYSTATE_COMPLETE (4)

All the data has been received. 

【讨论】:

  • 您好 postanote 我不知道您的意思。另外,如果readyState 在第一次返回 0 几毫秒后返回一个空字符串,这意味着什么?这毫无意义……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 2011-03-15
  • 2011-07-18
  • 1970-01-01
相关资源
最近更新 更多