Аутентификационный тест с Beat, имя пользователя не найдено

У меня проблема с тестом входа в систему с использованием behat, mink и selenium
Я получил ошибку

Form field with id|name|label|value "username" not found.

Мой сценарий:

@javascript
Scenario: View users list
Given I am on "http://localhost/admin"Then I wait 60 seconds
And And I am authenticated as "admin" using "admin"Then I should see "List of customers"

Мой FeatureContext.php:

/**
* @Then /^I wait (\d+) seconds$/
*/
public function iWaitSeconds($seconds)
{
sleep($seconds);
}
/**
* @Given /^And I am authenticated as "([^"]*)" using "([^"]*)"$/
*/
public function andIAmAuthenticatedAsUsing($username, $password) {
$this->visit('http://localhost/admin');
$this->getSession()->getPage()->find('css','input[name="username"]')->setValue($username);
$this->getSession()->getPage()->find('css','input[name="password"]')->setValue($password);
$this->pressButton('Login');
}

Мой behat.yml:

default:
extensions:
Behat\MinkExtension\Extension:
base_url: http:localhost/admin
browser_name: chrome
javascript_session: selenium2
selenium2:
browser: chrome
goutte: ~
paths:
features:  features
bootstrap: features/bootstrap

Я не могу понять, почему эта ошибка, потому что у меня есть форма с таким именем: «имя пользователя». Пожалуйста, помогите мне. Спасибо заранее.

1

Решение

  1. Зачем тебе другой And для этой линии And And I am authenticated as "admin" using "admin"? Это не нравится прямо!

  2. Ваша форма входа внутри http://localhost/admin или что-то вроде http://localhost/admin/login?

  3. Ты говоришь Given I am on "http://localhost/admin" в твоем корнишоне а потом звони $this->visit('http://localhost/admin'); в вашем FeatureContext. Зачем?

  4. Я использую их для моего случая, если это помогает:

Версия 1)

/**
* @Given /^I am logged in$/
* @Given /^I am logged in as "([^"]*)"$/
*/
public function iAmLoggedIn($username = 'user')
{
$this->visit('/logout');
$this->visit('/login');
$this->fillField('username', $username);
$this->fillField('password', 'password');
$this->pressButton('_submit');
}

Версия 2)

use Behat\Behat\Context\Step;

/**
* @When /^I log in as "([^"]*)"$/
*/
public function iLogInAs($username)
{
return [
new Step\Given('I am not logged in'),
new Step\When('I go to "/login"'),
new Step\When('I fill in "username" with "'.$username.'"'),
new Step\When('I fill in "password" with "password"'),
new Step\Then('I press "_submit"'),
new Step\Then('I should be on "/welcome"'),
];
}

РЕДАКТИРОВАТЬ:

Место Then I wait 60 seconds после Given I am on "http://localhost/admin" шаг. Запустите свои тесты (в режиме браузера), чтобы вы могли визуально проверить, находитесь ли вы там, где находится страница входа.

/**
* @Given /^I wait (\d+) seconds$/
*/
public function iWaitSeconds($seconds)
{
sleep($seconds);
}

Пример behat.yml

default:
context:
class: Site\FrontendBundle\Features\Context\FeatureContext
parameters:
output_path: %behat.paths.base%/build/behat/output/
screen_shot_path: %behat.paths.base%/build/behat/screenshot/
extensions:
Behat\Symfony2Extension\Extension:
mink_driver: true
kernel:
env: test
debug: true
Behat\MinkExtension\Extension:
base_url: 'http://localhost/myproject/web/app_test.php/'
files_path: %behat.paths.base%/build/dummy/
javascript_session: selenium2
browser_name: firefox
goutte: ~
selenium2: ~
paths:
features: %behat.paths.base%/src
bootstrap: %behat.paths.features%/Context

# Add "-p firefox" parameter to behat command to run tests with Firefox browser
firefox:
extensions:
Behat\MinkExtension\Extension:
browser_name: firefox
1

Другие решения

Ошибка была в том, что мне пришлось удалить:

$this->visit('http://localhost/admin');

И теперь без этой строчки работает

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector