如何使用 WebDriver 在 PhantomJS 中 handle/accept JS 警报?
How to handle/accept JS Alerts in PhantomJS using WebDriver?
PhantomJSDriver for Selenium 是新手,它如何处理 JS 警报?
我找到了 JSPhantom onAlert 文档,但是
的等效 PhantomJSDriver 代码是什么
Driver.SwitchTo().Alert().Accept();
是吗?
目前,我已经提前返回 PhantomJSDriver
的保护子句以阻止异常,但是 PhantomJS 中的 js 警报应该如何交互?
我在 PhantomJS Web Driver 处理警报时遇到了类似的问题。下面的代码似乎解决了这个问题。
这是一个 C# 实现,但也应该与 Java 一起使用..
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;
}
}
稍后在您希望出现警报的代码中
IAlert potentialAlert = GetSeleniumAlert();
if (potentialAlert != null) //will always be null for PhantomJS
{
//code to handle Alerts
IAlert alert=webDriver.SwitchTo().Alert();
alert.Accept();
}
对于 PhantomJS,我们将对警报的默认响应设置为接受。
我认为 PhantomJS 目前不支持警报处理。
要简单地接受警报,(在 Python/Splinter 中)对每个稍后会有警报的重新加载页面尝试此操作。
driver.execute_script("window.confirm = function(){return true;}");
查看更多参考资料here。
PhantomJSDriver for Selenium 是新手,它如何处理 JS 警报?
我找到了 JSPhantom onAlert 文档,但是
的等效 PhantomJSDriver 代码是什么Driver.SwitchTo().Alert().Accept();
是吗?
目前,我已经提前返回 PhantomJSDriver
的保护子句以阻止异常,但是 PhantomJS 中的 js 警报应该如何交互?
我在 PhantomJS Web Driver 处理警报时遇到了类似的问题。下面的代码似乎解决了这个问题。 这是一个 C# 实现,但也应该与 Java 一起使用..
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;
}
}
稍后在您希望出现警报的代码中
IAlert potentialAlert = GetSeleniumAlert();
if (potentialAlert != null) //will always be null for PhantomJS
{
//code to handle Alerts
IAlert alert=webDriver.SwitchTo().Alert();
alert.Accept();
}
对于 PhantomJS,我们将对警报的默认响应设置为接受。
我认为 PhantomJS 目前不支持警报处理。
要简单地接受警报,(在 Python/Splinter 中)对每个稍后会有警报的重新加载页面尝试此操作。
driver.execute_script("window.confirm = function(){return true;}");
查看更多参考资料here。