【问题标题】:How to handle alert pop up with JavaScript? Selenium Webdriver如何使用 JavaScript 处理弹出警报? Selenium 网络驱动程序
【发布时间】:2017-01-16 19:36:00
【问题描述】:

Selenium WebDriver 2.53.1.1 视觉工作室 2015 C#

我正在测试的应用程序具有警报弹出窗口,我使用以下代码处理它没有问题

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

但是我遇到了一个新问题。我的一些 webelements 有不再被发现的问题,因此我必须运行 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().Accept() 代码行在此之后永远不会触发,因此程序只是在弹出窗口时停止。我在调试中逐行运行,一旦执行 js.ExecuteScript 行,就无法进入下一行。有关如何处理此问题的任何建议?

更新此时在我的代码中(js.ExecuteScript))

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

一旦此弹出窗口显示 My Selenium Code does not continue into the try catch statement to handle the Alert

截至 9 月 9 日的最新更新

我尝试了两种方式的警报句柄

但是我的 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;}");

【问题讨论】:

  • 不清楚你在问什么?? program just stops there with the pop up 是什么意思??有什么异常还是别的什么??
  • 抱歉有任何混淆。基本上,如果我在调用 Web.Element.Click 时使用 Alert().Accept() 它将执行这行代码。 (我肯定知道这一点 b/c 我的一些 web 元素在弹出窗口显示时工作正常,但是因为我正在通过 javascript 执行 web 元素操作,所以它从不尝试执行之后弹出的警报。我希望这能让更多感觉。
  • 您的意思是 JavaScript 单击不会打开弹出窗口。对吧??
  • 运行 javascript 代码后不会立即打开弹出窗口,但我的 Selenium 代码此时无法继续
  • 更新了我上面的窗口警报声明,这解决了我的问题。谢谢@SaruabhGaur 如果您会回复答案,我会给您信用!再次感谢您!

标签: javascript c# selenium


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多