2016-06-02 14 views
1

SzenarioBehat CSS-Selektor - Finding nach Klasse kann nur mit der ersten Klasse

Angenommen, Sie haben ein Eingabefeld mit mehreren CSS-Klassen, wie zum Beispiel geschehen:

<input class="form-control existing-user" value="Darth Darth Binks"/> 

Und im Behat Schritt Sie möchten seinen Wert finden, indem Sie das Eingabeelement nach CSS-Klasse suchen.

Dies funktioniert

$field = $this->getPage()->findAllBy('css', 'form-control')[0]->getValue(); 
// $field is now "Darth Darth Binks" 

Das funktioniert nicht

$field = $this->getPage()->findAll('css', 'existing-user')[0]->getValue(); 
// $field is now null 

Frage

Was ist der Unterschied hier? Muss ich etwas Bestimmtes tun, wenn ich nach einer der Klassen suche, die NICHT zuerst geschrieben werden?

+0

[Ignoriere Div-Elemente mit demselben Klassennamen, um ihren Inhalt zu erhalten] (http://www.inanzzz.com/index.php/post/vsok/iterate-div-elements-with-same-class-name-to -get-the-contents), [Klicken Sie auf ein Element mit einem ID-Tag mit CSS-Selektor] (http://www.inanzzz.com/index.php/post/2y0l/click-on-an- element-that -has-an-id-tag-mit-css-selector), [Erhalte den Inhalt eines gegebenen Elements mit ID] (http://www.inanzzz.com/index.php/post/97ju/get-the-content -of-given-element-with-id), [Klicken Sie auf ein Element mit einem ID-Tag] (http://www.inanzzz.com/index.php/post/pzxm/click-on-an-element- that-hat-ein-id-tag) – BentCoder

Antwort

1

In beiden Beispielen sollten Sie einen gültigen CSS-Selektor verwenden, für Klasse sollten Sie ein '.' vor der Klasse. Einige gültige CSS-Selektoren für das Eingangselement vorgesehen sind:

input.form-control 
 
input.existing-user 
 
input.form-control.existing-user

So eine gültige Verwendung wäre:

$field = $this->getPage()->findAll('css', '.existing-user')->getValue(); 

Bitte auch beachten Sie bitte, dass findAll Methode würde nicht Eine Ausnahme wird ausgelöst, wenn das Element nicht gefunden wird, stattdessen wird null zurückgegeben und die Verwendung von get für einen Wert von null führt zu einem schwerwiegenden PHP-Fehler. Implementieren Sie die Ausnahmebehandlung und verwenden/implementieren Sie bei Bedarf eine waitForElement-Methode.