こちらでブラウザをを起動できたので、次はブラウザを実際に操作してみます。
基本は、ページ内の要素(Element)を取得して、その要素に対して操作を要求します。
環境
- VSCode
- python 3.11.0
- Edge WEbDriver
使用するライブラリ
- selenium
パッケージのインストール方法についてはこちら
要素の取得方法
開発者ツール使って要素を特定
Edgeの場合、F12キーを押下することで開発者ツールを起動できます。
起動して「要素」タブを選ぶと、表示しているページの構成要素を見ることができます。
ここから、操作したい要素を特定し、アクセスするためのコードを書いていきます。
以下の入力フォームに文字列を入力してみます。
ブラウザを操作する
find_element()で要素を取得する
開発者ツールで見ると、入力フォームは以下のような記述でした。
この情報を使って、要素を取得します。
要素を取得するにはfind_element
を使用します。
from selenium import webdriver as wd from selenium.webdriver.common.by import By driver = wd.Edge(executable_path=r".\msedgedriver.exe") driver.get("http://google.com") input = driver.find_element(by=By.NAME, value="q")
第1引数に探し方、第2引数に探すキーワードを指定します。
今回はname
がアクセスしやすそうだったのでBy.NAME
で探しています。
他にも、以下の探し方があります。
- ID
- XPATH
- LINK_TEXT
- PARTIAL_LINK_TEXT
- NAME
- TAG_NAME
- CLASS_NAME
- CSS_SELECTOR
キー入力をエミュレートする
見つかった要素に対して文字列を入力させます。
input.send_keys("test")
文字が入力されました。
入力を確定する
入力した文字列で検索を実行します。
input.submit()
submit()
(送信)メソッドを呼べばOKです。
入力が確定し、画面が遷移しました。
おしまい
要素の取得は基本的にはこれの繰り返しです。
要素によっては都度可変なもの(今回の例だとclassが該当)もあるので、ユニークに識別できる情報を指定する必要があります。(htmlのことあまり知らないのでこれが苦手)