对于我的一个Selenium Cests,我想设置一个cookie,但这根本不起作用。为了找到问题,我将代码减少到绝对最小值,令我惊讶的是设置cookie似乎根本不起作用。
/**
* Test if we can set simple cookies
*
* @param \AcceptanceTester $i
* @throws Exception
*/
public function settingCookieSetsCookie(AcceptanceTester $i)
{
$cookieDefaultParams = [
'path' => '/',
'secure' => false,
'httpOnly' => false,
'expiry' => 900,
'domain' => 'www.testdomain.local'
];
$i->amOnPage('/cookieCest.php');
$i->setCookie('example', 'myvalue', $cookieDefaultParams);
$i->amOnPage('/cookieCest.php'); // reload page
$cookieValue = $i->grabCookie('example');
$i->assertEquals('myvalue', $cookieValue);
}
出于测试目的,我建立了一个本地测试域www.testdomain.local,它工作正常。
不幸的是,上述测试失败并出现以下错误:
有1次失败:
1)BackendLoginCest:设置cookie设置cookie测试codeception \ acceptance \ CookieCest.php:settingCookieSetsCookie Step Assert等于“myvalue”,null Fail Failed断言null匹配预期的'myvalue'。
场景步骤:
- $ I-> assertEquals(“myvalue”,null)at codeception \ acceptance \ CookieCest.php:36
- $ I-> grabCookie(“example”)at codeception \ acceptance \ CookieCest.php:35
- $ I-> amOnPage(“/ cookieCest.php”)at codeception \ acceptance \ CookieCest.php:34
- $ I-> setCookie方法( “示例”, “myvalue的”,{ “路径”: “/”, “安全”:假 “的HttpOnly”:假 “期满”:900, “域”:“www.new- ep ...})在codeception \ acceptance \ CookieCest.php:33
- $ I-> amOnPage(“/ cookieCest.php”)at codeception \ acceptance \ CookieCest.php:32
FAILURES!测试:1,断言:1,失败:1.`
据我所知,cookie params配置看起来很好(似乎需要,因为它会导致错误)。
我目前正在使用selenium-server-standalone-3.141.59.jar,但尝试了产生相同问题的旧版本。
引用文件cookieCest.php
只是一个简单的脚本var_dumps $_COOKIE
所以我可以看到PHP中没有可用的cookie值。
有没有人遇到类似的问题,知道如何处理它?
你的代码应该有效。可能的解决方案是,当您要设置cookie以使其失败时,不会加载页面。
此外,如果你想检查你的cookie,你可以使用seeCookie
函数,如:
试试这个解决方案,让我知道它是否有任何改变。
$i->amOnPage('/cookieCest.php');
$i->wait(5);
$i->setCookie('example', 'myvalue', $cookieDefaultParams);
$i->seeCookie('example');
使用较旧的Chrome版本(例如66)尝试此测试。我认为所有与cookie相关的内容都会被最新的几个Chrome版本破坏。