Я использую capybara для тестирования моего приложения rails для тестирования интеграции. В моем приложении много лайтбоксов, вызовов Ajax и js.
@javascript
Scenario: I agree functionatilty
Given I go to the create account page
When I click on button which is given as image "lnkTerms2"
And I follow "i_agree"
Then I go to the create account page
Здесь, в приведенном выше коде lnkTerms2 - это и идентификатор, который поможет в вызове функции js для открытия лайтбокса. И я получаю сообщение об ошибке
Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotDisplayedError)
[remote server] resource://fxdriver/modules/atoms.js:9519:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:256:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:305:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:320:in `unknown'
[remote server] file:///tmp/webdriver-profile20111117-6876-18cfcfp/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:197:in `unknown'
(eval):2:in `send'
(eval):2:in `click_link'
./features/step_definitions/web_steps.rb:300:in `/^I click on button which is given as image "([^"]*)"$/'
features/Sign_up_process.feature:61:in `When I click on button which is given as image "lnkTerms2"'
Проблема в том, что эта функция вызывается в webdriver, это нет времени для загрузки вызовов javascript и ajax. И лайтбокс не открывается. Поэтому, пожалуйста, предложите мне какое-нибудь решение.
Также, если предположить, что я пишу строку
When I click on button which is given as image "lnkTerms2"
после 4–5 операторов, тогда она работает нормально, поскольку у нее есть время для загрузки js.