/*
* Copyright 2012-2014 eBay Software Foundation and selendroid committers.
*
* Licensed 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 io.selendroid.webviewdrivertests;
import io.selendroid.client.waiter.TestWaiter;
import io.selendroid.client.waiter.WaitingConditions;
import io.selendroid.support.BaseAndroidTest;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebElement;
/**
* Child element finding test for the web view part of selendroid.
*
* @author ddary
*/
public class WebChildElementFindingTest extends BaseAndroidTest {
public static final String ACTIVITY_CLASS = "io.selendroid.testapp." + "WebViewActivity";
private void assertListIsEmpty(List<WebElement> elements) {
Assert.assertTrue("Expecting empty list when no elements are found.", elements.isEmpty());
}
@Test()
public void shouldNotFindElementById() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
try {
rootElement.findElement(By.id("nonExistantButton"));
Assert.fail("Should not have succeeded");
} catch (NoSuchElementException e) {
// this is expected
}
}
@Test()
public void shouldNotFindElementByCss() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
try {
rootElement.findElement(By.cssSelector("a[id='nonExistantButton']"));
Assert.fail("Should not have succeeded");
} catch (NoSuchElementException e) {
// this is expected
}
}
@Test
public void shouldNotFindElementByXPath() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
try {
rootElement.findElement(By.xpath("//*[@id='notThere']"));
Assert.fail("Should not have succeeded");
} catch (NoSuchElementException e) {
// this is expected
}
}
@Test
public void shouldNotFindElementByTagName() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
try {
rootElement.findElement(By.tagName("notThere"));
Assert.fail("Should not have succeeded");
} catch (NoSuchElementException e) {
// this is expected
}
}
@Test
public void shouldNotFindElementByClass() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
try {
rootElement.findElement(By.className("notThere"));
Assert.fail("Should not have succeeded");
} catch (NoSuchElementException e) {
// this is expected
}
}
@Test
public void shouldNotFindElementByName() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
try {
rootElement.findElement(By.name("notThere"));
Assert.fail("Should not have succeeded");
} catch (NoSuchElementException e) {
// this is expected
}
}
@Test
public void shouldNotFindElementByText() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
try {
rootElement.findElement(By.linkText("notThere"));
Assert.fail("Should not have succeeded");
} catch (NoSuchElementException e) {
// this is expected
}
}
@Test
public void shouldNotFindElementByPartialText() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
try {
rootElement.findElement(By.partialLinkText("notThere"));
Assert.fail("Should not have succeeded");
} catch (NoSuchElementException e) {
// this is expected
}
}
@Test()
public void shouldNotFindElementsById() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
assertListIsEmpty(rootElement.findElements(By.cssSelector("a[id='nonExistantButton']")));
}
@Test
public void shouldNotFindElementsByXPath() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
assertListIsEmpty(rootElement.findElements(By.xpath("//*[@id='notThere']")));
}
@Test
public void shouldNotFindElementsByTagName() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
assertListIsEmpty(rootElement.findElements(By.tagName("notThere")));
}
@Test
public void shouldNotFindElementsByClass() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
assertListIsEmpty(rootElement.findElements(By.className("notThere")));
}
@Test
public void shouldNotFindElementsByName() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
assertListIsEmpty(rootElement.findElements(By.name("notThere")));
}
@Test
public void shouldNotFindElementsByText() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
assertListIsEmpty(rootElement.findElements(By.linkText("notThere")));
}
@Test
public void shouldNotFindElementsByPartialText() {
openWebdriverTestPage(HtmlTestData.FORM_PAGE);
WebElement rootElement = driver().findElement(By.id("multi"));
assertListIsEmpty(rootElement.findElements(By.partialLinkText("notThere")));
}
@Test
public void shouldFindElementByText() throws Exception {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement clickMe = rootElement.findElement(By.linkText("click me"));
clickMe.click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementByPartialText() throws Exception {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement clickMe = rootElement.findElement(By.partialLinkText("click m"));
clickMe.click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementById() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
rootElement.findElement(By.id("linkId")).click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 20,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementByCss() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement e = rootElement.findElement(By.cssSelector("a[id='linkId']"));
try {
Thread.sleep(2000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementByXPath() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
rootElement.findElement(By.xpath("//a[@id='linkId']")).click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementByTagNameAndGetText() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement element = rootElement.findElement(By.tagName("a"));
Assert.assertEquals(element.getText(), "click me");
}
@Test
public void shouldFindElementByClassAndGetText() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement element = rootElement.findElement(By.className("myTestClass"));
Assert.assertEquals(element.getText(), "click me");
}
@Test
public void shouldFindElementByNameAndGetText() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement element = rootElement.findElement(By.name("nameTest"));
Assert.assertEquals(element.getText(), "click me");
}
@Test
public void shouldFindElementsByTextAndClick() throws Exception {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement clickMe = rootElement.findElements(By.linkText("click me")).get(0);
clickMe.click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementsByPartialTextAndClick()
throws Exception {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement clickMe = rootElement.findElements(By.partialLinkText("click m")).get(0);
clickMe.click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementsByIdAndClick() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
rootElement.findElements(By.id("linkId")).get(0).click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementsByCssAndClick() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
rootElement.findElements(By.cssSelector("a[id='linkId']")).get(0).click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementsByXPathAndClick() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
rootElement.findElements(By.xpath("//a[@id='linkId']")).get(0).click();
TestWaiter.waitFor(WaitingConditions.pageTitleToBe(driver(), "We Arrive Here"), 15,
TimeUnit.SECONDS);
Assert.assertEquals(driver().getTitle(), "We Arrive Here");
}
@Test
public void shouldFindElementsyTagNameAndGetText() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement element = rootElement.findElements(By.tagName("a")).get(0);
Assert.assertEquals(element.getText(), "click me");
}
@Test
public void shouldFindElementsByClassAndGetText() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement element = rootElement.findElements(By.className("myTestClass")).get(0);
Assert.assertEquals(element.getText(), "click me");
}
@Test
public void shouldFindElementsByNameAndGetText() {
openWebdriverTestPage(HtmlTestData.XHTML_TEST_PAGE);
driver().manage().timeouts().implicitlyWait(9, TimeUnit.SECONDS);
WebElement rootElement = driver().findElement(By.className("content"));
WebElement element = rootElement.findElements(By.name("nameTest")).get(0);
Assert.assertEquals(element.getText(), "click me");
}
}