7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python2.6 + Selenium2.44.0でWebUIテスト - profile設定

Posted at

Seleniumを使ったテストを書く際につまずいたprofile設定をメモします。
Python初心者なので、コードがおかしいかもしれませんがご了承を。

環境の構築

構築の手順は多くのサイトで書かれているため、割愛します。

以下のサイトを参考にしました。
http://treeapps.hatenablog.com/entry/2014/10/16/015439
https://pypi.python.org/pypi/selenium

Xvfb+FireFox+Selenium(2.44.0)の構成です。

profile設定

User-Agentを判別してPC/スマホに最適化されたページを出し分けている場合、スマホのUA(mobile Safari等)を指定したテストが必要になってきます。
また、開発環境で試験を回す場合、オレオレ証明書だったりする事があると思います。
これらに対応するため、profileの初期設定が必要です。

sp_webdriver.py
import os
from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

profile = FirefoxProfile()
# 証明書の警告を無視する
profile.set_preference("webdriver_assume_untrusted_issuer", False)
profile.set_preference("webdriver_accept_untrusted_certs", True)
profile.accept_untrusted_certs = True

# User-Agentの書き換え(例:iOS 8.0)
profile.set_preference("general.useragent.override", "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A365 Safari/600.1.4")

profile.update_preferences()

driver = webdriver.Firefox(profile)

テストケースを書いてみる

テストケースを書いてみます。
実際に書くときは、基底クラスを作ってからテスト部分だけ実装するといいと思います。

TestCase.py
# -*- coding: utf-8 -*-

import sys, os
import datetime
from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
import unittest

class TestCase(unittest.TestCase):

    def setUp(self):
        profile = FirefoxProfile()
        profile.set_preference("webdriver_assume_untrusted_issuer", False)
        profile.set_preference("webdriver_accept_untrusted_certs", True)
        profile.accept_untrusted_certs = True
        profile.set_preference("general.useragent.override", "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A365 Safari/600.1.4")
        profile.update_preferences()
        self.driver = webdriver.Firefox(profile)

        self.base_url = "http://m.finance.yahoo.co.jp/"
        self.driver.implicitly_wait(30)
        self.accept_next_alert = True

    def ssAssertEquals(self, left, right):
        try:
            # assertionError時にスクリーンショットを取得する
            self.assertEqual(left, right)
        except AssertionError, e:
            now = datetime.datetime.now()
            self.driver.save_screenshot("/var/log" + self.__class__.__name__ + "_" + now.strftime("%Y%m%d%H%M%S") + ".png")
            raise e

    def test_sitetop(self):
        self.driver.get(self.base_url)
        self.ssAssertEquals(u"Y!ファイナンス", self.driver.title)

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()
7
6
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
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?