デフォルトでは、フレームワークは可能なセレクターのセットを通過します。1 つのステップで複数のことを行うためにグループ化する場合を除き、ステップ定義を明示的に記述する必要はありません。代わりに 2 つの手順を実行するだけです
When I fill in "grizzlist-quicksearch" with "sometext"
And I press "delete-bt"
これらのステップ定義は組み込まれているため、他に何もする必要はありません。ただし、このステップに入れるのはcssであるため、これは機能しません。適切な方法は、何か他のものに一致させることです。
When I fill in "valueOfInputNameAttribute" with "sometext"
And I press "valueOfSubmitButtonNameAttribute"
たとえば、フレームワークが使用し、機能で使用できるコードは次のとおりです。
https://github.com/Behat/MinkExtension/blob/master/src/Behat/MinkExtension/Context/MinkContext.php
fillField を使用するものを探します
fillField を使用して作業を行っていることに気付くでしょう
ソースをさらに掘り下げると、これは Mink/Element の traversableelement.php にあります。
/**
* Fills in field (input, textarea, select) with specified locator.
*
* @param string $locator input id, name or label
* @param string $value value
*
* @throws ElementNotFoundException
*/
public function fillField($locator, $value)
{
$field = $this->findField($locator);
if (null === $field) {
throw new ElementNotFoundException(
$this->getSession(), 'form field', 'id|name|label|value', $locator
);
}
$field->setValue($value);
}
これはロケーターを使用しており、id|name|label|value によってフィーチャに提供されたテキストを使用して入力要素を見つけようとします。
したがって、id属性で一意のIDを使用することを検討するか、入力の名前属性が一意である場合は、代わりに使用することを検討する必要があります..など..など...
css を使用して物事に集中するには、新しいステップ定義が必要になります。これは、おそらく書く必要のないコードを書くことを意味しますが、場合によっては書く必要があります。
ページ要素を見つけるために本当に css だけに制限されている場合は、FeatureContext でこのようなカスタム ステップ定義を使用します。
/**
* @When /^I fill in the quicksearch with "([^"]*)"$/
*/
public function iFillInTheQuickSearchWith($value)
{
$element = $session->getPage()->find('css', 'INPUT#grizzlist-quicksearch');
$element->setValue($value);
}
始めるのに役立つことを願っています。BDD フレームワークを理解するのは、始めたばかりでは難しい場合があります。