为什么我的servlet不会在Selenium Grid中显示

时间:2017-03-27 16:33:38

标签: java servlets selenium-grid

我已经制作了一个用于硒网格的servlet,从我所看到的,我已经跟踪了关于硒的所有信息(实际上没有多少)但是我仍然没有得到它。

这是我的servlet中的代码:

package servletPackage;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Servlet
 */
public class Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("test");
        PrintWriter write = response.getWriter();
        write.println("This is <b>bold</b>");
    }

}

我正在启动我的网格中心:

java -jar selenium-server-standalone-3.0.0.jar -role hub -port 4444 -servlets servletPackage.Servlet

问题是当我点击页面http://localhost:4444/grid/admin/Servlet时,我得到一个哎呀页面。我不明白我在哪里错了。我的代码中有错误吗?当网格启动时,我没有看到它抛出任何异常。

编辑:这是我在jar中的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SampleServlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description>This is a sample servlet</description>
    <display-name>Servlet</display-name>
    <servlet-name>Servlet</servlet-name>
    <servlet-class>servletPackage.Servlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/Servlet</url-pattern>
  </servlet-mapping>
</web-app>

1 个答案:

答案 0 :(得分:0)

问题在于您启动Grid的方式

java -jar selenium-server-standalone-3.0.0.jar -role hub -port 4444 -servlets servletPackage.Servlet

我猜selenium-server-standalone-3.0.0.jar代表您从Selenium downloads页面下载的jar。

因为你正在做java -jar并且因为你的jar不包含servletPackage.Servlet的类,所以servlet永远不会被注册到Grid。

解释

  

问题出在我点击页面时   http://localhost:4444/grid/admin/Servlet我收到了一个哎呀的页面。

选择以下其中一项:

  1. 您构建了一个超级jar,其中包含selenium库以及同一jar中的servlet类(只有java -jar才足够)
  2. 你从servletPackage.Servlet类中构建一个jar,将它放在类路径中,然后求助于java -cp selenium-server-standalone-3.0.0.jar;myjar.jar -servlets servletPackage.Servlet(如果你在windows上使用;来分隔jar并使用它们':'如果您使用的是OSX / Unix)
  3. 在此之后,您应该看到您的servlet已连接。

      

    我已经制作了一个用于硒网格的servlet,从我所能看到的   跟踪了关于硒的所有信息(那里没有太多信息)   实际上)但我仍然没有得到它。

    在文档方面并非完全正确。您是否参考了官方文档页面here

      

    编辑:这是我在jar中的web.xml

    我怀疑你是否需要web.xml。从我在网格代码中看到的情况来看,我认为它不会引用任何web.xml来包装初始化。