今回はSeleniumで具体的にWEBブラウザを操作する方法について解説します。
Seleniumの基本的な使い方から、ログイン判定やログインの方法についても紹介していきます。
◇導入方法については別の記事で解説しているので、こちらをご覧ください⬇️

・Google Chrome 86.0.4240.75(Official Build) (64 ビット)
・Python 3.8.5
・Selenium 3.141.0
・Chrome Driver 86.0.4240.22
基本的な使い方
今回の解説では例として、楽天を使って文字を解説します。

まず、「指定のワードを検索する」処理をして操作を学んでみましょう
そのために必要な手順は以下の3つになります。
2.検索ボックスに指定のワードを入力する
3.検索ボタンを押す
また、seleniumで入力やクリックなどをするためには、要素を指定して操作する必要があります。
サンプルコードで確認してみましょう。
import time from selenium import webdriver driver = webdriver.Chrome(executable_path='C:\\Users\\Shinmai\\Documents\\Python\\selenium\\chromedriver_win32\\chromedriver.exe') # 1.楽天の画面を表示する driver.get('https://rakuten.co.jp/') time.sleep(2) # 2.検索ボックスに指定のワードを入力する # 検索ボックスのCSSセレクタを指定 search_box = driver.find_element_by_css_selector("#common-header-search-input") # 検索ボックスに入力 search_box.send_keys('イヤホン') # 3.検索ボタンを押す # 検索ボタンのCSSセレクタを指定 search_btn = driver.find_element_by_css_selector("#wrapper > div:nth-child(6) > div > div > div > div.flex-search-bar-wrapper--3MkOE > div > div > div > a > span > div") # 検索ボタンをクリック search_btn.click() time.sleep(10) driver.quit()
このように要素の指定と操作をセットで行います。
操作内容 element.click()
また要素の指定にはcssセレクタだけでなく、以下の様にHtmlのid,nameなども指定できます。
- id属性: driver.find_element_by_id(“id”)
- class属性: driver.find_element_by_class_name(“class”)
- name属性: driver.find_element_by_name(“name”)
よく分からない方はcssセレクタが一番簡単だと思うので、次章で詳しく解説します。
CSSセレクタの探し方

セレクタって言われてもどう探せばいいのか分からないよ!

chromeなら簡単に見つけられるので大丈夫!一緒に見ていきましょう
まず、Chromeで操作したいページを開き、F12キーを押します。
下の画像のような画面が開けたら、赤枠の中をクリックします。
そして、その状態で下の画像の赤枠内にある検索ボックスをクリックします。
そうするとクリックした部分のhtml要素のみ見れるようになります。(緑枠内)
①Copy
②Copy selector
と選択するとCSSセレクタがクリップボードにコピーされます。
ログインの有無を判定する
ここではログインボタンのセレクタがあるかどうかで判断してみます。
もしログインボタンのセレクタが見つからなかった場合は、NoSuchElementExceptionというエラーが発生するので
try/exceptでそのエラーをキャッチすることでログイン済みと判定できます。
import time from selenium import webdriver from selenium.webdriver.support.select import Select from selenium.common.exceptions import NoSuchElementException driver = webdriver.Chrome(executable_path='C:\\Users\\Shinmai\\Documents\\Python\\selenium\\chromedriver_win32\\chromedriver.exe') driver.set_window_size(1920,1080) driver.get('https://rakuten.co.jp/') try: # ログインボタンのセレクタ selector = '#wrapper > div:nth-child(8) > div > ul.side-menu--37357 > li:nth-child(2) > button' element = driver.find_element_by_css_selector(selector) except NoSuchElementException as e: print(e) time.sleep(10) driver.quit()
ログイン後の画面を操作する
・会員情報画面を表示する
もし会員情報ページなどログイン後でないと見れない画面を見たい場合は、どうすれば良いのでしょうか?
今度はログインしているかを判断し、未ログインの場合はログインをした上で
会員情報ページに行ってみます。
import time from selenium import webdriver from selenium.webdriver.support.select import Select from selenium.common.exceptions import NoSuchElementException driver = webdriver.Chrome(executable_path='C:\\Users\\Shinmai\\Documents\\Python\\selenium\\chromedriver_win32\\chromedriver.exe') driver.set_window_size(1920,1080) driver.get('https://rakuten.co.jp/') try: # ログインボタンのセレクタ selector = '#wrapper > div:nth-child(8) > div > ul.side-menu--37357 > li:nth-child(2) > button' element = driver.find_element_by_css_selector(selector) element.click() # id selector = '#loginInner_u' element = driver.find_element_by_css_selector(selector) element.send_keys("test_rakuten@example.com") # パスワード selector = '#loginInner_p' element = driver.find_element_by_css_selector(selector) element.send_keys("Password001") # 送信 selector = '#loginInner > p:nth-child(3) > input' element = driver.find_element_by_css_selector(selector) element.click() except NoSuchElementException as e: print(e) # 以下ログイン後画面 # 会員情報画面のセレクタ selector = '#members_info > ul > li:nth-child(1) > a' element = driver.find_element_by_css_selector(selector) element.click() time.sleep(10) driver.quit()
最後に
今回はSeleniumで具体的に操作する方法を紹介しました。
他にも様々な使い方ができるので、色々試してみて下さい。
それでは良きSeleniumライフを!
コメント
[…] 【Python】Seleniumでブラウザのログイン処理を自動化する方法今回はSeleniumで… […]