Being new to PhantomJSDriver for Selenium, how does it handle JS alerts?
I've found the JSPhantom onAlert documentation, but what would the equivalent PhantomJSDriver code for
Driver.SwitchTo().Alert().Accept();
be?
At the moment, I've returning early with a guard clause for PhantomJSDriver
, to stop exceptions, but how should js alerts in PhantomJS be interacted with?
I had similar problems with PhantomJS Web Driver handling alerts. The below code seems to resolve the issue. This is a C# implementation but should work with Java too..
public IAlert GetSeleniumAlert()
{
//Don't handle Alerts using .SwitchTo() for PhantomJS
if (webdriver is PhantomJSDriver)
{
var js = webdriver as IJavaScriptExecutor;
var result = js.ExecuteScript("window.confirm = function(){return true;}") as string;
((PhantomJSDriver)webdriver).ExecutePhantomJS("var page = this;" +
"page.onConfirm = function(msg) {" +
"console.log('CONFIRM: ' + msg);return true;" +
"};");
return null;
}
try
{
return webdriver.SwitchTo().Alert();
}
catch (NoAlertPresentException)
{
return null;
}
}
And later in the code where you expect Alerts to occur
IAlert potentialAlert = GetSeleniumAlert();
if (potentialAlert != null) //will always be null for PhantomJS
{
//code to handle Alerts
IAlert alert=webDriver.SwitchTo().Alert();
alert.Accept();
}
For PhantomJS, we are setting the default response to Alerts as accept.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With