对于我的Selenium Cest之一,我想设置一个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测试代码接收\ acceptance \ CookieCest.php:settingCookieSetsCookie步骤 断言等于“ myvalue”,null失败断言null匹配失败 预期的“ myvalue”。
场景步骤:
- $ I-> assertEquals(“ myvalue”,null)处于codeception \ acceptance \ CookieCest.php:36
- $ I-> grabCookie(“ example”),位于codeception \ acceptance \ CookieCest.php:35
- $ I-> amOnPage(“ / cookieCest.php”)在codeception \ acceptance \ CookieCest.php:34
- $ I-> setCookie(“ example”,“ myvalue”,{“ path”:“ /”,“ secure”:false,“ httpOnly”:false,“ expiry”:900,“ domain”:“ www .new-ep ...}) 在codeception \ acceptance \ CookieCest.php:33
- $ I-> amOnPage(“ / cookieCest.php”)处于codeception \ acceptance \ CookieCest.php:32
失败!测试:1,断言:1,失败:1.`
据我所知,cookie参数配置看起来不错(而且似乎是必需的,因为将其遗漏会导致错误)。
我当前使用的是selenium-server-standalone-3.141.59.jar,但是尝试了产生相同问题的旧版本。
被引用的文件cookieCest.php
只是一个简单的脚本,它可以var_dumps $_COOKIE
,因此我可以看到PHP中没有cookie值。
有人遇到类似的问题并且知道如何处理吗?
答案 0 :(得分:0)
您的代码应该可以使用。可能的解决方案是,当您要设置cookie时,页面未加载,因此在那里失败。
如果您想检查Cookie,也可以使用函数seeCookie
,例如:
尝试此解决方案,让我知道它是否有所更改。
$i->amOnPage('/cookieCest.php');
$i->wait(5);
$i->setCookie('example', 'myvalue', $cookieDefaultParams);
$i->seeCookie('example');
答案 1 :(得分:0)
尝试使用较旧的Chrome版本(例如66)进行此测试。 我认为与Cookie相关的所有内容在最近的几个Chrome版本中均已损坏。