docs: @BeforeSuite(alwaysRun=true)
  	@Parameters(value={"parameters"})
  	public static void startSelenium(String parameters)
  	{
  		parametersMap = parameterScanner(parameters);
  		
  		parametersInfo();
  		
  		String 	browserName = parametersMap.get("browser"),
  				profile = parametersMap.get("profile"),
  				chromeDriverBin = parametersMap.get("chromeDriverBin"),
  				ieDriverBin = parametersMap.get("ieDriverBin"),
  				chromeBin = parametersMap.get("chromeBin"),
  				languages = parametersMap.get("languages");
  				
  		if(browserName == null){
  			throw new IllegalArgumentException(String.format(ErrorMessages.ERROR_TEMPLATE_VARIABLE_NULL,"browser"));
  		}
  		
  		if(driver == null) {
  			if(BrowsersList.FIREFOX.equalsString(browserName)){
  				FirefoxProfile fp = new FirefoxProfile();
  				fp.setPreference("dom.max_script_run_time", 0);
  				fp.setPreference("dom.max_chrome_script_run_time", 0);
  				if(profile != null && !profile.isEmpty()){
  					fp.setPreference("webdriver.firefox.profile", profile);
  				}
  				if(languages != null && !languages.isEmpty()){
  					fp.setPreference("intl.accept_languages", languages);
  				}
  				driver = new WebDriverAdapter(new FirefoxDriver(fp));
  			}
  			else if(BrowsersList.CHROME.equalsString(browserName)) {
  				
  				if(chromeBin == null){
  					throw new IllegalArgumentException(String.format(ErrorMessages.ERROR_TEMPLATE_VARIABLE_NULL,"chromeBin"));
  				}
  				
  				
  				// Optional, if not specified, WebDriver will search your path for chromedriver 
  				// in the system environment. (OBS: To evade problems, webdriver.chrome.driver MUST have a value.
  				if(System.getProperty("webdriver.chrome.driver") == null || System.getProperty("webdriver.chrome.driver").isEmpty()){
  					if(chromeDriverBin == null){
  						throw new IllegalArgumentException(String.format(ErrorMessages.ERROR_TEMPLATE_VARIABLE_NULL,"chromeDriverBin"));
  					}
  					System.setProperty("webdriver.chrome.driver", chromeDriverBin);	
  				}
  				
  				ChromeOptions co = new ChromeOptions();
  				// Get the chrome binary directory path from System Envionment.
  				co.setBinary(new File(chromeBin));
  				driver = new WebDriverAdapter(new ChromeDriver(co));
  			}
  			else if(BrowsersList.IE.equalsString(browserName))
  			{
  				if(ieDriverBin == null){
  						throw new IllegalArgumentException(String.format(ErrorMessages.ERROR_TEMPLATE_VARIABLE_NULL,"ieDriverBin"));
  				}
  				System.setProperty("webdriver.ie.driver", ieDriverBin);	
  				driver = new WebDriverAdapter(new InternetExplorerDriver());
  			}
  			else if(BrowsersList.HTML_UNIT.equalsString(browserName)){
  				driver = new HtmlUnitDriver(true);
  			}
  			else {
  				throw new IllegalArgumentException(ErrorMessages.ERROR_BROWSER_INVALID);
  			}
  		}
  		/* Sets to all driver methods the global timeout of 1 second. 
  		 * To tests, Timeouts must be specified on the components.
  		 */
  		SeleniumController.driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
  		SeleniumController.builder = new SeleniumBuilder(driver);
  		SeleniumController.browser = new SeleniumBrowser();
  		ListenerGateway.setWebDriver(driver);
  		ListenerGateway.setParameters(parametersMap);
  	}