我有一个登录方法,可以保存会话快照以供将来调用。
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:未知
有没有人遇到过这个?
答案 0 :(得分:0)
我在Codeception gitter chat中得到Lars Frantzen的答案。
保存目前存在的所有cookie可能会限制Firefox。您可以通过保存您真正需要保存会话的cookie来解决此问题(而不是所有其他可能导致Firefox抱怨他们不在当前域中的cookie)。所以不要使用saveSessionSnapshot函数,但是类似于$ this - > session = $ I-> grabCookie('MYSESSION');然后是$ I-> setCookie('MYSESSION',$ this-> session);。