/*
* Copyright 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.support.BaseAndroidTest;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.UnhandledAlertException;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class AlertHandlingTest extends BaseAndroidTest {
@Before
public void setupWebView() {
openWebdriverTestPage(HtmlTestData.ACTUAL_XHTML_PAGE);
}
@Test
public void canHandleChainOfAlerts() {
driver().executeScript("setTimeout(function(){alert(confirm('really? ' + prompt('testin alerts')));}, 100)");
Alert a = new WebDriverWait(driver(), 2).until(ExpectedConditions.alertIsPresent());
Assert.assertEquals("testin alerts", a.getText());
a.sendKeys("WAT");
a.accept();
a = driver().switchTo().alert();
Assert.assertEquals("really? WAT", a.getText());
a.dismiss();
a = driver().switchTo().alert();
Assert.assertEquals("false", a.getText());
a.dismiss();
}
@Test
public void blocksOtherCallsWhenAlertPresent() {
driver().executeScript("setTimeout(function(){alert('alert present');}, 100)");
Alert a = new WebDriverWait(driver(), 2).until(ExpectedConditions.alertIsPresent());
Assert.assertEquals("alert present", a.getText());
try {
driver().findElement(By.linkText("Foo"));
throw new RuntimeException("should have gotten an UnhandledAlertException");
} catch (UnhandledAlertException uae) {
// pass
} finally {
a.accept();
}
}
@Test
public void alertNotPresentErrorOccurs() {
try {
driver().switchTo().alert();
throw new RuntimeException("should have gotten an NoAlertPresentException");
} catch (NoAlertPresentException nape) {
}
}
}