Кажется, это не очень обычная задача, но очень интересная.Я не думаю, что есть какой-то стандартный способ, так что что-то должно быть реализовано.
Я не очень много знаю 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 для получения некоторого следа.