Codeception - 无法在Firefox

时间:2017-03-07 08:49:45

标签: php webdriver codeception browserstack

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

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()方法的Cests中使用它。像这里:

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

我可能会在几个Cests中使用它。 在Chrome中,它运行正常。但是当我尝试在Firefox环境中运行我的Cests时 - 我收到了这个错误:

  

[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.arch:'x86',   os.version:'10 .0',java.version:'1.8.0_101'驱动程序信息:   driver.version:未知

有没有人遇到过这个?

1 个答案:

答案 0 :(得分:0)

我在Codeception gitter chat中得到Lars Frantzen的答案。

保存目前存在的所有cookie可能会限制Firefox。您可以通过保存您真正需要保存会话的cookie来解决此问题(而不是所有其他可能导致Firefox抱怨他们不在当前域中的cookie)。所以不要使用saveSessionSnapshot函数,但是类似于$ this - > session = $ I-> grabCookie('MYSESSION');然后是$ I-> setCookie('MYSESSION',$ this-> session);。