Seleniumとその動作に必要なWebDriverのインストールと動作環境設定です。
以前に書いた記事ですが、内容が古くなったので全面リライトしました。
なお、pythonは、3.7系です。
Pythonモジュールのインストール
Windows10環境に、Anacondaをインストールして利用可能になっていることを前提にします。
まだの場合は以下からダウンロードしてインストールしておいてください。
さて。
インストールはpipを使えば簡単です。
Seleniumだけをいれる場合
pip install selenium
でも、今はもっと便利なものがあります。
pip install robotframework-appiumlibrary
これをインストールするとSeleniumを含むアプリケーションの自動実行に必要な以下の諸々が一度にインストールされるので、自分はこちらでやってます。
- Appium-Python-Client
- decorator
- docutils
- kitchen
- robotframework
- robotframework-appiumlibrary
- selenium
- six
- urllib
WEBDriverのインストール
seleniumでWEBブラウザを操作するには、各ブラウザに対応するWEBDriverをインストールしておく必要があります。
今回は、Google Chrome と Edgeの2つのインストール方法です。
Chrome用ドライバのインストールと環境設定
Chromeドライバは、以前はWEBページからダウンロードしてましたが、今は、pipで簡単にインストールできます。
pip install chromedriver-binary==76.0.3809.126
この「==76.0.3809.126」はバージョン指定です。
Chromeドライバは常時開発されているので、バージョン指定せずにインストールすると、現在稼働中のバージョンより進んでしまって動かない場合があります。
こちらのページで自分の環境のChromeにあわせたバージョンを確認して指定します。
インストールしたら、以下のコマンドを実行します。
chromedriver-path
そうすると、以下のようにChromeドライバーがインストールされたフルパスが表示されます。
c:\users\xxxxxxx\appdata\local\continuum\anaconda3\envs\autotest\lib\site-packages\chromedriver_binary
このパスを環境変数の「PATH」に追加しておきます。
もし環境変数に設定しない場合は、Pythonのソースの中で上記を引数として指定しないといけなくなるので、やっといたほうが楽です。
Edge用ドライバーのインストール
こちらも以前はWEBページからダウンロードしてましたが、今はWindows10の「オプション機能の管理」からインストールします。
Windowsの設定を開きます。
アプリを選びます。
オプション機能の管理を選びます。
ここで「+機能の追加」を選びます。
そうすると、どっかに「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秒だけ待って、自動終了するようにしています。
これが動けば、インストールと環境設定はうまくいってます。
お気に入りの曲を検索してかけてみよう
じゃあ、ちゃんと動作確認をしてみます。
どんな命令があるのかは、こちらでサイトで簡単に確かめることができます。
対象とするサイトは、「MUSIC-FAN-CLUBHOUSE(MFCH)」にします。
地味で、最近メンテナンスもあまりされてない様ですが、生成する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")
アーティスト検索画面のテキストボックスに「カヨコ」と入力して、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()
そのリンク先の画面で「イミテーションロック LIVE」という曲名のリンクを探してクリックします。
elt2 = driver.find_element_by_link_text("イミテーションロック LIVE")
elt2.click()
これで動画が表示されて、うまくいけば自動的に曲が再生されるはずです。
(環境によって自動再生できない時もありますけど・・)
いい感じです。
自動的に動いて画面が動いていくのを眺めているだけでも面白いです。
ではでは。