Javascript связь с Selenium (RC) - PullRequest
3 голосов
/ 30 ноября 2009

Мое приложение выполняет много вычислений в JavaScript в зависимости от того, как и когда пользователь действует в приложении. Проект выводит ценную информацию (через консольные вызовы) о том, как происходит этот расчет, и поэтому мы можем легко заметить любое проникновение NaN s.

Мы планируем интегрировать Selenium (RC с Python) для тестирования или проектирования, но если мы сможем получить выходные сообщения консоли в тестовом примере Python, мы можем идентифицировать любые NaN s или даже любые ошибки.

Итак, есть ли способ, которым Selenium может поглощать эти выходы (предпочтительно в среде без консоли)?

Если нет, я хотел бы знать, могу ли я перенаправить консольные вызовы, возможно, связав переменную console с чем-то другим, чтобы селен мог получить этот вывод и уведомить сторону Python. Или, если не консоль, есть ли другой способ, которым я могу достичь этого.

Я знаю, что у selenium есть такие команды, как waitForElementPresent и т. Д., Но я не хочу показывать эти промежуточные вычисления в приложении или это единственный способ?

Любая помощь приветствуется.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 30 ноября 2009

Существует вызов GetEval (), который возвращает результат вызова JavaScript на страницу. Если у вас есть JavaScript на странице, вы можете сделать что-то вроде

self.assertEqual(selenium.GetEval("this.browserbot.getUserWindow().functionUnderTest().isNaN();"),"false","There was a NaN detected")

Доступ через browserbot позволяет вам вызвать функции javascript на странице и получить результат. IsNaN () вернет false, если вы получите достойный результат

1 голос
/ 14 декабря 2009

Если вы просто проверяете, что функции JavaScript выполняют правильные вычисления с заданными входными данными, я бы предложил отделить ваш JavaScript от вашей страницы и использовать среду тестирования JavaScript для проверки функциональности. Тестирование низкоуровневого кода с использованием Selenium - это много ненужных накладных расходов. Если вы идете против полностью визуализированной страницы, это потребует запуска вашего приложения на сервере, что не должно зависеть от тестирования необработанного JavaScript.

Недавно мы перевели наше приложение с использования jsUnit для использования YUI Test, и до сих пор оно было многообещающим. Мы запустили около 150 тестов в FireFox и IE менее чем за три минуты. Наши тесты все еще не идеальны - мы все еще тестируем много JavaScript, используя Selenium. Однако перевод некоторых тестов пользовательского интерфейса в тест YUI сэкономил нам много времени в нашей среде непрерывной интеграции.

...