Python + Selenium で、簡単にブラウザの自動操作をする

mac 上の Python から、Selenium を使って簡単に Firefox を自動操作できます。

Firefox がインストールされている必要があります。Python は、2 でも 3 でも大丈夫です。

単純な Google 検索

コマンド1発で「Hello, world!」で google 検索をするところまでを書きます。

1. selenium をインストール

$ sudo pip install selenium

2. pythonスクリプトを作成

hello_selenium.py

#!/usr/bin/env python

from selenium import webdriver

if __name__ == '__main__':
    driver = webdriver.Firefox()
    driver.get('http://google.com')
    driver.find_element_by_css_selector(
        'input[name="q"]').send_keys("Hello, world!")
    driver.find_element_by_css_selector('input[type="submit"]').click()

3. 実行

$ chmod +x hello_selenium.py
$ ./hello_selenium.py

Firefoxが起動し、Hello, world! で Google 検索されたと思います。簡単ですね。

このパターンは、フォームに入力し submit するだけですが、応用すると認証ページに自動ログインしたりなどはすぐに書けると思います。

いつも使っている Firefox ではなく、クッキーや履歴などがまっさらな状態の Firefox を簡単につくれるので、テストには重宝します。

何度も実行すると、Dock が Firefox だらけになります。以下のコマンドで一気に kill できます。

$ killall firefox-bin

スマートフォンの User-Agent でアクセスする

#!/usr/bin/env python

from selenium import webdriver

if __name__ == '__main__':
    user_agent = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) " \
                 "AppleWebKit/535.19 (KHTML, like Gecko) " \
                 "Chrome/18.0.1025.166 Safari/535.19"

    profile = webdriver.FirefoxProfile()
    profile.set_preference("general.useragent.override", user_agent)
    driver = webdriver.Firefox(firefox_profile=profile)
    driver.get('http://www.mangazenkan.com')

webdriver.Firefox の引数に、FirefoxProfile を与えると設定を変更できます。 これは、Android のUA を設定しているので、UA で表示を分けているタイプのサイトでは、SP 表示のテストができます。

レスポンシブデザインが主流だと思うので、あまり UA で分岐するようなサイトは最近見ませんけどね。

プロキシ設定をする (socks)

#!/usr/bin/env python

from selenium import webdriver

if __name__ == '__main__':
    profile = webdriver.FirefoxProfile()
    profile.set_preference('network.proxy.type', 1)
    profile.set_preference('network.proxy.socks', '127.0.0.1')
    profile.set_preference('network.proxy.socks_port', 10080)
    driver = webdriver.Firefox(firefox_profile=profile)
    driver.get('http://example.com')

これで、プロキシの socks 設定を上書きできますので、

$ ssh -N -D 10080 ubuntu@example.com

予め、このようなコマンドで socks トンネルを作っておき、( デーモンモードで起動するには -f を付与します。& してもいいかも)

このコマンドを実行すれば、socks 先の踏み台サーバを経由して Firefox を使えるため、アクセス元を考慮した確認に大変便利です。例えば、外国からのアクセスを試してみたい場合など。

Current rating: 3.7

コメント

コメントを投稿
コメントするには TORICO-ID にログインしてください。
ログイン コメント利用規約
Search

Recent Tweets

  • ytyng

    ytyng @ytyng

    #ダンディナイト 2日間お疲れ様でした!照明、PA、映像配信オペレーターしました。漫画家の先生方やすごいアーティストの方々とイベントできてとても楽しかったです!
    1 week, 2 days ago

  • 濱田潤

    濱田潤 @hamada_TORICO

    ytyng

    #ダンディナイト ・ワン 閉幕。 2日間たくさんの皆様にご来場いただき、ライブ配信でもご参加いただき本当にありがとうございました! 多忙な中イベントにご参加いただいた参加メンバーの皆様にも改めて心から感謝!感謝!! ワンがあ… https://t.co/8RnqWWaDQW
    1 week, 2 days ago

  • 安藤拓郎 TAKURO ANDO

    安藤拓郎 TAKURO ANDO @takuroando

    ytyng

    #ダンディナイト ライブありトークありドローイングありカレーありコーヒーあり、こういうのやりたかったってイベントやらせていただいた。関係者の皆様、来場いただいた皆様、ありがとうございました! #池袋虜 https://t.co/qIAs2Gfmnr
    1 week, 2 days ago

  • マンガ展/TORICO

    マンガ展/TORICO @manga10_torico

    ytyng

    🎊【DANDY NIGHT.1/#ダンディナイト ・ワン】produced by #ダンディさん🎊 DAY2ライブデーオープン🎊 初日ご来場の方もそうでない方もぜひ #池袋虜 にお越し下さいませ〜😘 ライブドローイングやミュー… https://t.co/uzk8zeS2kB
    1 week, 2 days ago

  • 濱田潤

    濱田潤 @hamada_TORICO

    ytyng

    そして!#ダンディナイト 本日ライブ配信!凄くない!? 御三方が描くとこ見れるんですよ! 15時半からtwitterとyoutubeでライブ配信開始! マンガ展(@manga10_torico )アカウントをフォローしてご覧… https://t.co/kop6T20jcw
    1 week, 2 days ago