[Python] Seleniumでブラウザ操作自動化を行う方法

目次

説明

今回はseleniumでchromeを開きgoogleのホームページに行き、

python seleniumと検索し、10秒後にchromeを閉じる動作をする、

プログラムを作ります。

環境

  • Windows
  • Chrome

ライブラリー

  • selenium
  • webdriver_manager
  • time

ステップ

  1. 準備
  2. ライブラリーのインポート
  3. ドライバー指定
  4. url指定
  5. ページを開く
  6. 要素取得&動作

準備

ライブラリーのインストール

  • selemium
    pip install selenium
  • webdriver_manager
    pip install webdriver_manager

ライブラリーのインポート

import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

ドライバー指定

driver = webdriver.Chrome(ChromeDriverManager().install())

url指定

url = 'https://www.google.com/'

ページを開く

driver.get(url)

要素取得&動作

time.sleep(2)
# 2秒間動作を遅らせる
search_box = driver.find_element_by_name("q")
# google検索ページのnameがqの要素を特定(検索欄)
search_box.send_keys('python selenium')
# 特定した要素(検索欄)にpython seleniumという文字列を入れる
search_box.submit()
# サブミットする
time.sleep(10)
driver.quit()
# 10秒後閉じる

最終コード

import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

def selenium_test():
    driver = webdriver.Chrome(ChromeDriverManager().install())
    url = 'https://www.google.com/'
    driver.get(url)
    time.sleep(2)
    # 2秒間動作を遅らせる
    search_box = driver.find_element_by_name("q")
    # google検索ページのnameがqの要素を特定(検索欄)
    search_box.send_keys('python selenium')
    # 特定した要素(検索欄)にpython seleniumという文字列を入れる
    search_box.submit()
    # サブミットする
    time.sleep(10)
    driver.quit()
    # 10秒後閉じる
selenium_test()

補足

取得できる要素リスト(単数)

  • find_element_by_id(htmlで最初にマッチしたid)
  • find_element_by_name(htmlで最初にマッチしたname)
  • find_element_by_xpath(xml形式でマッチする)
    例:

    <html>
    <body>
    <form id="loginForm">
    <input name="username" type="text" />
    <input name="password" type="password" />
    <input name="continue" type="submit" value="Login" />
    <input name="continue" type="button" value="Clear" />
    </form>
    </body>
    <html>

    formを取得する場合:

    login_form = driver.find_element_by_xpath("/html/body/form[1]")
    login_form = driver.find_element_by_xpath("//form[1]")
  • find_element_by_link_text(htmlで最初にマッチしたa)
  • find_element_by_partial_link_text(htmlで最初にマッチしたaの一部)
  • find_element_by_tag_name(htmlで最初にマッチしたtag)
  • find_element_by_class_name(htmlで最初にマッチしたclass)
    例:

    <html>
    <body>
    <p class="content">Site content goes here.</p>
    </body>
    <html>
    content = driver.find_element_by_class_name('content')
  • find_element_by_css_selector(htmlで最初にマッチしたclass selecor)
    例:

    <html>
    <body>
    <p class="content">Site content goes here.</p>
    </body>
    <html>
    content = driver.find_element_by_class_name('p.content')

取得できる要素リスト(複数)

取得した要素はリストとして返されます。

  • find_elements_by_name
  • find_elements_by_xpath
  • find_elements_by_link_text
  • find_elements_by_partial_link_text
  • find_elements_by_tag_name
  • find_elements_by_class_name
  • find_elements_by_css_selector

その他動作

  • click()(ボタンのクリック)
  • submit()(サブミット)
  • send_keys(インプットの中に文字列などを入れる)
目次
閉じる