Привет всем, я пытаюсь исправить мои многочисленные сценарии, которые тестируют страницы с помощью расширенного AJAX и построения экрана на стороне клиента через JQuery и имеют массу проблем.
В основном у меня возникают проблемы с определением, когда выполняются определенные запросы AJAX. Я пытался просто включить задержки сна, но это плохая идея в долгосрочной перспективе. Я также попробовал пару методов, которые я нашел в Интернете, чтобы проверить, все ли вызовы AJAX выполнены, но эти методы кажутся недостаточно стабильными.
Я начал больше изучать Selenium и нашел функции waitForXXX. Взволнованный, я бросил их в свои огуречные шаги, но не повезло. Мой текущий тестовый пример - это динамически загружаемая сетка, которая получает данные через AJAX. (Плагин Jquery Datagrid). Я ищу данные, чтобы найти первую строку без заголовка, а затем щелкаю по ней. Код для щелчка элемента:
page.all(:css, "#{arg1} tr")[1].click();
Иногда это работает, часто - нет, потому что строка еще не загружена. Итак, я пытался:
waitForElementPresent("css=#{arg1} tr:nth-child(1)")
до щелчка по строке, но всякий раз, когда она попадает в эту строку кода, я получаю замечательную ошибку от ruby:
stack level too deep (SystemStackError)
Что я делаю не так, и есть ли лучший способ написать такие шаги, чтобы они действительно ожидали завершения вызова AJAX?
Обратите внимание, что само приложение работает нормально - это просто для того, чтобы мой тестовый код стал надежно зеленым.