前回、Pythonからブラウザを立ち上げることができました。
次は、テキストボックスに文字を入力したり、ボタンをクリックしたりしたいですね。
というわけで、その方法をまとめてみました。
文字を入力したりクリックしたりするには?
「HTML Element」に対して「メソッド」を実行すれば良いです。
日本語で言う「主語」と「述語」のようなもので、「ボタン」を「クリックする」の2つをコードに記述します。
ですので、ブラウザに表示されている「HTML Element」を取得し、それに対して「クリックする」などのメソッドを使います。
「HTML Element」を取得するには?
立ち上げたブラウザに対し、「find_element_by_〇〇」を使います。
これを使うと、該当する最初の要素が取得できます。
「find_element_by_〇〇」は8種類あります。
- find_element_by_id:IDで取得
- find_element_by_class_name:クラス名で取得
- find_element_by_tag_name:要素名(タグ名)で取得
- find_element_by_name:name属性で取得
- find_element_by_css_selector:CSSセレクタで取得
- find_element_by_link_text:アンカーリンクテキスト(完全一致)で取得
- find_element_by_partial_link_text:アンカーリンクテキスト(部分一致)で取得
- find_element_by_xpath:XPathで取得
該当する2番目以降の要素や、複数の要素を取得したい場合は、「find_elements_by_〇〇」を使います。
種類は同じく8種類あり、「elements」と複数形にするだけです。
メソッドの種類は?
主に使うものは2つ。
- send_keys('〇〇'):文字を入力する
- click():クリックする
この2つで事足りることが多いようです。
他にもいくつかあるようで、
- submit():「input type="submit"」に対して実行・送信する
- clear():テキストボックスを空にする
- select_by_〇〇:「select」タグに対して、リスト選択をする
があります。
※selectタグについて詳しく書きました。 以前、Python+Seleniumで要素の取得・操作方法をまとめた時、Select要素を使う用事がなかったので簡単に書いていたものの、今回扱うことになったので、書き記しておきます。 ま ... 続きを見る
インポート文を追加するだけ!Python+SeleniumでSelect要素を取得・操作するには?
試しにGoogle検索を自動化すると?
from selenium import webdriver
Word = input('検索キーワードを入力してください')
driver = webdriver.Chrome('【chromedriver.exe】の保存場所')
driver.get('https://www.google.com/')
driver.find_element_by_name('q').send_keys(Word)
driver.find_element_by_name('btnK').submit()
Google検索のサイトはクラス名がランダムっぽいので、固定されているname属性で要素を取得します。
submit()は「btnK」にしていますが、「q」にしても検索されます。
まとめ
Pythonでブラウザの要素を取得するには「find_element(s)_by_〇〇」を使い、send_keys()で文字を入力、click()でクリックすることができます。
実際にコードを書くためにはHTMLの解析が肝心で、JavaScriptでさんざんやってきた経験がここで活きてくるとは驚きでした。