[[一行日記]]

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

~
~
**インストール [#m7b6e535]
- せっかくだから Windows でやるぜ!~
+ Python インストール ~
https://www.python.org/downloads/release/python-364/ ~
⇒ Windows x86 executable installer ~
英語で進むけど、環境変数に PATH を加えるオプションを忘れずに。~
忘れてたら、もう一度インストーラを実行して「modify」を選択すると選べる。~
~
~
+ Selenium インストール ~
pip を使って selenium をインストールする。~
 
 pip install selenium
 
~
~
+ Chrome/Firefox webdriver を入手する。 ~
これがないと Selenium が Chrome/Firefox を操作できない。~
https://chromedriver.storage.googleapis.com/index.html?path=2.34/ ~
⇒ Windows なら chromedriver_win32.zip ~
~
https://github.com/mozilla/geckodriver/releases ~
⇒ 64bit版 Firefox を使っている場合は、geckodriver-v0.19.1-win64.zip ~
~

zip を解凍し、ログインしているユーザの以下のフォルダに配置する。(パスが通ってればどこでもいい)~
C:\Users\<ユーザ名>\AppData\Local\Programs\Python\Python36-32\Scripts ~
~
~
+スクリプトを書き、実行してみる。~
以下の例だと、Aipo に自動ログインして、スクリーンショットを取得する流れ~
~
Chromeの場合: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()  # ブラウザーを終了する。
~
~
~
~
Firefox の場合:frame.py ~
※ headless モードが使えないのが難点 ~
~
 # coding:utf-8
 import  time
 from selenium import webdriver
 from selenium.webdriver.common.keys import Keys
 from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
 from selenium.webdriver.remote.webelement import WebElement
 
 binary = FirefoxBinary('c:\Program Files\Mozilla Firefox\\firefox.exe')
 binary.add_command_line_options('-headless')
 browser = webdriver.Firefox(firefox_binary=binary)
 
 browser.get('http://matomeantena.com/')
 browser.set_window_size(1920,1080)
 
 time.sleep(2)
 browser.save_screenshot("frame1.png")
 elm = browser.find_element_by_xpath('//*[@id="scrollbar"]')
 elm.send_keys(Keys.PAGE_DOWN)
 time.sleep(2)
 browser.save_screenshot("frame2.png")
 
 elm.send_keys(Keys.PAGE_DOWN)
 time.sleep(2)
 browser.save_screenshot("frame3.png")
 
 elm.send_keys(Keys.PAGE_DOWN)
 time.sleep(2)
 browser.save_screenshot("frame4.png")
 
 elm.send_keys(Keys.PAGE_DOWN)
 time.sleep(2)
 browser.save_screenshot("frame5.png")
 
 elm.send_keys(Keys.PAGE_DOWN)
 time.sleep(2)
 browser.save_screenshot("frame6.png")
 
 time.sleep(2)
 
 browser.save_screenshot("frame7.png")
 
 browser.quit()

** Let's Challenge [#z1adfdeb]
- 自動クリックスクリプト


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS