如何使用JavaScript弹出警报? Selenium Webdriver

时间:2016-09-08 18:51:13

标签: javascript c# selenium

Selenium WebDriver 2.53.1.1 Visual Studio 2015 C#

我正在测试的应用程序有Alert Pop Ups,我可以使用以下代码处理而没有问题

 ts.getDriver().SwitchTo().Alert().Accept();

但是我遇到了一个新问题。我的一些小部件已经存在不再被发现的问题,因此我必须运行JavaScript来执行web元素(请参阅下面的代码来处理web元素)

    public void SelectHREFCID()
    {
        IJavaScriptExecutor js = ts.getDriver() as IJavaScriptExecutor;
        js.ExecuteScript("arguments[0].click()",hrefCID);
        try
        {
            ts.getDriver().SwitchTo().Alert().Accept();
        }
        catch (NoAlertPresentException)
        {
            // do nothing...
        }// Have to use this to find the hyperlink!
    }

唯一的问题是在js.ExecuteScript行运行之后,弹出显示和我的Alert()。在此之后,接受()代码行永远不会触发,因此程序只是在弹出窗口停止。我在调试中逐行运行,一旦执行js.ExecuteScript行,就无法进入下一行。关于如何处理这个的任何建议?

UPdate 此时在我的代码中(js.ExecuteScript)) enter image description here

,一旦执行了这行代码,我就会看到这个

enter image description here

此弹出窗口显示My Selenium Code不会继续进入try catch语句来处理Alert

截至9/9的最新更新

我尝试了两种方式的警报处理 enter image description here enter image description here

但是我的selenium代码会在弹出的时候停止执行

js.ExecuteScript("arguments[0].click().hrefCID);

**更新09/12 ****

我更新了我的window.alert,这解决了问题(确认)

 IJavaScriptExecutor js = ts.getDriver() as IJavaScriptExecutor;
        js.ExecuteScript("window.confirm = function(){return true;}");
        js.ExecuteScript("arguments[0].click()",hrefCID);
      //  js.ExecuteScript("window.alert = function() { return true;}");

1 个答案:

答案 0 :(得分:1)

我认为此警报会阻止代码执行,您应该在单击以使用js覆盖confirmBox函数之前执行此脚本: -

js.ExecuteScript("window.confirm = function() { return true;}")

之后执行如下操作点击按钮: -

js.ExecuteScript("arguments[0].click()",hrefCID);