1

IE を起動し、ページに移動してテキストを検索するスクリプトがあります。

$ie = new-object -com "InternetExplorer.Application"
$ie.Visible = $true
$ie.Navigate("http://www.google.com")
$doc = $ie.Document
if ($doc -eq $null)
{
    Write-Host "The document is null."
    return
}
$tb1 = $doc.getElementsByName("q") # a text box
$tb1.value = "search text";
$btn = $doc.getElementsByName("btnG")
$btn.click()

これを ps1 ファイルとして保存し、コマンド ラインから実行します...しかし、返されるドキュメント オブジェクト$ie.Documentは常に null です。

私は何を間違っていますか?

また、インタープリター モードでスクリプトを 1 行ずつ実行すると、ドキュメントは返されますが、次の行で次の$tb = $doc.getElementsByName("q")エラーが発生します。プロパティ '値' がこのオブジェクトに見つかりません。存在し、設定可能であることを確認してください。

では、テキスト ボックスの値を設定するにはどうすればよいでしょうか。

4

2 に答える 2

4

$doc を割り当てる前に、IE がページの読み込みを完了したかどうかを確認する必要があります。例えば、

while ($ie.busy) {
#Sleep a bit
}

検索テキストを入力してボタンをクリックするために同じコードを試しましたが、うまくいきませんでした。したがって、コードを次のように変更することになりました

$ie = new-object -com "InternetExplorer.Application"
$ie.Visible = $true
$ie.Navigate("http://www.google.com")
While ($ie.Busy) {
Sleep 2
}
$doc = $ie.Document

$btns = $doc.getElementsByTagName("input")
$SearchText = $btns | ? { $_.Name -eq "q" }
$SearchText.value = "search text"
$SearchButton = $btns | ? { $_.Name -eq "btnG" }
$SearchButton.click()
于 2010-12-13T08:09:59.670 に答える