PhantomJS はCookieをサポートしていますか?はいの場合、APIの詳細はどこで確認できますか?
しばらく探した後、私はそれを理解することができません。
はい、 1.7 現在、Phantomには完全なCookie処理があり、デフォルトで有効になっています。 Cookieは、プロセスの存続期間中保持されます。
Phantomの実行中にCookieを保持したい場合は、 コマンドラインオプションcookies-file
があり、永続的なCookieを保存する場所を指定できます。
--cookies-file=/path/to/cookies.txt
は、永続的なCookieを保存するファイル名を指定します。
ページスクリプトでは、通常のdocument.cookie
プロパティを使用できます。ブラウザと同様に、このプロパティはCookie:
HTTPヘッダーで送信されるものと同様の文字列を返します。
Phantomスクリプトでは、objectsを返すpage.cookies
を介して、ページのCookieにアクセスできます(通常のOriginの制限に従います)。
phantom.cookies
を使用して、allCookie(すべてのドメインから)にアクセスすることもできます。
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
});
Cookieを追加/編集/削除 するには、addCookie
オブジェクトのdeleteCookie
、clearCookies
、およびWebPage
メソッドを使用するか、 phantom
オブジェクト。
WebPage
オブジェクトのメソッドを使用する場合、ページに表示されるCookieのみを変更します。他のドメインへのアクセスはブロックされます。
ただし、phantom
のCookieメソッドを使用すると、allCookieへのアクセスが許可されます。 phantom.addCookie
にはドメインが必要です(指定しない場合、WebPage.addCookie
は現在のドメインを想定)、phantom.deleteCookie
は削除any指定された名前に一致するcookie。
それは、 WebPage.addCookie() を介して行われます-偶然動作しません他の誰か 。
代わりにこれを使用できます:
phantom.addCookie({
'name': 'mycookie',
'value': 'something really important',
'domain': 'example.com'
})
page.open('http://example.com/url/path/', function() {
console.log(page.cookies);
})
私がしなければならなかった回避策は、javascriptを直接実行することでした。 Gebを使用して、次のことを行いました。
js.exec("document.cookie='PHPSESSID=${cookie}';")
Seleniumが失敗すると、機能のために常にJavaScriptにフォールバックします。
私は最近、セッション内で情報を評価しました。以下のように、ページオブジェクトにcookieを設定する必要があります(coffeescript):
@page.clearCookies()
@page.addCookie
'name' : "JSESSIONID"
'value' : "0000rN3YAlVAU0xdHkKc6BEzWj9:-1"
'domain' : 'some.domain.com'
'path' : '/'
まだ試していませんが、_--cookies-file=/path/to/cookies.txt
仕事?
[〜#〜] api [〜#〜] reference ...の最初の項目です.