这似乎不是一项非常常见但非常有趣的任务。我不认为有一些标准的方法,所以必须实施一些东西。
我不太了解 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
以用作我的测试的基础:
导入 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| |
|打开|/webapp/test.html| |
|isTextPresent|示例文本| |
|点击|样品链接| |
|waitForPageToLoad|10000| |
|测试完成| | |
此解决方案不会记录verify
s 和assert
s,因此它们也可能在 ExSeleneseTestCase 中被覆盖以产生一些跟踪。