用Behat填充隐藏的输入
我正在编写行为测试,需要更改隐藏输入字段的值用Behat填充隐藏的输入,behat,Behat,我正在编写行为测试,需要更改隐藏输入字段的值 <input type="hidden" id="input_id" ..... /> 我一直在用台阶 $steps->And('I fill in "1" for "input_id"', $world); 修改隐藏的输入字段需要做些特殊的事情吗?这是设计的意图。Mink是用户+浏览器仿真器。它模拟真实用户在真实浏览器中所能做的一切。用户肯定无法填充页面上的隐藏字段——他就是看不到 水貂不是爬虫,它是一个浏览器模拟器。Mink
<input type="hidden" id="input_id" ..... />
我一直在用台阶
$steps->And('I fill in "1" for "input_id"', $world);
修改隐藏的输入字段需要做些特殊的事情吗?这是设计的意图。Mink是用户+浏览器仿真器。它模拟真实用户在真实浏览器中所能做的一切。用户肯定无法填充页面上的隐藏字段——他就是看不到 水貂不是爬虫,它是一个浏览器模拟器。Mink的整个思想是通过简单而干净的API来描述真实的用户交互。如果有什么事情,那个用户不能通过真正的浏览器来做——你们不能用水貂来做
(来源:)修订版是正确的。如果真正的用户可以通过点击按钮或链接通过javascript更改输入字段。试试看。对用户不可见的字段对Mink也不可见 或者,您可以使用$javascript从上下文调用
$session->executeScript($javascript)
$javascript = "document.getElementById('input_id').value='abc'";
$this->getSession()->executeScript($javascript);
并检查这是否有效尽管用户无法填充隐藏字段,但在某些情况下,需要填充隐藏字段进行测试(通常规则有例外)。可以使用要素上下文类中的下一步按名称填充隐藏字段:
/**
* @Given /^I fill hidden field "([^"]*)" with "([^"]*)"$/
*/
public function iFillHiddenFieldWith($field, $value)
{
$this->getSession()->getPage()->find('css',
'input[name="'.$field.'"]')->setValue($value);
}
例如,我用它来测试带有自定义验证器的ReCaptcha小部件(如果测试环境是根据预定义的值集进行验证),而不在真实的浏览器中运行它。这也是测试服务器端验证黑客的一个很好的策略。$session从何而来?
/**
* @Given /^I fill hidden field "([^"]*)" with "([^"]*)"$/
*/
public function iFillHiddenFieldWith($field, $value)
{
$this->getSession()->getPage()->find('css',
'input[name="'.$field.'"]')->setValue($value);
}