ALL Program Selenium VBA

【VBA×Selenium】outerHTMLの使い方【注意点あり】

VBA×SeleniumのouterHTMLの使い方(注意点あり)
これまでVBAIE制御で「outerHTML」を使っていましたが、
Seleniumで「outerHTML」が使えません
どうすれば使えるようになりますか?
 

こんな疑問について回答します。

 
 

なぜouterHTMLが使えないの?

結論から先に述べると、SeleniumouterHTMLは使用できます

しかし、VBAにおけるSelenium制御となると、VBE上のコーディング自動補正機能が上手く行かず
outerHTML正しくプログラム認識されずに、使えないと結論づけてしまう人が多い印象です。

具体的には、このような感じ。

コーディング例

■正しい記入例
driver.FindElementByID("〇〇〇").Attribute("outerHTML")

■間違った記入例
driver.FindElementByID("〇〇〇").Attribute("outerHtml")

↑において 赤字で強調していますが、outerHTML大文字アルファベット含め正しく入力する必要があります。

同じことを繰り返し言っちゃいますが、VBE上ではSeleniumに関するプログラムコードの自動補完機能が乏しいから、こうなってしまいます。
VBA×InternetExploreのDOM操作の場合では、「outerhtml」と入力すれば「outerHTML」と自動補正してくれたからこそ、今回の場合は気づきにくいポイントですね。
Nakamura
 

といった形で、ほぼ結論は書いちゃっていますが、次段で 正しいコーディング例を紹介します。

 

outerHTMLの使用方法

以下の構文を使えば、VBA×Seleniumでも outerHTMLが使用できます

構文

driver.FindElementByID("〇〇〇").Attribute("outerHTML")

※前提※
・driverでChrome制御
・FindElementメソッドは適当なものであればOK(TagnameでもXPathでもOK)
・outerHTMLは「outerhtml」等に改変すると動かくなるので注意

.Attribute("outerHTML")」を使えば、
これまでのIE制御と同じように情報抽出できるので、知っていて損をしない手法ですね!
Nakamura
 

しかしながら、ちょっとだけコーディング時に注意点もあります。

次段で説明します。

 

注意点

前段で説明した「.Attribute("outerHTML")」ですが、注意点があります。

既に、冒頭の方で説明していますが、改めて。

.Attribute("outerHTML")」は 大文字・小文字も その通りに記載してあげないとVBA側で正しく認識してくれません

これってどう意味かというと 以下の通り。

注意ポイント

■正しい記入例
driver.FindElementByID("〇〇〇").Attribute("outerHTML")

■間違った記入例
driver.FindElementByID("〇〇〇").Attribute("outerHtml")
driver.FindElementByID("〇〇〇").Attribute("OuterHTML")
driver.FindElementByID("〇〇〇").Attribute("OuterHtml")

"outerHTML"は正しく入力しましょうね。
Nakamura
 

VBAでIE制御する場合と、Selenium制御する場合を比較してみましょう。

構文

■IE制御の場合(変数ojtにIEブラウザ格納している前提)
ojt.document.getElementByID("○○○").outerHTML

■Seleniumの場合(変数driverでChrome制御している前提)
driver.FindElementByID("〇〇〇").Attribute("outerHTML")

Seleniumの方がコーディングが やや長くなる傾向がありますのね。
Nakamura
 

知ってしまえばこんなものですので、是非ぜひ Seleniumライフを充実させてください。

 

終わりに

VBA×SeleniumはGoogle検索しても、欲しい情報がクリティカルに出てこないから、結構キツイですよね。

なんといいますか、Selenium利用者人口が少ないことを痛感させれます。笑
Nakamura

すごく便利なのに勿体ないですよね。

 

ちなみに、VBA×Seleniumにおける「innerText」の使用方法や注意点についても、
別記事でまとめてますので、よろしければどうぞ。(所要時間:3分くらい)

【VBA×Selenium】innerTextの使い方【注意点あり】
【VBA×Selenium】innerTextの使い方【注意点あり】

続きを見る

 

今後も、数少ない VBA×Selenium利用者の人向けに、有益そうな情報がありましたら発信していきます。

せっかくの同志の皆様と出会えたことに感謝しつつ、今回はここまでとさせていただきます。

これからもNakamuraBlogをどうぞよろしくお願いいたします。

おわり。

 




  • この記事を書いた人

Nakamura(nkmr)

NakamuraBlog(ナカログ)運営 [ 2.5万PV/月 ] │ブロガー│ 【経歴】IT会社に新卒入社 ▶︎ 通用しない ▶︎ プログラミングに出会う ▶︎ 年間1億円以上のコスト削減プログラムを開発 ▶︎ 会社賞受賞 ▶︎ 少しでも世の中の苦しんでる私と似た人に役に立てればと思いブログを開設。 ● 文系がプログラムと出会って会社員人生が変わった人。 ● 2020年より「嫁を置いて1人旅」の旅動画を投稿開始。

-ALL, Program, Selenium, VBA
-, , ,