2013-12-07 3 views
2

Так что я использую capybara для тестирования моего базового приложения. Приложение использует jquery-анимацию для перехода слайдов.Получение странных проблем Capybara

Так что я получаю всевозможные странные проблемы. Элемент, подобный элементу, не найден (даже при использовании ожидающих искателей и отключении анимации jquery) я переключился с драйвера chrome обратно на Firefox и устранил некоторые проблемы. Мои текущие проблемы включают в себя:

  • Иногда он не находит элементы, если окно браузера не максимизировано, даже если они возвращают true для .visible? если я проведу проверку. (Это фиксированный с горкой ж не реагировать материала)
  • и следующее сообщение об ошибке:

    Failure/Error: click_link "Continue" 
        Selenium::WebDriver::Error::StaleElementReferenceError: 
         Element not found in the cache - perhaps the page has changed since it was looked up 
    

В основном, мои вопросы:

  • , что я делаю неправильно триггером эти проблемы.
  • вы можете мне сказать, что, если у меня есть какие-то другие вопиющие проблемы в моем коде?
  • и при использовании ожидающего Finder, мне нужно приковать мой щелчок возвращенного элемента, чтобы убедиться, что он правильно подождал, или я могу просто найти элемент и вызвать щелчок по другой линии:

Do I должны иметь такую ​​цепочку

page.find('#myDiv a').click_link('continue') 

Или это работает?

page.find('h1').should have_content('Im some headline') 
click_link('continue') 

Вот мой код: http://pastebin.com/z94m0ir5

+0

Это не похоже на то, чтобы соответствовать формату Q & A Stack Overflow. Вероятно, вы получите лучшие результаты в списке рассылки Capybara - https://groups.google.com/d/forum/ruby-capybara – RJHunter

+0

Какую версию Capybara вы используете? Вы можете попробовать обновить до 2.2.0, если вы еще этого не сделали. –

ответ

0
  • Я также видел проблемы с элементами вне экрана не найдено. Я не уверен, что именно это вызывает, но может быть связано с свойством CSS переполнения контейнера. Мы попытались обойти это, убедившись, что окна открыты в полном размере на нашем CI-сервере или в некоторых случаях прокручивают элементы в представлении, выполняя JavaScript. Это кажется Селен ограничение: https://code.google.com/p/selenium/issues/detail?id=4241

  • Трудно точно сказать, что происходит не так, но я с подозрением отношусь к использованию заявлений сна и много использования evaluate_script/execute_script. Это часто плохие признаки. С помощью поискового устройства и методов утверждения в Capybara спальные места не должны быть необходимыми (для некоторых действий вам может потребоваться больше времени ожидания). Выполнение JavaScript, отличное от плохого моделирования того, как пользователь взаимодействует со страницей, не ждет совсем, и когда вы используете jQuery, действия на селекторах, которые не соответствуют чему-либо, будут терпеть неудачу, так что это может привести к состояние страницы неверно.

  • Вам не нужно цепочки. Методы ожидания в Capybara все синхронны.

Смежные вопросы