Как записывать сайты на основе ajax с помощью Selenium - PullRequest
1 голос
/ 07 января 2011

У меня есть сайт, на котором много ajax и который требует автоматизации. Тем не менее, я не могу записать ajax части сайта должным образом. Я попробовал ключевое слово waitfor и потерпел неудачу. Я также просмотрел следующий веб-сайт http://www.ibm.com/developerworks/opensource/library/os-webautoselenium/index.html,, но не смог разобраться, как применить код к MyEclipse.

Есть ли у кого-нибудь хорошие руководства по тестированию ajax-приложений?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 07 января 2011

Ajax немного запутался и работает с Selenium. Нет простого ответа на ваш вопрос, но у меня есть несколько советов ..

Вам нужно будет использовать множество этих циклов для ожидания действий / обновлений и т. Д .:

        for (int second = 0;; second++) {
        if (second >= 60) log.error("Timeout (60 seconds) while submitting request");
        try { if (selenium.isElementPresent("elementID")) break; } catch (Exception e) {}
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

Также на страницах с поддержкой Ajax много раз возникали события, возникающие, например, при вводе символов в TextBox, а затем selenium.type("elementID", "12345"); подходит для вас. typeKeys("elementID", "12345"); будет запускать события.

С FireFox и firebug используйте отладчик javascript для анализа происходящего в фоновом режиме. Я предпочитаю использовать отладчик Chromes Inspect. Поговорите со своими разработчиками, чтобы узнать, что вызвало определенные элементы и т. Д.

Во-вторых, вы можете взглянуть на новейшую версию Selenium 2.0. Предполагается, что веб-драйвер намного лучше обрабатывает запросы Ajax, но у меня пока нет времени на работу.

Короче говоря, вам придется самостоятельно написать большую часть кода и модифицировать записанные части. Если не получится, есть коммерческие, которые лучше справляются с некоторыми типами Ajax.

0 голосов
/ 07 января 2011

Если вы используете XPath, то он не будет работать. Попробуйте CSS локаторы. Я использую локаторы Sizzle.js в RC, и он хорошо работает во всех элементах ajax.

Для IDE вы можете перейти на доступные плагины или написать свой и подключить его с помощью опции user-extensions.js.

...