Я пытаюсь настроить тестирование Cucumber в приложении Jquery Mobile, но тестирование щелчками приводит к неожиданной ошибке.Вот сценарий:
problem.feature
Scenario: Clicking problem when not signed in
When I go to the wall page for The Beast
Then I should see "Blue"
When I click the problem "Blue"
Then I go to the sign up page
И соответствующий шаг, выполненный для захвата второй до последней строки, выглядит следующим образом:
steps.rb
When /^I click the problem "(.*)"$/ do |problem_name|
find(:xpath, "//h3[text() = '#{problem_name}']/parent::a").click
end
До этого момента все проходит хорошо.Когда доходит до щелчка проблемы, выдается следующее сообщение об ошибке:
When I click the problem "Blue"
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each (ActionView::Template::Error)
Я также попытался включить отладчик непосредственно перед вызовом find (). Click в steps.rb.Когда я затем запускаю команду find вручную, она действительно возвращает следующее:
(rdb:1) p find(:xpath, "//h3[text() = 'Blue']/parent::a")
#<Capybara::Element tag="a" path="/html/body/div/div[2]/ul/li[2]/a">
А затем запуск в отладчике с «.click» в конце выдает следующее:
(rdb:1) p find(:xpath, "//h3[text() = '#{problem_name}']/parent::a").click
ActionView::Template::Error Exception: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
(rdb:1) p find(:xpath, "//h3[text() = '#{problem_name}']/parent::a").click
nil
Таким образом, кажется, что Капибара может найти нужный элемент, но затем при попытке щелкнуть по нему каким-то образом устанавливает ноль?Я хотел бы знать, как я могу правильно выполнить клик, который я хочу выполнить, используя Capybara.