我正在编写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);
修改隐藏的输入字段是否需要做一些特殊工作?
答案 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)