Как я могу заставить селен / огурец взаимодействовать со «скрытой» ссылкой, которая сейчас находится в лайтбоксе / colorbox? - PullRequest
0 голосов
/ 24 мая 2011

Я использую библиотеку colorbox для отображения лайтбоксов внутри своего приложения (http://colorpowered.com/colorbox/). Код, кажется, работает нормально в браузере, но у меня возникают проблемы с запуском автоматического теста.

Здесьэто некоторый встроенный HTML, который генерируется:

<div class='hidden'>
  <div id='override'>
    Are you sure you want to override this action?
    <br>
      <a href="" class="close_colorbox">Cancel</a></li>
      <a href="#" onclick="override(this); return false;">Override once</a>
  </div>
</div>

Это javascript, который открывает colorbox:

$.fn.colorbox({innerWidth:600, inline:true, href:'#override', scrolling:false});

Этот код открывает лайтбокс и отображает содержимое моего «#override»div. В моих тестах на огурец я могу найти текст внутри этого div, но я получаю ошибку, если пытаюсь перейти по ссылке:

  When I follow "link that generates override"    
  Then I should see "Are you sure you want to override this action?" within "#cboxContent"
  Then I should see "Cancel" within "#cboxContent"
  # Then show me the page
  When I follow "Cancel" within "#cboxContent"

Дает эту ошибку:

Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotDisplayedError)
[remote server] resource://fxdriver/modules/atoms.js:7903:in `'
[remote server] file:///var/folders/nn/nn5oYAICGPawlH+1W406+k+++TI/-Tmp-/webdriver-profile20110524-2973-1d5qq7w/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:249:in `'
[remote server] file:///var/folders/nn/nn5oYAICGPawlH+1W406+k+++TI/-Tmp-/webdriver-profile20110524-2973-1d5qq7w/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:298:in `'
[remote server] file:///var/folders/nn/nn5oYAICGPawlH+1W406+k+++TI/-Tmp-/webdriver-profile20110524-2973-1d5qq7w/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:313:in `'
[remote server] file:///var/folders/nn/nn5oYAICGPawlH+1W406+k+++TI/-Tmp-/webdriver-profile20110524-2973-1d5qq7w/extensions/fxdriver@googlecode.com/components/nsCommandProcessor.js:190:in `'
./features/step_definitions/web_steps.rb:35
./features/step_definitions/web_steps.rb:14:in `with_scope'
./features/step_definitions/web_steps.rb:14:in `with_scope'
./features/step_definitions/web_steps.rb:34:in `/^(?:|I )follow "([^"]*)"(?: within "([^"]*)")?$/'
features/prerequisites.feature:38:in `When I follow "Cancel" within "#cboxContent"'

Кто-нибудь видел эту ошибку раньше и как вы ее обошли? (Если я раскомментирую шаг «покажи мне страницу», то это также сработает)

1 Ответ

0 голосов
/ 24 мая 2011

У меня похожая проблема с фреймворком Jquery-mobile.

Насколько я понимаю, Capybara должна ждать, пока все вызовы AJAX не будут завершены, прежде чем выполнять проверку или двигаться дальше.Однако, если у вас возникла проблема, когда вы думаете, что страница еще не загружена, попробуйте добавить простой «сон 1» к шагу «Я нажимаю» на Capybara, чтобы посмотреть, поможет ли это.

...