Servlets 如何为selenium core创建/postResults servlet
我看了文档,它说的就是创建一个servlet。。。用什么 这个servlet需要使用哪些代码 它是否只需要为空并具有postResults的名称 是否为此提供了ant脚本 我在谷歌或selenium的网站上找不到任何让我参与进来的东西 谢谢 更新:我发现了以下示例Servlets 如何为selenium core创建/postResults servlet,servlets,selenium,Servlets,Selenium,我看了文档,它说的就是创建一个servlet。。。用什么 这个servlet需要使用哪些代码 它是否只需要为空并具有postResults的名称 是否为此提供了ant脚本 我在谷歌或selenium的网站上找不到任何让我参与进来的东西 谢谢 更新:我发现了以下示例 <servlet> <servlet-name>postResults</servlet-name> <servlet-class>com.
<servlet>
<servlet-name>postResults</servlet-name>
<servlet-class>com.thoughtworks.selenium.results.servlet.SeleniumResultsServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>postResults</servlet-name>
<url-pattern>/postResults</url-pattern>
</servlet-mapping>
后期结果
com.thoughtworks.selenium.results.servlet.SeleniumResultsServlet
1.
后期结果
/后期结果
然而,我似乎在selenium JAR中的任何地方都找不到这个类文件。我有RC和常规的内核下载,但没有骰子。我从哪里获得这个jar文件?postResults servlet在持续集成环境中非常有用,您希望将selenium测试结果发送到您选择的URL(我相信在设置selenium测试时它是可配置的),然后让服务器将selenium结果作为构建结果的一部分。如果您不想对硒测试结果进行任何后处理,然后,您根本不必设置postResults servlet。如果您像我一样使用Selenium的纯html/javascript功能,那么您知道在测试时不会得到结果报告,除非您在某个地方设置了postResults servlet来推送结果 我找到了一个解决方案,将fitRunner插件拆开,以确定进行一次安装需要什么 这是一个java解决方案 你可以在这里下载一个zip文件,里面有你需要的所有东西和一些你不需要的东西 在web应用程序中,只需将web.xml中的servlet映射添加到web应用程序中。 确保您的参考文件包是按如下方式创建的 然后,如果您还没有以下JAR,请将它们添加到您的web应用程序库中 jstl.jar 及 standard.jar 创建两个类 your.package.path.SeleniumResultServlet 在其中粘贴以下代码
package com.your.package.path;
import java.io.IOException;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SeleniumResultsServlet extends HttpServlet {
private static TestResults results;
public static TestResults getResults() {
return results;
}
public static void setResults(TestResults testResults) {
results = testResults;
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if (request.getParameter("clear") != null) {
results = null;
ServletOutputStream out = response.getOutputStream();
out.println("selenium results cleared!");
} else {
forwardToResultsPage(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String result = request.getParameter("result");
String totalTime = request.getParameter("totalTime");
String numTestPasses = request.getParameter("numTestPasses");
String numTestFailures = request.getParameter("numTestFailures");
String numCommandPasses = request.getParameter("numCommandPasses");
String numCommandFailures = request.getParameter("numCommandFailures");
String numCommandErrors = request.getParameter("numCommandErrors");
String suite = request.getParameter("suite");
int numTotalTests = Integer.parseInt(numTestPasses) + Integer.parseInt(numTestFailures);
List testTables = createTestTables(request, numTotalTests);
results = new TestResults(result, totalTime,
numTestPasses, numTestFailures, numCommandPasses,
numCommandFailures, numCommandErrors, suite, testTables);
forwardToResultsPage(request, response);
}
private List createTestTables(HttpServletRequest request, int numTotalTests) {
List testTables = new LinkedList();
for (int i = 1; i <= numTotalTests; i++) {
String testTable = request.getParameter("testTable." + i);
System.out.println("table " + i);
System.out.println(testTable);
testTables.add(testTable);
}
return testTables;
}
private void forwardToResultsPage(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("results", results);
request.getRequestDispatcher("/WEB-INF/jsp/viewResults.jsp").forward(request, response);
}
public static class TestResults {
private final String result;
private final String totalTime;
private final String numTestPasses;
private final String numTestFailures;
private final String numCommandPasses;
private final String numCommandFailures;
private final String numCommandErrors;
private final String suite;
private final List testTables;
public TestResults(String postedResult, String postedTotalTime,
String postedNumTestPasses, String postedNumTestFailures,
String postedNumCommandPasses, String postedNumCommandFailures,
String postedNumCommandErrors, String postedSuite, List postedTestTables) {
result = postedResult;
numCommandFailures = postedNumCommandFailures;
numCommandErrors = postedNumCommandErrors;
suite = postedSuite;
totalTime = postedTotalTime;
numTestPasses = postedNumTestPasses;
numTestFailures = postedNumTestFailures;
numCommandPasses = postedNumCommandPasses;
testTables = postedTestTables;
}
public String getDecodedTestSuite() {
return new UrlDecoder().decode(suite);
}
public List getDecodedTestTables() {
return new UrlDecoder().decodeListOfStrings(testTables);
}
public String getResult() {
return result;
}
public String getNumCommandErrors() {
return numCommandErrors;
}
public String getNumCommandFailures() {
return numCommandFailures;
}
public String getNumCommandPasses() {
return numCommandPasses;
}
public String getNumTestFailures() {
return numTestFailures;
}
public String getNumTestPasses() {
return numTestPasses;
}
public String getSuite() {
return suite;
}
public Collection getTestTables() {
return testTables;
}
public String getTotalTime() {
return totalTime;
}
public int getNumTotalTests() {
return Integer.parseInt(numTestPasses) + Integer.parseInt(numTestFailures);
}
}
}
在web inf中创建一个名为jsp的文件夹
将viewResults.jsp复制到zip文件中。
将c.tld复制到/web inf
重新启动服务器
如果您在尝试从selenium加载postResults servlet时遇到一些愚蠢的错误,请尝试将viewResults.jsp中的taglib引用更改为使用sun url,因为不同的版本依赖关系可能无法工作。servlet 1.0和2.0之类的东西
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
然后,当您运行TestRunner并在selenium屏幕中选择automatic选项时,您将拥有一个postResults servlet,您可以随意使用和自定义它
希望这能帮助别人。当试图创建文档时,有一种格式化测试结果的方法是一个很大的帮助,而常规selenium的zip文件并没有提供这种基本功能,您必须自己动手制作 这根本不能回答我的问题抱歉,您似乎对servlet的用途感到困惑,所以我只是指出,如果您没有任何计划在servlet中使用结果,那么您不需要创建servlet,这听起来就像您在询问创建空servlet时所说的那样。很抱歉,Seleniums结果窗格不够全面,因此您必须有一个结果servlet jet,因为没有开发出与selenium一起提供的zip文件外的易于实现的解决方案。所以他们让你想出来。
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>