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

Revは正しいです。実際のユーザーがボタンまたはリンクをクリックして、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 に答える