如何使用WebDriver处理/接受PhantomJS中的JS警报? [英] How to handle/accept JS Alerts in PhantomJS using WebDriver?

查看:87
本文介绍了如何使用WebDriver处理/接受PhantomJS中的JS警报?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

PhantomJSDriver for Selenium是新手,它如何处理JS警报?

Being new to PhantomJSDriver for Selenium, how does it handle JS alerts?

我已经找到了JSPhantom onAlert 文档,但是可以等效的PhantomJSDriver代码

I've found the JSPhantom onAlert documentation, but what would the equivalent PhantomJSDriver code for

Driver.SwitchTo().Alert().Accept();

是吗?

此刻,我早早返回了PhantomJSDriver的保护子句,以阻止异常,但是PhantomJS中的js警报应该如何与之交互?

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?

推荐答案

我在PhantomJS Web驱动程序处理警报时遇到了类似的问题.以下代码似乎可以解决该问题. 这是一个C#实现,但也应与Java一起使用..

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();
                }

对于PhantomJS,我们将对Alerts的默认响应设置为accept.

For PhantomJS, we are setting the default response to Alerts as accept.

这篇关于如何使用WebDriver处理/接受PhantomJS中的JS警报?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆