今回はseleniumについて、データが上手く取れないなぁと悩んだときに大概引っかかってる要因となっているiframeと言うなのHTML特有の作りについて解説していきたいと思います。
iframeの簡単な説明をして、その後seleniumでiframeに対応するためのswitch_toメソッドの紹介をしていきます。
では、いってみましょう。
IFRAME(アイフレーム)とは?
では、まずはIFRAMEとはそもそも何か?と言うところから始めます。
iframeとは、HTMLの要素(タグ)の一つで、Webページ内に矩形の領域を設け、別のWebページなどを読み込んで表示するもの。
http://e-words.jp/w/iframe.html
定義だけみてもよくわからないかもですが、IFRAMEとはinline frameの略で、定義にもあるように別のWebページを読み込んでインラインで表示するものです。
インラインとは、ざっくりいってしまうと、基本のHTMLの中に、別のHTMLドキュメントをもう一個付け加えている感じ。要は、ページの中にさらにページがあるんだ、ってノンプロ的には理解してしまえばいいかと思います(ざっくりすぎ汗)
一般的にiframeが利用されるケースとしては、google mapやtwitter/facebookなどのタイムラインをページ内に表示するケースで利用されるケースが多いですが、それ以外でも実は結構iframeで表示されているコンテンツがページ内に存在することがあります。
IFRAMEの基本のき
そもそもIFRAMEがどう言う設定(コード)なのかが、理解できないとこの後の問題が発生する理由や発見の仕方が理解しにくくなるので、脱線気味ではありますが、IFRAMEの基本のきを解説していきたいと思います。
IFRAMEコード
ざっくりやると以下のようなやつです。idとかは別になんでもいいのですが、肝は①iframeと言うタグであること②srcで埋め込むページのURLを指定することの2点になります。
<iframe id="inline-frame"
width="表示幅"
height="表示高"
src="埋め込むページのURL">
</iframe>要はIFRAMEとは?
要はさっきの肝①で書いたようにHTMLタグの一種です。詳しく理解されたい方はmozila docを貼っておきましたので、お読みください。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/iframe
seleniumで要素指定するときにiframeがあると?
シンプルに要素指定しても取得できません。なんで動かないのか?ってよくハマると思いますが、そうしたら、developer toolとかでiframeって検索して、iframeないに指定したい要素が入ってないか調べてみるといいと思います。
別にコードが間違ってるわけではなく、iframe内にデータがあるので、以下で紹介するswich_toと言うメソッドを利用して、iframe内に入っていかないと動作しないだけです。

