Selenium(Edge/Chrome)

Selenium「Edge/Chromeでボタンクリックをする id/Name/Class」【エクセルマクロ】

Edge/Chromでボタンをクリックする

Excel VBAマクロでEdge/Chromeを自動操作する際のクリック処理です。
クリックの基本です。

'■id要素をクリック
driver.FindElementById(“★★★”).Click
 
'■Name要素をクリック
driver.FindElementsByName(“★★★”)(●●●).Click
 
'■Class要素をクリック
driver.FindElementsByClass(“★★★”)(●●●).Click

記号★、●の意味

コード記号意味内容
★★★属性下記参照。
●●●添え字idの場合は不要(一つしかない為)
それ以外は先頭から〇番目を入力
※最初は1です。0ではありません。

idのサンプル(amazon)

idはhtml内で重複する事はありませんので、クリックするのは簡単です。
amazon検索ボタンのhtmlサンプルです。

/*■amazonのhtmlコード(検索ボタン)id*/
<span id="nav-search-submit-text" class="nav-search-submit-text nav-sprite>
          検索
</span>

検索ボタンは「id=”nav-search-submit-text”」とid属性が存在しています。

'■id要素をクリック
driver.FindElementById(“nav-search-submit-text”).Click
   
'■もちろんidを変数に入れてもOK
Dim SearchBtn as String
 
SearchBtn = "nav-search-submit-text"  
driver.FindElementById(SearchBtn).Click

classのサンプル(yahoo)

classはidと異なり、html内で重複する場合があります。
yahoo検索ボタンのhtmlサンプルです。

/*■yahooのhtmlコード(検索ボタン)class*/
<span class="PHOgFibMkQJ6zcDBLbga8">
          検索
</span>

yahoo検索ボタンはidは存在しませんが、「class=”PHOgFibMkQJ6zcDBLbga8″」とclass属性が存在しています。

'■class要素をクリック
driver.FindElementsByClass(“PHOgFibMkQJ6zcDBLbga8”)(1).Click
   
'■もちろんclassを変数に入れてもOK
Dim SearchBtn as String
   
SearchBtn = "PHOgFibMkQJ6zcDBLbga8"
driver.FindElementsByClass(SearchBtn)(1).Click

classはhtml内に重複して存在する可能性があります。
必ず添え字(今回であれば1)を入力して、html内のClassの位置の指定(上から〇番目)を指定する必要があります。

注意
添え字は必ず1スタートです。html内で指定したclassが1番目の場合、添え字で1を指定します。

nameのサンプル

classと基本的には同様なので割愛します。
html内に下記のような「name=」で始まる要素を探して下さい。

 
<input type="image" src="/login_btn.gif" alt="ログイン" name="logIn">
 

注意点

IE自動操作の場合、id以外は複数形の表現でした。(例)FindElementsByClass
SeleniumBasicの場合はid以外も単一形の表現が可能です。(例)FindElementByClass(sがない)
単一形の場合は、一番最初に出現した要素に対して処理を行います。
IE自動操作をではない表現のため、当方では基本使用していません。

SeleniumBasicについて

Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。

但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

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