View Javadoc

1   package com.atlassian.selenium;
2   
3   import org.apache.log4j.Logger;
4   import org.openqa.selenium.server.SeleniumServer;
5   import org.openqa.selenium.server.RemoteControlConfiguration;
6   
7   /**
8    * Helper class to setup the Selenium Proxy and client.
9    */
10  public class SeleniumStarter
11  {
12      private static final Logger log = Logger.getLogger(SeleniumStarter.class);
13  
14      private static SeleniumStarter instance = new SeleniumStarter();
15      private SeleniumClient client;
16      private SeleniumServer server;
17      private String userAgent;
18      private boolean manual = true;
19  
20      private SeleniumStarter()
21      {
22      }
23  
24      public static SeleniumStarter getInstance()
25      {
26          return instance;
27      }
28  
29      public synchronized SeleniumClient getSeleniumClient(SeleniumConfiguration config)
30      {
31          if (client == null)
32          {
33              client = new SeleniumClient(config);
34          }
35          return client;
36      }
37  
38      public synchronized SeleniumServer getSeleniumServer(SeleniumConfiguration config)
39      {
40          if (server == null)
41          {
42              try
43              {
44                  RemoteControlConfiguration rcConfig = new RemoteControlConfiguration();
45                  rcConfig.setPort(config.getServerPort());
46                  rcConfig.setDebugMode(true);
47                  server = new SeleniumServer(rcConfig);
48              } catch (Exception e)
49              {
50                  log.error("Error creating SeleniumServer!", e);
51              }
52          }
53          return server;
54      }
55  
56  
57      public void start(SeleniumConfiguration config)
58      {
59          log.info("Starting Selenium");
60  
61          try
62          {
63              if(config.getStartSeleniumServer())
64              {
65                  log.info("Starting Selenium Server");
66                  getSeleniumServer(config).start();
67                  log.info("Selenium Server Started");
68              }
69              else
70              {
71                  log.info("Not starting Selenium Server");
72              }
73  
74              log.info("Starting Selenium Client");
75              getSeleniumClient(config).start();
76              log.info("Selenium Client Started");
77  
78          } catch (Exception e)
79          {
80              log.error("Error starting SeleniumServer!", e);
81          }
82          
83          log.info("Selenium startup complete");
84      }
85  
86      public void stop()
87      {
88          client.stop();
89          if(server != null)
90          {
91              server.stop();
92              // we clear the server object so that any state inside the server object is
93              // removed.  Otherwise people cant run individual tests in IDEA.
94              server = null;
95          }
96      }
97  
98      public boolean isManual()
99      {
100         return manual;
101     }
102 
103     public void setManual(boolean manual)
104     {
105         this.manual = manual;
106     }
107 
108     /**
109      * Returns the user agent that this test is running inside
110      *
111      * @return one of the following
112      *         <ul>
113      *         <li>opera</li>
114      *         <li>ie</li>
115      *         <li>firefox</li>
116      *         <li>safari</li>
117      *         <li>unknown</li>
118      *         </ul>
119      */
120     public String getUserAgent()
121     {
122         return userAgent;
123     }
124 
125     public void setUserAgent(String userAgent)
126     {
127         this.userAgent = userAgent;
128     }
129 }