от тестовых сценариев селена обратно к селене - PullRequest
1 голос
/ 21 июля 2010

У меня есть куча тестовых сценариев, написанных с использованием Test :: WWW :: Selenium (но тот факт, что я использовал perl, несущественен, любая поддержка языков Селена, вероятно, имеет проблему, которую я описываю). Когда освободятся винтики в моем приложении, я хочу повторить тест, используя Selenium IDE, что даст мне полный контроль над действием

Но я не уверен, как вернуться из моего тестового скрипта обратно в IDE Селена, вы не можете вставить Perl в IDE и заставить его преобразовать обратно в «HTML» (иначе, внутренний язык селена, иначе selense) , Увы, вытащить его было достаточно просто.

RemoteRunner содержит историю команд, и я могу скопировать и вставить ее непосредственно в selenium ide, и это было бы здорово, но блок истории будет содержать только 5 или 6 строк и очищаться сам! Так что это насмехается надо мной и бесполезно.

Так, как регистрировать это более эффективно? Параметры ведения журнала для selenium rc (-browserSideLog, -log), по-видимому, не помогают в этом отношении. Я подумываю найти его RemoteRunner.html и взломать его, возможно, чтобы он не очистил этот список, но есть ли другой способ?

Ответы [ 2 ]

4 голосов
/ 22 июля 2010

Кажется, это не очень обычная задача, но очень интересная.Я не думаю, что есть какой-то стандартный способ, так что что-то должно быть реализовано.

Я не очень много знаю Perl, и я использую Java, так что это просто напутствие:

Я бы расширилкласс DefaultSelenium для моих тестов, который будет использовать расширенный HttpCommandProcessor, который будет регистрировать все выполненные команды:

import com.thoughtworks.selenium.HttpCommandProcessor;

public class ExtHttpCommandProcessor extends HttpCommandProcessor {

    public ExtHttpCommandProcessor(String serverHost, int serverPort,
            String browserStartCommand, String browserURL) {
        super(serverHost, serverPort, browserStartCommand, browserURL);
    }

    public String doCommand(String commandName, String[] args) {
        StringBuffer sb = new StringBuffer();

        sb.append("|" + commandName + "|");     

        if (args!=null) {
            for (String arg : args) {
                sb.append(arg + "|");
            }

            if (args.length<2) {
                sb.append(" |");
            }
        } else {
            sb.append(" | |");
        }

        System.out.println(sb.toString());
        // or log it where you want

        return super.doCommand(commandName, args);
    }

}

И

import com.thoughtworks.selenium.DefaultSelenium;

public class ExtSelenium extends DefaultSelenium {
    public ExtSelenium(String serverHost, int serverPort,
            String browserStartCommand, String browserURL) {
        super(new ExtHttpCommandProcessor(serverHost, serverPort, browserStartCommand, browserURL));
    }
}

Тогда я бы расширил SeleneseTestCase для использованияв качестве базы в моих тестах:

import com.thoughtworks.selenium.SeleneseTestCase;

public class ExSeleneseTestCase  extends SeleneseTestCase {    

    public void setUp(String url, String browserString) throws Exception {
        int port = 4444;
        if (url==null) {
            url = "http://localhost:" + port;
        }
        selenium = new ExtSelenium("localhost", port, browserString, url);
        selenium.start();
        selenium.setContext(this.getClass().getSimpleName() + "." + getName());
    }

}

Результат такого теста будет выглядеть следующим образом:

|getNewBrowserSession | * iexplore | http://localhost:8080/|
| setContext | SimpleTest.testNew ||
| open | /webapp/test.html ||
| isTextPresent | Образец текста ||
| нажмите | sampleLink ||
| waitForPageToLoad | 10000 ||
| testComplete |||

Это решение не будет регистрировать verify с и assert с, поэтому они также могут быть переопределены в ExSeleneseTestCase для получения некоторого следа.

1 голос
/ 17 ноября 2010

Вы также можете пойти другим путем, который, вероятно, проще: сохранить (частичные) selenese HTML-файлы при их создании, а также из кода perl / java / ..., проанализировать файлы и выполнить строки, используя doCommand . Таким образом, вам не нужно восстанавливать утверждения / проверки утверждений, потому что они не были потеряны с самого начала.

...