pythonのseleniumで要素をボタンや画像をクリックしたい時に、方法が分からない人もいるかもしれません。そこで、今回はpythonのseleniumでクリック動作を指示する方法について解説していきます。
ここで学べる事:
- pythonのseleniumで取得した要素(画像やボタンなど)をクリックする方法
Contents
seleniumで取得した要素をクリックするためのPythonライブラリ
今回説明するのはseleniumのライブラリでfind_elementを使った要素取得の解説です。画像や要素をクリックするために必要なライブラリは、以下が前提です。
- seleniumはブラウザ操作を自動化するライブラリです。
- webdriverは、Chrome()やFirefox()といった操作するブラウザを選択します
seleniumでクリックを行うステップ
seleniumでクリックを行うためには以下の2ステップが必要です。
- find_elementで要素を取得
- 取得した要素に.click()でクリックを指定
それぞれ解説していきます。
また、要素や画像をクリックするサンプルコードは、「Googleの検索窓をGoogleの画像検索窓にする」ケースを紹介します。
具体的には、以下のGoogle検索窓が表示されている状態で、以下画面キャプチャの右上に表示されている「画像」をクリックすることが本記事の解説のゴールです。
対象の作業ページと対象のクリック要素が決まったらコードの紹介を以降で行っていきます。コードはすべて必要な認識を持ちましょう。
まずは必要なライブラリのインポートとChromeで対象ページを開く
まずはseleniumのインポートとChromeで作業の対象ページ(今回はgoogleのトップページで検索窓を表示)を開きます。以下の対象コードを実行します。
1 2 3 4 |
// webdriverでChromeを起動⇒そして該当URLをChromeで開く from selenium import webdriver driver = webdriver.Chrome() //chrome起動 driver.get('https://www.google.co.jp/')//chromeでgoogleページを表示 |
ここまでを実行すると、以下画像のようにgoogleのトップページが表示されます。
この画面が表示されたら、クリックしたい要素にフォーカスします。クリックしたい要素を指定するには次で説明するfind_elementで要素を指定します。次の説明を見てましょう。
find_elementで要素を取得
クリックするためには、クリックする個所を特定する必要があります。クリックしたい箇所の特定はfind_elementを使います。
find_elementのメソッドの中で、今回はfind_element_by_xpathを使ってクリックしたい要素を指定します。現時点のクリックしたい箇所のxpathは以下のようにないます。
1 2 |
// elemの変数を用意して、elemの変数にクリックしたい「画像」のxpathの情報を格納している。 elem = driver.find_element_by_xpath('//*[@id="gb"]/div/div[1]/div/div[2]/a') |
xpathを本記事では紹介しましたがfind_elementは様々なメソッドがあります。他のfind_elementを知りたい場合は下記の記事をチェックしてください。
xpathの取得方法
デベロッパーモードはWindowsであればF12(Macは Command + Option + I キー)で開くことができます。デベロッパーモードを開いたらキャプチャの下にデベロッパーモードが表示されます。表示されたらデベロッパーモード左上のチェックボタンを押して、クリックしたい要素を押します。
クリックしたい要素を押したら、デベロッパーモードの画面に該当する要素が薄い青色でマスクされた箇所が出てきます。(画像の④)そうしたら右クリックを押して、「Copy」→「Copy XPath」をクリックします。
ここまでで、クリックしたい要素を指定できている状態です。
クリックした要素を指定できたら、最後にクリックを指定します。
取得した要素に.click()でクリックを指定
1 2 |
// 先ほど指定したクリックしたい要素を格納した変数elemにクリックを指示する elem.click() |
まとめ:seleniumで要素をクリックするコード
ここまでで紹介してきたコードをまとめて記載します。以下を実行することで要素をクリックすることが可能です。
1 2 3 4 5 6 7 8 9 10 |
// webdriverでChromeを起動⇒そして該当URLをChromeで開く from selenium import webdriver driver = webdriver.Chrome() //chrome起動 driver.get('https://www.google.co.jp/')//chromeでgoogleページを表示 // elemの変数を用意して、elemの変数にクリックしたい「画像」のxpathの情報を格納している。 elem = driver.find_element_by_xpath('//*[@id="gb"]/div/div[1]/div/div[2]/a') // 先ほど指定したクリックしたい要素を格納した変数elemにクリックを指示する elem.click() |