2016-03-30 6 views
2

JSによってSeleniumのリクエストにクッキーを追加しようとしています。ドキュメンテーションは明らかです(http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/lib/webdriver_exports_Options.html#addCookie)が、私のコードスニペットは、サーバー上のPHPスクリプト(下)にクッキーを渡しません。Selenium JSがリクエストするクッキーを追加します

クライアントJSコード:

var webdriver = require('selenium-webdriver'); 

var driver = new webdriver.Builder() 
    .withCapabilities({'browserName': 'firefox'}) 
    .build(); 
driver.manage().addCookie("test", "cookie-1"); 
driver.manage().addCookie("test", "cookie-2").then(function() { 
    driver.get('http://localhost/cookie.php').then(function() { 
     driver.manage().addCookie("test", "cookie-3"); 
     driver.manage().getCookie('test').then(function (cookie) { 
      console.log(cookie.value); 
     }); 
     setTimeout(function() { 
      driver.quit(); 
     }, 30000); 
    }); 
}); 

ServerのPHPコード:あなたのクッキーは、あなたがaddCookieを呼び出す時にあるため送信されません

<?php 
    print_r($_COOKIE); 
?> 
+0

console.logは正常に動作し、「cookie-3」を返します。問題は、空の配列を表示するPHPスクリプトです。 – kchod

答えて

3

、ドメインが定義されていません。 クッキーを送信する例を次に示します。

var webdriver = require('selenium-webdriver'); 
var driver = new webdriver.Builder() 
    .withCapabilities({'browserName': 'firefox'}) 
    .build(); 

// set the domain 
driver.get('http://127.0.0.1:1337/'); 

// set a cookie on the current domain 
driver.manage().addCookie("test", "cookie-1"); 

// get a page with the cookie 
driver.get('http://127.0.0.1:1337/'); 

// read the cookie 
driver.manage().getCookie('test').then(function (cookie) { 
    console.log(cookie); 
}); 

driver.quit(); 
+1

ありがとう、それは動作します。 '' addCookie() ''の前後に '' driver.get( 'http:// domain') ''を2回使用する必要がありました。 – kchod

0

Cookieはヘッダーとして送信されます。

$browser.addHeader('Cookie', "COO=KIE"); 

これは、要求を送信する前に行うことができます。

関連する問題