一行日記

Selenium

ブラウザ を自動操作して UI のテストができる。
便利だと思うのが、自動ログインとスクリーンショット機能。
また、chrome、firefox で headless モードが搭載されるようになり、
ブラウザを表示させずに画面キャプチャが可能だったりする。



インストール

  1. Python インストール
    https://www.python.org/downloads/release/python-364/
    ⇒ Windows x86 executable installer 
    英語で進むけど、環境変数に PATH を加えるオプションを忘れずに。
    忘れてたら、もう一度インストーラを実行して「modify」を選択すると選べる。


  2. Selenium インストール
    pip を使って selenium をインストールする。
    pip install selenium
    


  3. Chrome webdriver を入手する。
    これがないと Selenium が Chrome を操作できない。
    https://chromedriver.storage.googleapis.com/index.html?path=2.34/
    ⇒ Windows なら chromedriver_win32.zip

    zip を解凍し、ログインしているユーザの以下のフォルダに配置する。(パスが通ってればどこでもいい)
    C:\Users\<ユーザ名>\AppData?\Local\Programs\Python\Python36-32\Scripts


  4. スクリプトを書き、実行してみる。
    以下の例だと、Aipo に自動ログインして、スクリーンショットを取得する流れ

    test.py

    import time
    
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    # Chromeのパス(Stableチャネルで--headlessが使えるようになったら不要なはず)
    options.binary_location = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
    # ヘッドレスモードを有効にする(次の行をコメントアウトすると画面が表示される)。
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--window-size=1920,1080')
    
    # ChromeのWebDriverオブジェクトを作成する。
    driver = webdriver.Chrome(chrome_options=options)
    
    # Googleのトップ画面を開く。
    driver.get('https://aipo.sekiken.xyz/')
    
    # タイトルに'Aipo'が含まれていることを確認する。
    assert 'Aipo' in driver.title
    
    # 入力して送信する。
    username = driver.find_element_by_name('member_username')
    username.send_keys('z20615**')
    driver.save_screenshot('Aipo_Login1.png')
    
    password = driver.find_element_by_id('password')
    password.send_keys('********')
    driver.save_screenshot('Aipo_Login2.png')
    
    password.send_keys(Keys.RETURN)
    
    time.sleep(2)  # Chromeの場合はAjaxで遷移するので、とりあえず適当に2秒待つ。
    
    # タイトルに'Python'が含まれていることを確認する。
    #assert 'Python' in driver.title
    
    # スクリーンショットを撮る。
    driver.save_screenshot('Aipo_Login3.png')
    
    time.sleep(2)  # Chromeの場合はAjaxで遷移するので、とりあえず適当に2秒待つ。
    
    driver.quit()  # ブラウザーを終了する。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS