seleniumのphantomjsでuser-agent を変更する

googleにchromeとして認識して欲しかったので調べた

dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["phantomjs.page.settings.userAgent"] = (
        "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"
    )
driver = webdriver.PhantomJS(desired_capabilities=dcap)

XPathの書き方も慣れてきた☆

Python+Selenium+PhantomJSが快適すぎる

Selenium便利なんだけど、ブラウザ立ちあげないといけないのはサーバーで使いにくくて不便だよなと思っていたのだけどPhantomJS使えることを知ったので早速遊んでた。なにやりたいかというとGoogle Patent Searchから特許ID抜き出したいのだけど、Python+Selenium+PhantomJSの組み合わせでできることがわかった。

from selenium import webdriver
import time
driver = webdriver.PhantomJS()
driver.get("https://www.google.co.jp/webhp?hl=ja&tab=ww&authuser=0#authuser=0&hl=ja&q=python")
print driver.current_url
time.sleep(2)
driver.save_screenshot("screen_shot130918.png")
driver.quit()

screen_shot

PythonでSelenium2.0のWebDriverを動かす

seleniumも覚えようかなぁとmacbook(10.5)で触ってみた。

selenium2.8とselenium 2.8.1のpythonモジュールではfirefoxが立ち上がらずに死ぬので、firefoxで動かすことに固執せずにとっとと諦めてchromeでやってみた。

Chromeで動かす場合にはchromedriverというものをダウンロードしてきて、適切な場所に配置(Macだと/Applications/Google Chrome.app/Contents/MacOS/)する必要があります。

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time

browser = webdriver.Chrome()
browser.get("http://www.yahoo.com")
assert "Yahoo!" in browser.title
elem = browser.find_element_by_name("p")
elem.send_keys("seleniumhq" + Keys.RETURN)
time.sleep(0.2)
try:
    browser.find_element_by_xpath("//a[contains(@href,'http://seleniumhq.org')]")
except NoSuchElementException:
    assert 0, "can't find seleniumhq"
browser.close()

というわけで触りだけ。

FitNesse+Selenium+Jenkinsによるテストケース継続的インテグレーションなんて素敵な匂いがしますな。

pythonで動かせるんだったらnosetestと一緒にごにょごにょすればそのままJenkinsと連携できそうな気もするが。

追記 11.10.14

でもって、selenium-server-standalone-2.8.0.jar

:::sh java -jar selenium-server-standalone-2.8.0.jar

ってな感じで起動しておいて、以下のスクリプトを動かす

って書いてたけど、Chrome使う場合は別に動かす必要なかった。