Codecept隐藏字段

时间:2015-01-06 05:32:46

标签: codeception

我的表单包含隐藏字段csrf,我的Controller有一种检查CSRF攻击的方法。在我的functional test中,我尝试fillField检查我的Controller's method重定向到特定页面,如果有人temper form。我在某处读到codecept仅适用于可见字段。

有没有办法可以填写“功能”或“验收”测试的隐藏字段?

4 个答案:

答案 0 :(得分:2)

这是唯一适合我的系统:

$I->executeJS('$(".yourMethodClass").val("YOUR_VALUE_HERE");'); 

当然,您可以通过ID或任何您想要的JavaScript选择器来调用它。

答案 1 :(得分:1)

您可以将fillField用于隐藏输入。我在我的测试中使用它并且它工作得很好,它恰当地填充了隐藏输入的值。

$I->fillField(['name' => 'email'], 'some email');
$I->fillField(['name' => 'password'], 'myPassword');

$I->fillField('privilegesList','read'); //this is hidden input
$I->click('submit button');

答案 2 :(得分:0)

好的,解决这个问题:

  

在填充隐藏的输入之前,执行jquery命令以显示输入:

$I->executeJS('$(".req").show();'); 
$I->fillField('inputWebHidden', 'some-value');
  
      
  • 将'.req'替换为您的字段类/ id / whatever。
  •   
  • 请注意,我使用的是PhantomJS服务器,并抛出异常: [Facebook \ WebDriver \ Exception \ InvalidElementStateException]
  •   
  • 我知道这可能被视为黑客攻击。但就蜂蜜罐而言,这很好。
  •   

答案 3 :(得分:-1)

您可以使用submitForm()提交隐藏的表单值:

$I->submitForm('#id_of_form', array(
    'hidden_field_name' => 'value_to_submit'
));

但我认为你是对的,你不能使用fillField()或类似的方法。