我有一个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);。