I am writing a Selenium test on Firefox that deals with an alert. The alert appears for a fraction of a second when the test is run, but when done manually the alert persists. C
There are 3 states for UnexpectedAlertBehaviour:
ACCEPT - Accepts the alertDISMISS - Closes/Cancels the alertIGNORE - Neither accepts nor closes the alertDesiredCapabilities dc = new DesiredCapabilities(); dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE); driver = new FirefoxDriver(dc);
Then you can handle the alert by performing the operation that triggers the alert and catching it as an expected exception:
try {
click(myButton);
} catch (UnhandledAlertException f) {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
System.out.println("Alert data: " + alertText);
alert.accept();
} catch (NoAlertPresentException e) {
e.printStackTrace();
}
}
The chosen answer worked for me, but it seems that FirefoxDriver(org.openqa.selenium.Capabilities) is deprecated. The working alternative is:
FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
driver = new FirefoxDriver(firefoxOptions);
I don't think the 'alerts.disableSlidingEffect' Firefox profile option should be causing the alert to disappear - Instead, try creating your WebDriver instance using the unexpectedalertbehaviour capability set to 'ignore'.