Behat + Selenium2:使用init cookie开始测试不起作用

时间:2014-02-04 06:03:52

标签: php cookies selenium-webdriver behat

我们正在使用A / B测试,我们必须设置控制页面的cookie。我做了一个简单的测试:

cookie.feature

@javascript
Scenario: Cookie test
    Given Set cookie "a" = "start" on page "/test.php"
     Then wait 5000
     When Set cookie "a" = "change" and go to "/test.php"
     Then wait 5000

FeatureContext.php

<?php
// ...

/**
 * @Given /^Set cookie "([^"]+)" = "([^"]+)" on page "([^"]+)"$/
 * @When /^Set cookie "([^"]+)" = "([^"]+)" and go to "([^"]+)"$/
 */
public function setUserCookie($name, $value, $page)
{
    $this->getSession()->setCookie($name, $value);
    $this->visit($page);
}

/**
 * @Then /^wait (\d+)$/
 */
public function iWait($msec)
{
    $this->getSession()->wait($msec);
}

test.php的

<?php echo $_COOKIE['a'];

当我运行此测试时,第一页没有cookie!我在Fiddler中检查了它,HTTP标头首先不包含cookie,只包含第二个。

对策:

  1. 注意:未定义的索引:a
  2. 变化
  3. 如何设置初始化Cookie? (无需加载第一页两次)

1 个答案:

答案 0 :(得分:2)

始终为当前域发送Cookie。由于您尚未访问某个页面,因此该域尚未设置。目前,没有办法为貂皮饼干选择域名。

您需要在发送Cookie之前提出请求。