いまこんな感じで書いてます。
FeatureContext.php
<?php
use Behat\Behat\Context\ClosuredContextInterface,
Behat\Behat\Context\TranslatedContextInterface,
Behat\Behat\Context\BehatContext,
Behat\Behat\Exception\PendingException;
use Behat\Gherkin\Node\PyStringNode,
Behat\Gherkin\Node\TableNode;
use Behat\MinkExtension\Context\MinkDictionary;
use Behat\Mink\Selector\CssSelector,
Behat\Mink\Selector\NameSelector,
\Behat\Mink\Selector\SelectorsHandler;
//
// Require 3rd-party libraries here:
//
// require_once 'PHPUnit/Autoload.php';
// require_once 'PHPUnit/Framework/Assert/Functions.php';
//
/**
* Features context.
*/
class FeatureContext extends Behat\MinkExtension\Context\MinkContext
{
//use MinkDictionary;
/**
* Initializes context.
* Every scenario gets it's own context object.
*
* @param array $parameters context parameters (set them up through behat.yml)
*/
public function __construct(array $parameters)
{
// Initialize your context here
}
/**
* @Then /^I wait for the suggestion box to appear$/
*/
public function iWaitForTheSuggestionBoxToAppear()
{
$this->getSession()->wait(5000, "$('.suggestions-results').children().length > 0");
}
/**
* @Given /^I am on "([^"]*)"$/
*/
// public function iAmOn($arg1)
// {
// // throw new PendingException();
// }
/**
* @When /^I fill in "([^"]*)" with "([^"]*)"$/
*/
public function iFillInWith($arg1, $arg2)
{
// throw new PendingException();
$this->getSession()->wait(15000);
}
/**
* @Given /^I click "([^"]*)"$/
*/
public function iClick($arg1)
{
// throw new PendingException();
$this->getSession()->wait(20000);
}
/**
* @Then /^I should see "([^"]*)"$/
*/
// public function iShouldSee($arg1)
// {
// // throw new PendingException();
// }
/**
* @When /^I click_link "([^"]*)"$/
*/
public function iClickLink($arg1)
{
// throw new PendingException();
}
/**
* @Given /^"ログイン"リンクをクリックする$/
*/
public function stepDefinition1()
{
// throw new PendingException();
}
/**
* @Given /^"([^"]*)" に "([^"]*)" を選択する$/
*/
public function fang($arg1, $arg2)
{
// throw new PendingException();
}
/**
* @Given /^一秒待つ$/
*/
public function ta()
{
// throw new PendingException();
sleep(1);
}
/**
* @Given /^(\d+)秒待つ$/
*/
public function ta2($arg1)
{
// throw new PendingException();
sleep($arg1);
}
/**
* @Given /^Ajaxを待つ$/
*/
public function ajax()
{
// throw new PendingException();
sleep(2);
}
/**
* @Given /^"(.+)"に "(.+)"を選択する$/
*/
public function radioButtonSelect($arg1, $arg2)
{
$radio_button = $this->getSession()->getPage()->find('css', 'input[type=radio][name="'.$arg1.'"][value='.$arg2.']');
if (null === $radio_button) {
throw new ElementNotFoundException(
$this->getSession(), 'form field', 'id|name|label|value', $radio_button
);
}
// $value = $radio_button->getAttribute('value');
$radio_button->click();
}
/**
* @Given /^"([^"]*)" checkboxを クリックする$/
*/
public function chekboxClick($arg1)
{
$el = $this->getSession()->getPage()->find('css', 'input[type=checkbox][name="'.$arg1.'"]');
if (null === $el) {
throw new ElementNotFoundException(
$this->getSession(), 'form field', 'id|name|label|value', $el
);
}
// $value = $radio_button->getAttribute('value');
$el->click();
}
/**
*
* @Given /^"([^"]*)" の"class:(.+)"リンクをクリックする$/
*/
public function gotoLinkForClass($arg1,$arg2)
{
$elAry = $this->getSession()->getPage()->findAll('css', 'a.'.$arg2);
if (null === $elAry) {
throw new ElementNotFoundException(
$this->getSession(), 'link', 'id|name|label|value', $elAry
);
}
//print_r($el);
$url = null;
foreach($elAry as $k => $el){
$url = $el->getAttribute('href');
if(preg_match('/'.$arg1.'/',$url)){
break;
}
}
if (null === $url) {
throw new ElementNotFoundException(
$this->getSession(), 'link', 'id|name|label|value', $url
);
}
//header("Location: ".$url);
$this->getSession()->visit($url);
return;
}
/**
* @Given /^"(.+)" から "(.+)"を選択する$/
*/
public function pulldownSelect($arg1, $arg2)
{
// echo $arg1;
$pulldown = $this->getSession()->getPage()->find('css', 'select[name="'.$arg1.'"]');
if (null === $pulldown) {
throw new ElementNotFoundException(
$this->getSession(), 'form field', 'id|name|label|value', $pulldown
);
}
// $value = $radio_button->getAttribute('value');
$pulldown->selectOption($arg2);
}
/**
* @Given /^"id:(.+)"のプルダウンで "(.+)"を選択する$/
*/
public function pulldownSelectForId($arg1, $arg2)
{
$pulldown = $this->getSession()->getPage()->findById($arg1);
if (null === $pulldown) {
throw new ElementNotFoundException(
$this->getSession(), 'form field', 'id|name|label|value', $pulldown
);
}
// $value = $radio_button->getAttribute('value');
$pulldown->selectOption($arg2);
}
/**
* @Given /^"([^"]*)" をクリックする$/
*/
public function clickLinkForId($arg1)
{
$el = $this->getSession()->getPage()->find('css', 'a#'.$arg1);
if (null === $el) {
throw new ElementNotFoundException(
$this->getSession(), 'form field', 'id|name|label|value', $el
);
}
// $value = $radio_button->getAttribute('value');
$el->click();
}
//
// Place your definition and hook methods here:
//
// /**
// * @Given /^I have done something with "([^"]*)"$/
// */
// public function iHaveDoneSomethingWith($argument)
// {
// doSomethingWith($argument);
// }
//
}