几天前我升级到 Windows 10,但我的脚本之一无法正常工作。这个简单的独立脚本演示了这个问题:
$erroractionpreference = "Continue"
$ie = New-Object -ComObject InternetExplorer.Application
$ie.visible = $True
$url = "http://gtr1.backtest.org/2013/?sp500.a:et1"
$ie.Navigate($url)
while ($ie.busy) {Start-Sleep 1}
$backtest = $ie.document.getElementsByName("submit") |
Where-Object {$_.value -eq "Run Backtest"}
$backtest.click() #shows SP500 backtest results
while ($ie.busy) {Start-Sleep 1}
$screener = $ie.document.getElementsByName("submit") |
Where-Object {$_.value -eq "Run Screener"}
$screener.click() #shows list of SP500 stocks
while ($ie.busy) {Start-Sleep 1}
程序通过一个简单的屏幕导航到一个股票回测网站,点击“运行回测”按钮,这部分工作正常;我可以在可见的 IE 会话中查看进度。应该发生的是,然后单击“运行筛选器”按钮并显示 SP500 股票列表。
但是更新的(第一次点击后)网站信息显然不会回到脚本中。一两次我看到一个 RPC DISCONNECTED 类型错误,但我无法重现它。这是通常的错误信息:
HRESULT 异常:0x800A138A 在 C:\Users\MD\OneDrive\Documents\Mechanical Investing\GTR1\Daily Runs\Temp1.ps1:12 char:1 + $screener = $ie.document.getElementsByName("提交") | 哪里对象 { ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], COMException + FullyQualifiedErrorId:System.Runtime.InteropServices.COMException
所以初始导航到网站,第一个按钮点击工作正常,但第二个没有。我是否以管理员身份运行都没有关系,它在命令提示符下不起作用。我有一个类似的脚本在 Windows 7 上运行了很长时间,没有任何问题。我确实在防火墙设置中将 PowerShell 添加为允许的应用程序,但这并没有帮助。
有任何想法吗?