答えて
はい、1.7のように、ファントムは完全なクッキー処理を持ち、デフォルトで有効になっています。クッキーはプロセスの存続期間中保持されます。
ファントムの実行中にCookieを保持する場合は、command-line option cookies-file
があり、永続的なCookieを保存する場所を指定できます。
--cookies-file=/path/to/cookies.txt
は、永続的なCookieを保存するファイル名を指定します。
ページスクリプトでは、通常のdocument.cookie
プロパティを使用できます。ブラウザーと同様に、このプロパティーは、HTTPヘッダーCookie:
で送信される文字列と同様の文字列を返します。
Phantomスクリプトでは、page.cookies
によってページのCookieにアクセスできます(通常の発信元の制限に従います)。オブジェクトを返します。
phantom.cookies
を使用してすべてのCookie(すべてのドメインから)にアクセスすることもできます。 add/edit/delete cookiesに
var page = require('webpage').create();
page.open('http://example.com', function (status) {
page.evaluate(function() {
document.cookie; // => "test=test-value;"
});
page.cookies; // => [{
// domain: "example.com",
// expires: "Wed, 08 Jan 2014 00:00:00 GMT"
// httponly: false,
// name: "test",
// path: "/",
// secure: false,
// value: "test-value"
// }]
phantom.cookies; // contains ALL cookies in Phantom's jar
});
、addCookie
、deleteCookie
、及びWebPage
オブジェクトまたはphantom
オブジェクトのいずれかのclearCookies
方法を使用。
WebPage
オブジェクトのメソッドを使用すると、ページに表示されるCookieのみが変更されます。他のドメインへのアクセスはブロックされます。
しかし、のクッキーメソッドを使用すると、すべてクッキーにアクセスできます。 phantom.addCookie
にはドメインが必要です(指定しない場合はWebPage.addCookie
は現在のドメインとみなされます)。phantom.deleteCookie
は指定された名前と一致するののいずれかのクッキーを削除します。
それは私が 'console.log(document.cookie);を実行したときに実行されます。 – Niyaz
@Niyazはい私はちょうどそれを試み、それがハングアップ、バグをファイルします。 –
ジャスミンユニットテストで使用したときにウィンドウにハングアップしません...しかし、ファンタムは未定義に戻ります。 –
私はまだ試していませんが、--cookies-file=/path/to/cookies.txt
は動作しませんか?
それはWebPage.addCookie()を通じて、い... API参照して
はい、Cookieを指定されたファイルに書き込みます。特定のクッキーの価値をどのように取り戻すのですか? – Niyaz
はい...クッキーのサポートが完了していないようです:http://code.google.com/p/phantomjs/issues/detail?id=299およびhttp://code.google.com/p/phantomjs/ issues/detail?id = 91 –
最初の項目だ - ちなみにが私のためにもsomeone elseもないを動作しません。
あなたは代わりにこれを使用することができます:
phantom.addCookie({
'name': 'mycookie',
'value': 'something really important',
'domain': 'example.com'
})
page.open('http://example.com/url/path/', function() {
console.log(page.cookies);
})
なぜ(匿名の)ダウンボート?このスニペットは何らかの理由で 'WebPage.addCookie()'がうまく動作しない場合にCookieを設定する別の方法を示しています。 – johndodo
私は最近、セッション内の情報を傾斜していました。以下のようにページオブジェクトにクッキーを設定する必要があります(coffeescript):
@page.clearCookies()
@page.addCookie
'name' : "JSESSIONID"
'value' : "0000rN3YAlVAU0xdHkKc6BEzWj9:-1"
'domain' : 'some.domain.com'
'path' : '/'
私がしなければならない作業は、JavaScriptを直接実行することでした。私はGebを使用しており、以下を行っています。
js.exec("document.cookie='PHPSESSID=${cookie}';")
セレンがうまくいかないときは、私はいつもjavascriptに戻って機能します。
はい、ブラウザのようなクッキーをサポートしていますが、APIはどういう意味ですか? –
どのようにしてクッキーの価値を得るのですか? document.cookieは何も得られないようです。 – Niyaz
document.cookieはphontomjsを除くすべてのブラウザで動作しますが、いくつかのバグがあるようですが、ネイティブAPIを追加する予定ですhttp://code.google.com/p/phantomjs/issues/detail?id=354&start=100 –