LoginSignup
39
45

More than 5 years have passed since last update.

Selenium API を使って UIテストを自動化する | python で Web サイトをクローリングする

Last updated at Posted at 2015-05-30

環境:
* Windows 7
* python 2.7.10
* 2015/05/30時点で最新版のFirefox

自動テストを行ったり,Web サイトを操作して何かを取得したりしたい時に.
今回は,selenium の API を利用して行いました.
ドキュメントはこちら
今回は Firefox を利用してクローリングを行いました.
Chrome などでもできるようですが,サードパーティ製のブラウザはサポートはされていないようです。。。

sample.py
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

# ブラウザの起動
driver = webdriver.Firefox()

# ウィンドウの最大化
driver.maximize_window()

# Web サイトへのアクセス
driver.get("https://github.com")

# Web サイトのタイトルを取得
driver.title

# "q" という名前を持つエレメントを指定する
# ここでは,リポジトリ検索用のキーワード入力フォームのこと
form_textfield = driver.find_element_by_name("q")
# 入力フォームに,”hoge”と入力する
form_textfield.send_keys("hoge")
# 入力した内容を削除する
form_textfield.clear()
# 入力したキーワード("hoge")を送信し,検索を実行する
form_textfield.submit()
# 入力フォームの場所を調べる
form_textfield.location
# 入力フォームのサイズを調べる
form_textfield.size
# 入力フォームのタグ名を調べる
form_textfield.tag
# エレメントの(HTMLソース上の)テキストを調べる
form_textfield.text

# エレメントを xpath で指定する
# ここでは,ページ下部の1, 2, ..., n と書いてあるボタンのうち,2と書いてあるボタンを指す
next_button = driver.find_element_by_xpath("//*[@id=\"container\"]/div[2]/div/div[2]/div[2]/div/a[1]")
# このエレメントはクリックできるので,クリックしてみる
next_button.click()

# エレメントを xpath で指定する
# ここでは,python を使ったリポジトリに絞って再検索してみる.
refined_search_python = driver.find_element_by_xpath("//*[@id=\"container\"]/div[2]/div/div[1]/ul/li[9]/a")
refined_search_python.click()

# タイムアウト時間を設定する(ページ遷移) <- まだ試していない
driver.set_page_load_timeout(1)

# タイムアウト時間を設定する(スクリプトの実行) <- まだ試していない
driver.set_page_script_timeout(1)

# ページを一つ戻す
# やりかたその1
ActionChains(driver).key_down(Keys.BACKSPACE).send_keys('').keys_up(Keys.BACKSPACE).send_keys('').perform()
# やりかたその2
driver.back()

# ページを一つ進める
driver.forward()

# スクリーンショットをとる
driver.get_screenshot_as_file("./hogehoge.png")

# ウィンドウの位置を調べる
driver.get_window_position()

# ウィンドウのサイズを調べる
driver.get_window_size()

# ページの更新
driver.refresh()

# url の取得
driver.current_url

# 現在使用しているブラウザの種類を調べる
driver.name

# 現在開いているページのソースを取得する
driver.page_source

# ブラウザを閉じる
# やりかたその1
driver.quit()
# やりかたその2
driver.close()
39
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
45