Капибара / Селен Капибара :: ElementNotFound - при работе @javascript - PullRequest
1 голос
/ 28 июля 2011

Я использую Cucumber & Capybara для интеграционного тестирования.Поскольку сайт использует много javascript, я настроил среду для использования селена в качестве драйвера javascript.Тем не менее, кажется, что он не работает в элементе, который, как я знаю, должен быть там.Есть ли что-то, что мне не хватает?

Вот функция:

Feature: Combat
  In order to engage in combat
  As a registered user
  I want to be able to kill enemy ships
  @javascript
  Scenario: Initialize combat
    Given I am logged in
    # When I go to the homepage
    When I click element "#enter-combat"
    Then the page should contain a section with the class "map"

Вот определение шага для Когда я нажимаю элемент

When /^(?:|I )click element "([^"]*)"$/ do |id|
  find(id).click
end

Я знаю, что Given I am logged in работает, так как другие тесты, которые его используют, проходят нормально.Любые идеи о том, почему нельзя найти # enter-fight?Когда я сам захожу физически, я вижу это очень хорошо.

Редактировать: Добавлены другие определения шагов.

Given /^I am logged in$/ do
  email = 'murray@monkeyisland.com'
  password = 'demonic'

  steps %Q{
    Given the following user exists:
            | first_name | last_name | email    | password    | password_confirmation |
            | Murray     | Skull     | #{email} | #{password} | #{password}           |
        And I login as "#{email}" with the password "#{password}"
  }
end

Given /^I login as "([^\"]*)" with the password "([^\"]*)"$/ do |email, password|
  steps %Q{
    Given I am not logged in
    When I go to the login page
        And I fill in "user_email" with "#{email}"
        And I fill in "user_password" with "#{password}"
        And I press "Login"
  }
end

Вот вывод, когда я запускаю:

(::) неудачные шаги (::)

Невозможно найти '# enter-fight' (Capybara :: ElementNotFound) ./features/step_definitions/combat_steps.rb:6:in /^(?:|I )click element "([^"]*)"$/' features/combat/combat.feature:9:in Когда я нажимаю элемент "# enter-fight "'

Edit

Сейчас я использую один из веб-шагов по умолчанию: и я нажимаю" enter-fight ", поэтому моя функция теперь:

Feature: Initialize Combat
  In order to engage in combat
  As a registered user
  I want to be able to initialize it

  @javascript
  Scenario: Initialize combat
    Given I am logged in
    When I go to the homepage
    And I press "enter-combat"
    Then the page should contain a section with the class "map" 

Все та же ошибка

1 Ответ

0 голосов
/ 08 сентября 2011

Здесь была другая основная проблема.Кнопка ввода боя, которую я пытался нажать, появляется после того, как кто-то войдет в систему. Теперь, когда я сам заходил на сайт, все работало нормально, вход в систему фактически не удался.После того, как я исправил часть кода, он начал работать.

...