忘れっぽくなっているので、備忘録的に!
IEの操作で、IDがない要素の操作方法手順が良く分からなかったけど、下の方法で操作できるようになった。
IDが設定されている時には、「getElementById」で簡単に操作できるんだけど!
今回は、他のClassの値で、ユニークにできなかったので、uniqueIDを使った。
① TAGで一覧を取得する
例えば、
$wli = $docm.getElementsByTagName("li")
$wli
これで、一覧がコマンドラインに表示される。
同じTAGがあると、全部出る。
その中から、操作したいTAGの情報を探す。
これが、面倒くさい。
② 一覧からuniqueIDなどのClassNameで特定する。
(HTMLソースが変わると、そのたびに探しに行かなくてはならない。)
$wli = $docm.getElementsByTagName("li")
($wli | where {$_.uniqueID -eq "ms__id5"}).click()
VALUEがあるときには、VALUE値で探した方が楽
「実行」って、Valueのある場合
($wIE_Doc.getElementsByTagName("input") | where {$_.Value -eq "実行"}).click()
③ uniqueIDは、ちょっと環境が変わると値が、変わるので、
imgにOnclickがあるときには、srcがユニークなら、代替する。
SRCは、URLのフル指定で行う。
CLASSリストに載ってくるのでそれで判断する。
($wimg | where {$_.src -eq "http://hoge/Images/Normal.png"}).click()
結果、CLASSリストを調べてユニークであれば何でも使えそうだ。
_____________________________
Set-Variable uri41 'http://hoge/'
$userName="USER"
$userPwd="A"
$ie=new-object -com InternetExplorer.Application
$ie.visible=$true
$ie.navigate("$uri41")
#IEが開いたか確認しないと、ID名が取れずに、getElementByIDとかがエラーとなる
while($ie.Busy) { [Threading.Thread]::Sleep(3) }
# IDが設定されている時には、「getElementById」で簡単に操作できる。
$doc=$ie.document
$dom_userNAME=$doc.getElementById("userrid")
$dom_userNAME.value=$userName
$dom_userPWD=$doc.getElementById("password")
$dom_userPWD.value=$userPwd
$btn=$doc.getElementByID("LOGIN_BTN")
$btn.click()
#とりあえず LOGIN処理を待つ為、SLEEP
Start-Sleep -s 2
# IDのないエレメントは、タグ名称でサーチして、他の要素で特定する
# 今回は、タグ 「li」で、「uniqueID」で特定して操作
$wli = $doc.getElementsByTagName("li")
# TAGの「li」の要素を全部取得して表示するには、下の $wliのコメント取る
#$wli
# これは、TAG「li」のuniqueキー= ms__id5 で指定している
#
($wli | where {$_.uniqueID -eq "ms__id5"}).click()
# 次の画面が出るまで待つ
Start-Sleep -s 2
# IEを閉じる
$ie.quit()
______________________________________
本日の河上選手:おやすみ
明日から、蒲郡