環境
- Windows7
- IE11
IE起動
#######################
# IE起動と画面表示
#######################
$ie = New-Object -ComObject InternetExplorer.Application # IE起動
$ie.Navigate("hogehoge.ne.jp") # URL指定
$ie.Visible = $true # 表示
入力
- IEを起動してWindowsセキュリティ認証のダイアログが起動した際にうまい操作方法がわからなかったので直接キー入力でどうにかする
[System.Windows.Forms.SendKeys]::SendWait("%({TAB})") # Ctrl + Tab でIEの認証ダイアログをアクティベート
Start-Sleep -s 1 # インターバル
[System.Windows.Forms.SendKeys]::SendWait("userid") # アカウント入力
[System.Windows.Forms.SendKeys]::SendWait("({TAB})") # Tab で次項目(パスワード)へ移動
Start-Sleep -s 1 # インターバル
[System.Windows.Forms.SendKeys]::SendWait("password") # パスワード入力
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}") # Enter 入力
コンテンツロード待ち
#######################
# ブラウザ上のコンテンツロード完了待ち
#######################
While($ie.Busy)
{ Start-Sleep -s 1 } #IE画面のロードが完了するまで、1秒待機をループ
画面操作
- 要素を取得したり値を入力したりクリックしたり
# 画面情報取得
$doc = $ie.Document
# 要素取得
$element = [System.__ComObject].InvokeMember(
"getElementById" # 指定方法にIDを使用
,[System.Reflection.BindingFlags]::InvokeMethod # おまじない
, $null # 不要パラメータ
, $doc # ページ情報オブジェクト
, "srchtxt" # ID名
)
# 値入力
$element.value = "hogehoge"
# 要素取得
$element = [System.__ComObject].InvokeMember(
"getElementById" # 指定方法にIDを使用
,[System.Reflection.BindingFlags]::InvokeMethod # おまじない
, $null # 不要パラメータ
, $doc # ページ情報オブジェクト
, "srchbtn" # ID名
)
# クリック
$element.click()
########################################
# ↑ではIdからの取得だが、
# Tag(ボタンとか)やClassからの取得の場合
########################################
$element = [System.__ComObject].InvokeMember( # 要素の取得 (特定のリンクを取得)
"getElementsByTagName" # 指定方法にClassを使用
,[System.Reflection.BindingFlags]::InvokeMethod # おまじない
, $null # 不要パラメータ
, $doc # ページ情報オブジェクト
, "input" # Class名
)| ? { $_.name -eq "commit" }
$element = $ie.Document.getElementsByTagName('A') |
where-object {
$_.innerText -eq 'いんなーテキスト'
}
保存
- IEの通知バーが出た時に保存
- これも、いけてる方法がわからなかったので直接キー入力
[System.Windows.Forms.SendKeys]::SendWait("%({S})") # Alt + S でデフォルトの保存フォルダに保存