Continued WebDriver work in progress

This commit is contained in:
Graham Triggs 2015-12-18 22:20:01 +00:00
parent d582317a05
commit d8fad2b5ab
6 changed files with 887 additions and 1471 deletions

View file

@ -1,4 +1,4 @@
<Context crossContext="true" override="true"> <Context> <!-- useHttpOnly="false" -->
<Environment <Environment
type="java.lang.String" type="java.lang.String"
name="vitro/home" name="vitro/home"

View file

@ -2,6 +2,7 @@ package org.vivoweb.vivo.selenium;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
public final class DriverFactory { public final class DriverFactory {
private static WebDriver driver = null; private static WebDriver driver = null;

View file

@ -7,13 +7,15 @@ import org.junit.runners.Suite.SuiteClasses;
import org.vivoweb.vivo.selenium.DriverFactory; import org.vivoweb.vivo.selenium.DriverFactory;
import org.vivoweb.vivo.selenium.VIVOSuite; import org.vivoweb.vivo.selenium.VIVOSuite;
import org.vivoweb.vivo.selenium.tests.CreateOrganization; import org.vivoweb.vivo.selenium.tests.CreateOrganization;
import org.vivoweb.vivo.selenium.tests.DeleteOrganization;
import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex; import org.vivoweb.vivo.selenium.tests.RebuildSearchIndex;
@RunWith(VIVOSuite.class) @RunWith(VIVOSuite.class)
@SuiteClasses( @SuiteClasses(
{ {
RebuildSearchIndex.class, RebuildSearchIndex.class,
CreateOrganization.class CreateOrganization.class,
DeleteOrganization.class
} }
) )
public class AddNonPersonThings { public class AddNonPersonThings {

View file

@ -5,6 +5,8 @@ import org.junit.Assert;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxDriver;
@ -61,6 +63,47 @@ public class AbstractSeleniumTest {
driver.findElement(by).sendKeys(text); driver.findElement(by).sendKeys(text);
} }
protected void typeAutoCompleteSelect(By by, String text, Keys... keys) {
WebElement element = driver.findElement(by);
int count = 0;
WebElement autoComplete = null;
while (autoComplete == null) {
element.sendKeys(text);
try {
Thread.sleep(500);
autoComplete = driver.findElement(By.className("ui-autocomplete"));
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (NoSuchElementException nse) {
for (int i = 0; i < text.length(); i++) {
element.sendKeys(Keys.BACK_SPACE);
}
if (count > 4) {
throw nse;
}
}
count++;
}
// WebDriverWait wait = new WebDriverWait(driver, 5);
// WebElement autoComplete = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("ui-autocomplete")));
if (keys != null && keys.length > 0) {
for (Keys key : keys) {
element.sendKeys(key);
}
}
WebElement selected = driver.findElement(By.id("ui-active-menuitem"));
if (selected != null) {
selected.click();
}
}
protected void typeTinyMCE(String text) { protected void typeTinyMCE(String text) {
// <td> tinyMCE.activeEditor.setContent('The Primate College of America is a privately-funded college for the study of primates.')</td> // <td> tinyMCE.activeEditor.setContent('The Primate College of America is a privately-funded college for the study of primates.')</td>
@ -71,6 +114,10 @@ public class AbstractSeleniumTest {
driver.switchTo().defaultContent(); driver.switchTo().defaultContent();
} }
protected void verifyElementPresent(By by) {
Assert.assertNotNull(driver.findElement(by));
}
protected void verifyTextPresent(String text) { protected void verifyTextPresent(String text) {
Assert.assertNotNull(driver.findElement(xpathForTextPresent(text))); Assert.assertNotNull(driver.findElement(xpathForTextPresent(text)));
} }

View file

@ -0,0 +1,482 @@
package org.vivoweb.vivo.selenium.tests;
import org.junit.Test;
import org.openqa.selenium.By;
public class DeleteOrganization extends AbstractSeleniumTest {
@Test
public void deleteOrganization() {
deleteAllVisibleCookies();
open("/");
assertTitle("VIVO");
logIn("testAdmin@cornell.edu", "Password");
clickAndWait(By.linkText("Organization"));
assertTitle("Organization");
clickAndWait(By.linkText("Primate College of America"));
assertTitle("Primate College of America");
clickAndWait(By.linkText("Edit this individual"));
assertTitle("Individual Control Panel");
clickAndWait(By.xpath("//input[@value='Edit This Individual']"));
assertTitle("Individual Editing Form");
clickAndWait(By.name("_delete"));
try { Thread.sleep(50000); } catch (Exception e) { }
logOut();
}
}
/*
<tr>
<td>assertConfirmation</td>
<td>Are you SURE you want to delete this individual? If in doubt, CANCEL.</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>5000</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>VIVO Site Administration</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Index</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Index of Contents</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Organization</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Organization</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Primate College of New York</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Primate College of New York</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Edit this individual</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Control Panel</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value='Edit This Individual']</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Editing Form</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>name=_delete</td>
<td></td>
</tr>
<tr>
<td>assertConfirmation</td>
<td>Are you SURE you want to delete this individual? If in doubt, CANCEL.</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>5000</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>VIVO Site Administration</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Index</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Index of Contents</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Organization</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Organization</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Primate Colleges of the World</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Primate Colleges of the World</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Edit this individual</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Control Panel</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value='Edit This Individual']</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Editing Form</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>name=_delete</td>
<td></td>
</tr>
<tr>
<td>assertConfirmation</td>
<td>Are you SURE you want to delete this individual? If in doubt, CANCEL.</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>5000</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>VIVO Site Administration</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Index</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Index of Contents</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Organization</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Organization</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Primate History Library</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Primate History Library</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Edit this individual</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Control Panel</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value='Edit This Individual']</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Editing Form</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>name=_delete</td>
<td></td>
</tr>
<tr>
<td>assertConfirmation</td>
<td>Are you SURE you want to delete this individual? If in doubt, CANCEL.</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>5000</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>VIVO Site Administration</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Index</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Index of Contents</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Organization</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Organization</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Primate Research Laboratory</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Primate Research Laboratory</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Edit this individual</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Control Panel</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value='Edit This Individual']</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Editing Form</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>name=_delete</td>
<td></td>
</tr>
<tr>
<td>assertConfirmation</td>
<td>Are you SURE you want to delete this individual? If in doubt, CANCEL.</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>5000</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>VIVO Site Administration</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Index</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Index of Contents</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Organization</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Organization</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Primate University of America</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Primate University of America</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Edit this individual</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Control Panel</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value='Edit This Individual']</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Editing Form</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>name=_delete</td>
<td></td>
</tr>
<tr>
<td>assertConfirmation</td>
<td>Are you SURE you want to delete this individual? If in doubt, CANCEL.</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>5000</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>VIVO Site Administration</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Index</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Index of Contents</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Organization</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Organization</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Primates-r-us</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Primates-r-us</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Edit this individual</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Control Panel</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@value='Edit This Individual']</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Individual Editing Form</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>name=_delete</td>
<td></td>
</tr>
<tr>
<td>assertConfirmation</td>
<td>Are you SURE you want to delete this individual? If in doubt, CANCEL.</td>
<td></td>
</tr>
<tr>
<td>waitForPageToLoad</td>
<td>5000</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>VIVO Site Administration</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>link=Index</td>
<td></td>
</tr>
<tr>
<td>assertTitle</td>
<td>Index of Contents</td>
<td></td>
</tr>
*/