编码接收和硒:无法设置cookie

时间:2019-03-08 14:31:26

标签: php selenium cookies codeception

对于我的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”。

     

场景步骤:

     
      
  1. $ I-> assertEquals(“ myvalue”,null)处于codeception \ acceptance \ CookieCest.php:36
  2.   
  3. $ I-> grabCookie(“ example”),位于codeception \ acceptance \ CookieCest.php:35
  4.   
  5. $ I-> amOnPage(“ / cookieCest.php”)在codeception \ acceptance \ CookieCest.php:34
  6.   
  7. $ I-> setCookie(“ example”,“ myvalue”,{“ path”:“ /”,“ secure”:false,“ httpOnly”:false,“ expiry”:900,“ domain”:“ www .new-ep ...})   在codeception \ acceptance \ CookieCest.php:33
  8.   
  9. $ I-> amOnPage(“ / cookieCest.php”)处于codeception \ acceptance \ CookieCest.php:32
  10.   
     

失败!测试:1,断言:1,失败:1.`

据我所知,cookie参数配置看起来不错(而且似乎是必需的,因为将其遗漏会导致错误)。

我当前使用的是selenium-server-standalone-3.141.59.jar,但是尝试了产生相同问题的旧版本。

被引用的文件cookieCest.php只是一个简单的脚本,它可以var_dumps $_COOKIE,因此我可以看到PHP中没有cookie值。

有人遇到类似的问题并且知道如何处理吗?

2 个答案:

答案 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版本中均已损坏。