Почему моя команда Selenium не работает?

#jquery #selenium

#jquery #selenium

Вопрос:

Я пишу сценарий selenium, который должен начать тестирование только после завершения всех вызовов ajax.

На нескольких форумах предлагалось использовать следующее условие (в команде waitForCondition):

 selenium.browserbot.getCurrentWindow().jQuery.active == 0
  

К сожалению, это продолжает выдавать ошибку:

jQuery не определен

jQuery определенно определен на моем сайте. Я также пытался заменить jQuery на $, но получаю ту же ошибку.

Есть идеи?

Ответ №1:

Возможно, вам потребуется дождаться завершения загрузки jQuery, попробуйте подождать, пока

 typeof selenium.browserbot.getCurrentWindow().jQuery == 'function'
  

верно, перед проверкой активен.

Комментарии:

1. Хороший совет. Я не знаю, решило бы это проблему или нет, потому что я заставил ее работать, переключившись на тесты c # selenium (которые сработали).

Ответ №2:

Вы должны использовать selenium.browserbot.getUserWindow().$.active == 0

Ключевым отличием здесь является функция, которая вам нужна getUserWindow() , а не getCurrentWindow()

Ответ №3:

Я только что смог заставить ее работать в Selenium IDE.

 Command: waitForCondition
Taret:   selenium.browserbot.getUserWindow().$.active == 0
Value:   30000
  

Ответ №4:

Если это в Firefox, это может быть обернуто в XPCNativeWrapper. Чтобы обойти это, «наилучший практический» способ получить окно — вызвать getUserWindow(), который обрабатывает разворачивающийся объект, чтобы его можно было использовать.

Это также предполагает, что jQuery не загружается асинхронно.

Ответ №5:

Единственный способ, которым я мог заставить это работать, — это сделать то же самое в тесте C # вместо режима Selenium HTML. В тестировании C # через RC-сервер это работает нормально.