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 を使えるため、アクセス元を考慮した確認に大変便利です。例えば、外国からのアクセスを試してみたい場合など。