6

我正在编写 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);

是否需要做一些特别的事情来修改隐藏的输入字段?

4

3 回答 3

12

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

/**
 * @Given /^I fill hidden field "([^"]*)" with "([^"]*)"$/
 */
public function iFillHiddenFieldWith($field, $value)
{
    $this->getSession()->getPage()->find('css',
        'input[name="'.$field.'"]')->setValue($value);
}
于 2013-01-02T23:32:41.527 回答
9

雷夫是对的。如果真实用户可以通过单击按钮或链接通过 javascript 更改输入字段。尝试这样做。对用户不可见的字段对 Mink 也不可见。

或者你可以做的是$session->executeScript($javascript)使用 $javascript 从你的上下文中调用

$javascript = "document.getElementById('input_id').value='abc'";
$this->getSession()->executeScript($javascript);

并检查是否有效

于 2012-10-01T11:20:05.530 回答
2

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

Mink 不是爬虫,它是一个浏览器模拟器。Mink 的整个想法是通过简单干净的 API 来描述真实的用户交互。如果有什么东西,那个用户不能通过真正的浏览器来做——你不能用 Mink 来做。

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

于 2012-03-19T17:04:56.957 回答