Thursday, March 3, 2011

Running Selenium from a Java process

How would you run the Selenium process (thread) from a Java process so I don't have to start Selenium by hand?

From stackoverflow
  • The server:

    import org.openqa.selenium.server.SeleniumServer;
    public class SeleniumServerControl {
      private static final SeleniumServerControl instance = new SeleniumServerControl();
      public static SeleniumServerControl getInstance() {
        return instance;
      }
      private SeleniumServer server = null;
      protected SeleniumServerControl() {
      }
      public void startSeleniumServer() {
        if (server == null) {
          try {
            server = new SeleniumServer(SeleniumServer.DEFAULT_PORT);
            System.out.println(" selenium server " + server.toString());
          } catch (Exception e) {
            System.err.println("Could not create Selenium Server because of: "
                + e.getMessage());
            e.printStackTrace();
          }
        }
        try {
          server.start();
        } catch (Exception e) {
          System.err.println("Could not start Selenium Server because of: "
              + e.getMessage());
          e.printStackTrace();
        }
      }
      public void stopSeleniumServer() {
        if (server != null) {
          try {
            server.stop();
            server = null;
          } catch (Exception e) {
            System.err.println("Could not stop Selenium Server because of: "
                + e.getMessage());
            e.printStackTrace();
          }
        }
      }
    }
    

    The client:

    browser = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.google.com");
    browser.start();
    
  • does that SeleniumServer class come with selenium RC?

  • Also there are some additional settings you can use:

     RemoteControlConfiguration settings = new RemoteControlConfiguration();
     File f = new File("/home/user/.mozilla/firefox/default");
     settings.setFirefoxProfileTemplate(f);
     settings.setReuseBrowserSessions(true);
     settings.setSingleWindow(true);
     if (this.ServerWorks == false)
     {
      try
      {
       server = new SeleniumServer(settings);
       server.start();
       this.ServerWorks = true;
      } catch (Exception e)
      {
       e.printStackTrace();
      }
     }
    

0 comments:

Post a Comment