/* * * Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under * one or more contributor license agreements (see COPYRIGHT for details). * The CA licenses this file to you under the GNU Affero General Public * License version 3, (the "License"); you may not use this file except in * compliance with the License. This file is part of kune. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package cc.kune.selenium; import java.util.Arrays; import java.util.Locale; import java.util.ResourceBundle; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.firefox.internal.ProfilesIni; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.events.EventFiringWebDriver; import org.openqa.selenium.support.pagefactory.AjaxElementLocatorFactory; import org.openqa.selenium.support.pagefactory.ElementLocatorFactory; import cc.kune.selenium.chat.ChatPageObject; import cc.kune.selenium.general.EntityHeaderPageObject; import cc.kune.selenium.login.LoginPageObject; import cc.kune.selenium.login.RegisterPageObject; import cc.kune.selenium.spaces.SitePageObject; import com.google.inject.Singleton; // TODO: Auto-generated Javadoc /** * The Class SeleniumModule. * * @author vjrj@ourproject.org (Vicente J. Ruiz Jurado) */ public class SeleniumModule extends PageObjectModule { /* * (non-Javadoc) * * @see com.google.inject.AbstractModule#configure() */ @Override protected void configure() { WebDriver driver; switch (SeleniumConf.DRIVER) { case chrome: driver = createChromeDriver(); break; case firefox: default: driver = creatFirefoxDriver(); break; } final EventFiringWebDriver wrap = new EventFiringWebDriver(driver); wrap.register(new CustomWebDriverEventListener()); bind(WebDriver.class).toInstance(wrap); bind(ElementLocatorFactory.class).toInstance( new AjaxElementLocatorFactory(wrap, SeleniumConf.TIMEOUT)); // Page Objects here! bind(LoginPageObject.class).in(Singleton.class); bind(RegisterPageObject.class).in(Singleton.class); bind(EntityHeaderPageObject.class).in(Singleton.class); bind(ChatPageObject.class).in(Singleton.class); bind(SitePageObject.class).in(Singleton.class); final ResourceBundle english = ResourceBundle.getBundle("TestConstants", Locale.ENGLISH); final ResourceBundle spanish = ResourceBundle.getBundle("TestConstants", new Locale("es")); Locale.setDefault(Locale.ENGLISH); switch (SeleniumConf.LANG) { case es: bind(ResourceBundle.class).toInstance(spanish); break; case en: default: bind(ResourceBundle.class).toInstance(english); break; } } /** * Creates the chrome driver. * * @return the remote web driver */ private RemoteWebDriver createChromeDriver() { // http://code.google.com/p/selenium/wiki/ChromeDriver System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver"); final DesiredCapabilities capabilities = DesiredCapabilities.chrome(); // http://peter.sh/experiments/chromium-command-line-switches/ capabilities.setCapability("chrome.switches", Arrays.asList("--disable-translate" // , // "--load-extension=/home/YOURUSER/.config/chromium/Default/Extensions/jpjpnpmbddbjkfaccnmhnkdgjideieim/1.0.9738_0/" // (tests with the gwt extension) )); capabilities.setCapability("chrome.binary", "/usr/lib/chromium-browser/chromium-browser"); final ChromeDriver driver = new ChromeDriver(capabilities); return driver; } /** * Creat firefox driver. * * @return the firefox driver */ private FirefoxDriver creatFirefoxDriver() { // http://code.google.com/p/selenium/wiki/FirefoxDriver System.setProperty("webdriver.firefox.useExisting", "true"); final ProfilesIni allProfiles = new ProfilesIni(); final FirefoxProfile profile = allProfiles.getProfile(SeleniumConstants.FIREFOX_PROFILE_NAME); // final FirefoxProfile profile = allProfiles.getProfile("76tp2vh0.ff5"); // http://code.google.com/p/selenium/wiki/AdvancedUserInteractions#Mouse // profile.setEnableNativeEvents(true); final FirefoxDriver driver = new FirefoxDriver(profile); return driver; } }