使用Behat填充隐藏的输入

时间:2011-09-26 20:47:29

标签: behat

我正在编写Behat测试,我需要更改隐藏输入字段的值

<input type="hidden" id="input_id" ..... />

我需要更改此输入字段的值,但我一直在

Form field with id|name|label|value "input_id" not found

我一直在使用这个步骤

$steps->And('I fill in "1" for "input_id"', $world);

修改隐藏的输入字段是否需要做一些特殊工作?

3 个答案:

答案 0 :(得分:11)

尽管用户无法填充隐藏字段,但在某些情况下,希望能够填充隐藏字段进行测试(通常规则有例外)。您可以使用要素上下文类中的下一步按名称填充隐藏字段:

/**
 * @Given /^I fill hidden field "([^"]*)" with "([^"]*)"$/
 */
public function iFillHiddenFieldWith($field, $value)
{
    $this->getSession()->getPage()->find('css',
        'input[name="'.$field.'"]')->setValue($value);
}

答案 1 :(得分:8)

Rev是对的。如果真实用户可以通过点击按钮或链接通过javascript更改输入字段。试着这样做。 Mink也看不到用户不可见的字段。

或者您可以使用$ javascript(例如

)从您的上下文中调用$session->executeScript($javascript)
$javascript = "document.getElementById('input_id').value='abc'";
$this->getSession()->executeScript($javascript);

并检查是否有效

答案 2 :(得分:2)

这是设计意图。 Mink是用户+浏览器模拟器。它模仿真实用户可以在真实浏览器中执行的所有操作。用户肯定无法填写页面上的隐藏字段 - 他只是看不到它们。

Mink不是抓取工具,它是一个浏览器模拟器。 Mink的整个想法是通过简单而干净的API来描述真实的用户交互。如果有什么东西,那个用户无法通过真正的浏览器做到 - 你不能用Mink做到这一点。

(来源:http://groups.google.com/group/behat/browse_thread/thread/f06d423c27754c4d