Селениум 2.0rc3 щелкает слишком быстро? - PullRequest
4 голосов
/ 06 июля 2011

Прежде всего, извините за загадочный вопрос.

В настоящее время моя команда использует Selenium 2.0rc3 (с python) для тестирования нашего веб-приложения с Chrome.Когда мы использовали версию Selenium 2.02b, наш тест прошел (он был немного медленным, и у нас были небольшие взломы, которые мы добавили в webdriver).После того, как мы обновились, тест стал чрезвычайно быстрым и начал проваливаться.После отладки мы выяснили, что большинство тестов провалилось, потому что функция click () webdrivers не блокировала () последовательные вызовы.В настоящее время мы добавили sleep () / timeout в 0,5 секунды после каждого клика, и хотя это решает непосредственную проблему, это не совсем позволяет достичь нашей главной цели (которая заключается в ускорении нашего теста)

Ответы [ 3 ]

5 голосов
/ 07 июля 2011

Ваша проблема не в том, что она щелкает слишком быстро.Просто он щелкает до того, как этот элемент присутствует.Есть два способа обойти это:

  1. Подождите, пока элемент не появится, прежде чем нажимать
  2. Увеличьте время неявного ожидания

БоюсьЯ не использовал привязки WebDriver Python.Однако я могу рассказать вам, как это делается в Java, и, надеюсь, вы сами найдете эквивалент Python.

Чтобы дождаться элемента, у нас в Java есть класс WebDriverWait.Вы должны написать Function, который вы передадите методу until(), который передается только тогда, когда элемент существует.Один из способов сделать это можно с помощью driver.findElements( By... ) или wrap driver.findElement( By... ) в обработчике исключений.Function опрашивается до тех пор, пока не будет возвращено значение true или не истечет указанное время ожидания.

Второй метод является предпочтительным для вашего случая, а в Java вы можете выполнить driver.manage().timeouts().implicitlyWait( ... ).

1 голос
/ 07 июля 2011

Я пробовал привязки python для селен-2 rc3 для chrome.Мой опыт был противоположен тому, что вы описываете - после щелчка водитель не знал, что страница готова для его продолжения.Таким образом, вместо ускорения тестов, они оказались очень медленными (потому что водитель ждал целую вечность).Тем не менее, драйвер Firefox выглядит довольно стабильно - возможно, вам следует придерживаться его, пока драйвер Chrome не запечется немного больше.

0 голосов
/ 07 июля 2011

Если click () выполняет вызовы ajax, я бы предложил вам использовать NicelyResynchronizingAjaxController

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...