Codeception - 无法在 Firefox 中保存和加载会话快照



我有一个loggin方法,可以保存会话快照以供将来调用。

public function loggedInIntoFrontend($name, $password)
{
    $I = $this->driver;
    // if snapshot exists - skipping login
    if ($I->loadSessionSnapshot('login')) {
        return;
    }
    // logging in
    $I->amOnPage(LoginPage::getUrl());
    $I->submitForm(
        LoginPage::$form,
        [
            '_username' => $name,
            '_password' => $password,
        ],
        LoginPage::$btnLogin
    );
    $I->see('Autotest');
    // saving snapshot
    $I->saveSessionSnapshot('login');
}

我在_before()方法中使用它。喜欢这里:

class OrderFlowCest
{
    public function _before(AcceptanceTester $I)
        {
            $I->loggedInIntoFrontend(LoginPage::LOGIN, LoginPage::PASSWORD);
        }
}

我有可能在几个Cest中使用它。在Chrome中,它可以正常工作。但是,当我尝试使用Firefox在环境中运行CEST时 - 我得到了这个错误:

[Facebook webdriver exception InvalidCookiedomainException]您可以 仅设置当前域构建信息的cookie:版本:'2.53.1', 修订:" A36B8B1",时间:'2016-06-30 17:37:03'系统信息:主机: '5-255-93-81',ip:'5.255.93.81',os.name:'windows',os.ark:'x86', os.version:'10 .0',java.version:'1.8.0_101'驱动程序信息: 驱动程序:未知

有人遇到过吗?

我在codeception gitter聊天中得到了lars frantzen的答案。

firefox,可以保存当前那里的所有饼干更加限制。您可以通过保存真正保存会话所需的cookie来解决此问题(也不是所有其他可能导致Firefox抱怨它们不在当前域中的cookie)。因此,请勿使用SaveSessionsNapShot函数,而是类似$ this-> session = $ i-> grabcookie('mySession')之类的东西;然后$ i-> setCookie('MySession',$ this-> session);。

最新更新