【AutoIT】IEでClassNameを指定して要素を取得する方法

AutoIT

idもnameも指定されていない要素を取得したい時はどうしよう?

AutoITを使用してIEで要素を特定する際に、idもnameも指定されていない要素の場合困りますよね。

今回は、classとタグ名を指定して要素を特定する方法を紹介します。

スクリプトの説明

#include ; googleをIEで開く $oIE = _IECreate(“https://google.com/”) _IELoadWait($oIE) ; 検索ボックスに「IT業務効率化の達人」と入力 $search=getElementsByClassName(“input”,”gLFyf gsfi”) $search.value=”IT業務効率化の達人” Sleep(5000) ; google検索ボタンを押す $search=getElementsByClassName(“input”,”gNO89b”) _IEAction($search,”click”) _IELoadWait($oIE) Sleep(5000) ; IEの終了 _IEQuit($oIE) ; Class名とタグ名を指定して要素を取得する Func getElementsByClassName($tName,$cName) ; タグ名と一致する要素を全て取得 $tags = $oIE.document.GetElementsByTagName($tName) ; 要素のclass名を1つづつチェック For $tag in $tags $class_value = $tag.GetAttribute(“class”) ; 指定したclass名と一致したら要素を返す If $class_value = $cName Then return $tag EndIf Next EndFunc

Class名を指定して要素を取得する以外の部分の説明は省略します。

getElementsByClassNameは自作関数です。$tNameはタグ名。$cNameはClass名を指定します。
$oIE.document.GetElementsByTagName($tName)で、指定したタグの要素を全て取得します。
$class_value = $tag.GetAttribute(“class”)で、該当タグのClass名を取得しています。
If 文でClass名と一致した要素を返しています。

$search=getElementsByClassName(“input”,”gLFyf gsfi”)でClass名「gLFyf gsfi」のinput要素を指定して、要素のオブジェクトを返しています。
このオブジェクトを使って、_IEAction($search,”click”)のようにクリックなどの操作をしています。

動作の様子

例として、Googleで検索する処理を自動化しています。

まとめ

AutoITでClass名を指定して要素を取得、操作する方法を紹介しました。最近は、idやnameが指定されていない要素も多いことから、Class名を指定する必要がある場面も多くなると思います。

Webを使った全ての動作を自動化できることを目指して、今後も様々な要素技術を紹介していきます。

コメント

タイトルとURLをコピーしました