質問: $true #読み込み完了まで待機 While($ie.busy -eq $true -or ($ie.ReadyState -ne "4") ){ Start-Sleep -s 1 } #思いつくまま試してみた失敗作とエラー内容 <# foreach($elements In $ie.document.frames.item[0].document.body){ echo $elements.InnerHtml } (null 配列にインデックスを付けることはできません。) foreach($elements In $ie.document.frames[0].document.body){ echo $elements.InnerHtml } (型 System.__ComObject のオブジェクトにインデックスを付けることはできません。) foreach($elements In $ie.document.frames.document.body){ echo $elements.InnerHtml } (親要素だけが返ってくる) foreach($elements In $ie.document.frames.body){ echo $elements.InnerHtml } (親要素だけが返ってくる) foreach($elements In $ie.document.window.frames...){ echo $elements.InnerHtml } (何も返ってこない) foreach($elements In $ie.document.window.WindowFrameElement...){ echo $elements.InnerHtml } (何も返ってこない) #> ```
回答: framesはコレクションではないので、itemメソッドで取得する というstackoverflowのコードでframe毎に取得できました。 環境はWindows10、PowerShell 5.1、IE11です。 ``` $ie = New-Object -ComObject InternetExplorer.Application $ie.Navigate("http://www.tagindex.com/html_tag/frame/example_f01.html") $ie.Visible = $true While($ie.busy -eq $true -or ($ie.ReadyState -ne "4") ){ Start-Sleep -s 1 } $frames = $ie.document.frames #echo "left frame" #echo $frames.item(0).document #echo "right frame" #echo $frames.item(1).document for ($i=0; $i -lt $frames.length; $i++){ echo $frames.item($i).document } ```