Posted at

PoltergeistでE2Eテストを行う時、JSでrefererはとれるのか

More than 3 years have passed since last update.


結論

とれなかったです(2015年2月23日現在 poltergeist 1.6.0)

こうすればとれるよなどありましたらコメントいただけると嬉しいです、、


試したこと


poltergesitのsessionにrefererを追加してみる

UserAgent

page.driver.headers = { referer: 'http://www.google.co.jp/' }

page.driver.headers
=> {:referer=>"http://www.google.co.jp/"}

visit root_path

evaluate_script('document.referrer')
=> ""

とれない…。


JSで referrerを書き換えてみた

evaluate_script("window.document.__defineGetter__('referrer', function () { return http://www.google.co.jp/'; });")

evaluate_script('document.referrer')
=> ""

evaluate_script('Object.defineProperty(document, "referrer", {get : function(){ return "http://www.google.co.jp/"; });')

evaluate_script('document.referrer')
=> ""

とれない…。

参考URL:Try to overwrite window.document.referrer from within phantomjs / onInitialized


cookieもUAもとれるのに…

page.driver.set_cookie('hoge', 'fuga')

evaluate_script('document.cookie')

UserAgentもheaderに追加すれば正しくとれる…

evaluate_script('window.navigator.userAgent')

=> "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25"

(´;ω;`)ウッ…