Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Behat填充隐藏的输入_Behat - Fatal编程技术网

用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);
}