Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License") + you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.openmeetings.test.selenium; import java.util.List; import org.apache.openmeetings.db.dao.label.LabelDao; import org.apache.openmeetings.test.AbstractSpringTest; import org.junit.After; import org.junit.Before; import org.junit.experimental.categories.Category; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.springframework.beans.factory.annotation.Autowired; @Category(SeleniumTests.class) public abstract class AbstractTestDefaults extends AbstractSpringTest { @Autowired private LabelDao labelDao; public WebDriver driver = null; private String BASE_URL = "http://localhost:5080/openmeetings"; private String username = "swagner"; private String userpass = "qweqwe"; private String groupName = "seleniumtest"; private String email = "selenium@openmeetings.apache.org"; private String locale = "en-us"; public String getBASE_URL() { return BASE_URL; } public String getUsername() { return username; } public String getUserpass() { return userpass; } public String getGroupName() { return groupName; } public String getEmail() { return email; } public Long getLanguageId() { return 1L; } public String getLocale() { return locale; } // setting this to false can be handy if you run the test from inside // Eclipse, the browser will not shut down after the test so you can start // to diagnose the test issue public boolean doTearDownAfterTest = false; public String getString(long id) { return labelDao.getString(id, getLanguageId()); } /** * Make method overwrite possible to have custom behavior in tests * * @return */ public boolean getDoTearDownAfterTest() { return doTearDownAfterTest; } @Before public void setUp() throws Exception { FirefoxProfile profile = new FirefoxProfile(); profile.setPreference("intl.accept_languages", getLocale()); driver = new FirefoxDriver(profile); } /** * This test is a basic test to verify the default loader mechanism works * it is not intend to be a part of any sub test * * @throws Exception */ //@Test public void smokeTest() throws Exception { try { driver.get(getBASE_URL()); testIsInstalledAndDoInstallation(); SeleniumUtils.inputText(driver, "login", getUsername()); SeleniumUtils.inputText(driver, "pass", getUserpass()); WebElement signInButton = SeleniumUtils.findElement(driver, "//button[span[contains(text(), 'Sign in')]]", true, true); signInButton.click(); SeleniumUtils.elementExists(driver, "//h3[contains(text(), 'Help and support')]", true); } catch (Exception e) { SeleniumUtils.makeScreenShot(this.getClass().getSimpleName(), e, driver); throw e; } } /** * Throws exception in case that test fails, so it is important to not catch * that exception but really let the test fail! * * @throws Exception */ protected void testIsInstalledAndDoInstallation() throws Exception { WebElement wicketExtensionsWizardHeaderTitle = SeleniumUtils.findElement(driver, "wicketExtensionsWizardHeaderTitle", false, true); if (wicketExtensionsWizardHeaderTitle == null) { return; } if (wicketExtensionsWizardHeaderTitle.getText().contains("Installation")) { System.out.println("Do Installation"); doInstallation(); } } private void doInstallation() throws Exception { Thread.sleep(3000L); List<WebElement> buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true); buttons_next.get(1).sendKeys(Keys.RETURN); Thread.sleep(1000L); SeleniumUtils.inputText(driver, "view:cfg.username", getUsername()); SeleniumUtils.inputText(driver, "view:cfg.password", getUserpass()); SeleniumUtils.inputText(driver, "view:cfg.email", getEmail()); SeleniumUtils.inputText(driver, "view:cfg.group", getGroupName()); buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true); buttons_next.get(1).sendKeys(Keys.RETURN); Thread.sleep(1000L); buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true); buttons_next.get(1).sendKeys(Keys.RETURN); Thread.sleep(1000L); buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true); buttons_next.get(1).sendKeys(Keys.RETURN); Thread.sleep(1000L); buttons_next = SeleniumUtils.findElements(driver, "buttons:next", true); buttons_next.get(1).sendKeys(Keys.RETURN); Thread.sleep(2000L); List<WebElement> elements = SeleniumUtils.findElements(driver, "buttons:finish", true); elements.get(1).sendKeys(Keys.RETURN); long maxMilliSecondsWait = 120000; while (maxMilliSecondsWait > 0) { // check if installation is complete by searching for the link on // the success page WebElement enterApplicationLink = SeleniumUtils.findElement(driver, "//a[contains(@href,'install')]", false, true); if (enterApplicationLink == null) { System.out.println("Installation running - wait 3 more seconds and check again"); Thread.sleep(3000L); maxMilliSecondsWait -= 3000; } else { maxMilliSecondsWait = 0; enterApplicationLink.click(); return; } } throw new Exception("Timeout during installation"); } @After public void tearDown() throws Exception { if (getDoTearDownAfterTest()) { driver.close(); driver.quit(); } } }