View Javadoc

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