我的表单包含隐藏字段csrf
,我的Controller
有一种检查CSRF
攻击的方法。在我的functional test
中,我尝试fillField
检查我的Controller's method
重定向到特定页面,如果有人temper form
。我在某处读到codecept
仅适用于可见字段。
答案 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()
或类似的方法。