6 Stimmen

Ausfüllen von versteckten Eingaben mit Behat

Ich schreibe Behat-Tests und muss den Wert eines verborgenen Eingabefeldes ändern

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

Ich muss den Wert dieses Eingabefeldes ändern, aber ich erhalte immer

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

Ich habe den Schritt

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

Gibt es etwas Besonderes, das getan werden muss, um verborgene Eingabefelder zu ändern?

12voto

WayFarer Punkte 1040

Trotz der Tatsache, dass der Benutzer verborgene Felder nicht ausfüllen kann, gibt es einige Situationen, in denen es wünschenswert ist, verborgene Felder zu Testzwecken ausfüllen zu können (da Regeln normalerweise Ausnahmen haben). Sie können den nächsten Schritt in Ihrer Merkmalskontextklasse verwenden, um versteckte Felder nach Namen zu füllen:

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

9voto

simply-put Punkte 1058

Rev hat Recht. Wenn echte Benutzer können Eingabefelder über Javascript ändern, indem Sie auf eine Schaltfläche oder einen Link. versuchen, das zu tun. Felder, die für den Benutzer nicht sichtbar sind, sind auch für Mink nicht sichtbar.

Alternativ können Sie auch anrufen $session->executeScript($javascript) aus Ihrem Kontext mit $javascript wie

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

und prüfen Sie, ob das funktioniert

2voto

ocornu Punkte 579

Das ist so gewollt. Mink ist ein Benutzer+Browser-Emulator. Er emuliert alles, was ein echter Benutzer in einem echten Browser tun kann. Und der Benutzer kann sicherlich keine versteckten Felder auf der Seite ausfüllen - er sieht sie nur nicht.

Mink ist kein Crawler, es ist ein Browser-Emulator. Die ganze Idee von Mink ist es, echte Benutzerinteraktionen durch eine einfache und saubere API zu beschreiben. Wenn es etwas gibt, das der Benutzer nicht über einen echten Browser tun kann, kann man es mit Mink nicht tun.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X