今まで、IEの起動から操作までを下のコードを書いていた。
$ie=new-object -com InternetExplorer.Application
$ie.visible=$true
$ie.navigate("https://www.google.co.jp")
while($ie.Busy) { [Threading.Thread]::Sleep(300) }
ふと、気づくと、IEがちゃんとアクティブになっているのに、「$ie.busy」が、Falseだった。
ちょっと、調べてみたら、こんなのがあった。
readyState
# 0・・・初期化未完了状態(READYSTATE_UNINITIALIZED)
# 1・・・ロード中状態(READYSTATE_LOADING)
# 2・・・ロード完了状態(READYSTATE_LOADED)
# 3・・・操作可能状態(READYSTATE_INTERACTIVE)
# 4・・・全データ読込完了状態(READYSTATE_COMPLETE)
こんなコードにしてみた。
$ie=new-object -com InternetExplorer.Application
$ie.visible=$true
Write-debug " After visible ReadyState"
Write-debug $ie.readyState
$ie.navigate("https://www.google.co.jp")
Write-debug " After navigate ReadyState"
Write-debug $ie.readyState
for($timecnt = 0 ;$timecnt -lt 5 ;$timecnt++)
{
Start-Sleep -s 1
if( $ie.readyState -eq 4 )
{
Write-debug "B"
Write-debug $ie.readyState
Write-debug $ie.Busy
break;
}
Write-debug "A"
Write-debug $ie.readyState
Write-debug $ie.Busy
}
Write-debug "C"
Write-debug $ie.readyState
Write-debug $ie.Busy
実行結果
デバッグ: After visible ReadyState
デバッグ: 0
デバッグ: After navigate ReadyState
デバッグ: 1
デバッグ: B
デバッグ: 4
デバッグ: False
デバッグ: C
デバッグ: 4
デバッグ: False
本日の河上選手:お休み
22日 ~ 常滑