2015年6月23日火曜日

PowerShell 

ちょっと仕事の合間にPowerShellを弄って、IEに対して自動操作をしてみた。

忘れっぽくなっているので、備忘録的に!

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()

    ______________________________________


    本日の河上選手:おやすみ
      明日から、蒲郡