2017-03-07 19 views
2

我有一个可以保存会话快照以供将来调用的登录方法。代码隐藏 - 无法在Firefox中保存和加载会话快照

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] You may only set cookies for the current domain Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03' System info: host: '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 info: driver.version: unknown

有没有人遇到过吗?

回答

0

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

Firefox,可能更具限制性保存所有当前存在的cookie。你可以通过保存你真正需要保存会话的cookie来解决这个问题(而不是所有其他的可能导致Firefox投诉的cookie都不在当前域中)。所以不要使用saveSessionSnapshot函数,但是像$ this - > session = $ I-> grabCookie('MYSESSION');然后再$ I-> setCookie('MYSESSION',$ this-> session);.