如何使用 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