"BOKU"のITな日常

還暦越えの文系システムエンジニアの”BOKU”は新しいことが大好きです。

python+seleniumでChromeとEdgeを操作する/インストールと環境設定と動作確認

Seleniumとその動作に必要なWebDriverのインストールと動作環境設定です。

以前に書いた記事ですが、内容が古くなったので全面リライトしました。

なお、pythonは、3.7系です。 

f:id:arakan_no_boku:20190223141926j:plain

 

Pythonモジュールのインストール

 

Windows10環境に、Anacondaをインストールして利用可能になっていることを前提にします。

まだの場合は以下からダウンロードしてインストールしておいてください。

www.anaconda.com

さて。 

インストールはpipを使えば簡単です。

Seleniumだけをいれる場合

pip install selenium

でも、今はもっと便利なものがあります。

pip install robotframework-appiumlibrary

これをインストールするとSeleniumを含むアプリケーションの自動実行に必要な以下の諸々が一度にインストールされるので、自分はこちらでやってます。 

  • Appium-Python-Client
  • decorator
  • docutils
  • kitchen
  • robotframework
  • robotframework-appiumlibrary
  • selenium
  • six
  • urllib

 

WEBDriverのインストール

 

seleniumWEBブラウザを操作するには、各ブラウザに対応するWEBDriverをインストールしておく必要があります。

今回は、Google Chrome と Edgeの2つのインストール方法です。

 

Chrome用ドライバのインストールと環境設定

 

Chromeドライバは、以前はWEBページからダウンロードしてましたが、今は、pipで簡単にインストールできます。

pip install chromedriver-binary==76.0.3809.126

この「==76.0.3809.126」はバージョン指定です。

Chromeドライバは常時開発されているので、バージョン指定せずにインストールすると、現在稼働中のバージョンより進んでしまって動かない場合があります。

こちらのページで自分の環境のChromeにあわせたバージョンを確認して指定します。

chromedriver.chromium.org

インストールしたら、以下のコマンドを実行します。

chromedriver-path

そうすると、以下のようにChromeドライバーがインストールされたフルパスが表示されます。

 c:\users\xxxxxxx\appdata\local\continuum\anaconda3\envs\autotest\lib\site-packages\chromedriver_binary

このパスを環境変数の「PATH」に追加しておきます。

もし環境変数に設定しない場合は、Pythonのソースの中で上記を引数として指定しないといけなくなるので、やっといたほうが楽です。

 

Edge用ドライバーのインストール

 

こちらも以前はWEBページからダウンロードしてましたが、今はWindows10の「オプション機能の管理」からインストールします。

Windowsの設定を開きます。

f:id:arakan_no_boku:20190827211458p:plain

アプリを選びます。

f:id:arakan_no_boku:20190827211559p:plain

オプション機能の管理を選びます。

f:id:arakan_no_boku:20190827211729p:plain

ここで「+機能の追加」を選びます。

f:id:arakan_no_boku:20190827211815p:plain

そうすると、どっかに「Microsoft WebDriver」があるので、それを選択してインストールします。

これで、以下にインストールされます。

C:\\windows\\system32\\MicrosoftWebDriver.exe

このパスが後で使う時に必要になります。

 

動作確認をしてみる

 

とりあえず、サンプルソースを動かしてみます。

ソースはこれだけです。

まずはChromeから。

 

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.google.com/')
search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
driver.quit()

続けで、Edgeで同じことをするソースです。

import time
from selenium import webdriver

driver = webdriver.Edge(
    executable_path='C:\\windows\\system32\\MicrosoftWebDriver.exe')
driver.get('https://www.google.com/')
search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
driver.quit()

どちらも、Google画面を表示して、ChromeDriverで検索して結果を表示します。

その後、5秒だけ待って、自動終了するようにしています。

これが動けば、インストールと環境設定はうまくいってます。

 

お気に入りの曲を検索してかけてみよう

 

じゃあ、ちゃんと動作確認をしてみます。 

どんな命令があるのかは、こちらでサイトで簡単に確かめることができます。

www.seleniumqref.com

対象とするサイトは、「MUSIC-FAN-CLUBHOUSE(MFCH)」にします。

160.16.234.220

 地味で、最近メンテナンスもあまりされてない様ですが、生成するHTMLがシンプルで自動化テストを試すには使いやすいシンプルなサイトです。

明らかに個人が趣味で作ってそのまま置いてます・・って感じなので、いつまであるかわからないですけど(笑) 

ここで、自分の好きなカヨコさんの「イミテーションロック」という曲を検索して、再生してみるというのを自動的にやってみようと思います。 

ただ、youtubeの動画なので、突然再生できなくなったりする可能性は常にあります。

2019/2/23時点では、まだ大丈夫でしたけど。

 

ソースの全文です。

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://160.16.234.220/mfc/artistRankList/#here")
elem = driver.find_element_by_name("nameSelectionData")
elem.clear()
elem.send_keys("カヨコ")
elem.send_keys(Keys.RETURN)
elt1 = driver.find_element_by_link_text("カヨコ")
elt1.click()
elt2 = driver.find_element_by_link_text("イミテーションロック LIVE")
elt2.click()

 

解説します。 

 

Chromeドライバーを初期化します

driver = webdriver.Chrome() 

 

 最初にChromeブラウザを立ち上げて、アーティスト検索画面に遷移します。

driver.get("http://160.16.234.220/mfc/artistRankList/#here")

 

f:id:arakan_no_boku:20180109225901j:plain

 アーティスト検索画面のテキストボックスに「カヨコ」と入力して、ENTERキーを押して検索します。

elem = driver.find_element_by_name("nameSelectionData")
elem.clear()
elem.send_keys("カヨコ")
elem.send_keys(Keys.RETURN)

なんで、上記のコードで「アーティスト名」のテキストボックスが選択できるかというと、ソースの表示で確認したHTMLがこうなっているからです。

<input type="text" name="nameSelectionData" tabindex="1" value="" style="width:250px">

その検索結果画面で、「カヨコ」という表示名のリンクを探してクリックします。

elt1 = driver.find_element_by_link_text("カヨコ")
elt1.click()

f:id:arakan_no_boku:20190223145255j:plain

 そのリンク先の画面で「イミテーションロック LIVE」という曲名のリンクを探してクリックします。

elt2 = driver.find_element_by_link_text("イミテーションロック LIVE")
elt2.click()

f:id:arakan_no_boku:20190223145542j:plain

 

これで動画が表示されて、うまくいけば自動的に曲が再生されるはずです。

(環境によって自動再生できない時もありますけど・・)

f:id:arakan_no_boku:20190223145711j:plain

いい感じです。 

自動的に動いて画面が動いていくのを眺めているだけでも面白いです。 

ではでは。