【问题标题】:Behat + Selenium2: start testing with init cookie doesn't workBehat + Selenium2:使用 init cookie 开始测试不起作用
【发布时间】:2014-02-04 06:03:52
【问题描述】:

我们正在使用 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. 改变

如何设置初始化 cookie? (无需加载两次第一页)

【问题讨论】:

    标签: php cookies selenium-webdriver behat


    【解决方案1】:

    始终为当前域发送 cookie。由于您尚未访问页面,因此尚未设置域。目前没有办法为带有貂皮的 cookie 选择域。

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

    【讨论】:

    • 我做了一些其他的测试。如果我理解正确,Selenium 驱动程序会在场景的第一页加载时清除所有 cookie 和会话数据。我制作了一个带有“请稍候,正在加载...”内容的静态 html 页面,我首先加载它,开始每个场景。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    相关资源
    最近更新 更多