【问题标题】:Selenium WebDriver for C# - Popup Dialog BoxesSelenium WebDriver for C# - 弹出对话框
【发布时间】:2012-05-22 09:05:03
【问题描述】:

是否支持在 c# 中使用弹出对话框(特别是文件下载)?

【问题讨论】:

    标签: c# selenium dialog webdriver


    【解决方案1】:

    对于弹出窗口对话框,您可以使用警报来捕捉:

    IAlert alert = driver.SwitchTo().Alert();
    alert.Accept();
    

    【讨论】:

      【解决方案2】:

      不,没有 - 至少不是原生的。

      WebDriver 只与网页交互。弹出对话框一旦被实例化,就会成为操作系统的域而不是网页。

      您可以通过使用您正在检索或发送到服务器的内容发出 POST 或 GET 来绕过文件下载/上传对话框。

      您可以使用 AutoIt 或 Windows 自动化 API 等工具与其他对话框窗口进行交互。

      【讨论】:

        【解决方案3】:

        来自 WebDriver 常见问题解答:WebDriver 提供了处理多个窗口的能力。这是通过使用“WebDriver.switchTo().window()”方法切换到具有已知名称的窗口来完成的。如果名称未知,您可以使用“WebDriver.getWindowHandles()”获取已知窗口的列表。您可以将句柄传递给“switchTo().window()”。

        完整的FAQ在这里。

        Example 来自 Thoughtworks

         String parentWindowHandle = browser.getWindowHandle(); // save the current window handle.
              WebDriver popup = null;
              Iterator<String> windowIterator = browser.getWindowHandles();
              while(windowIterator.hasNext()) { 
                String windowHandle = windowIterator.next(); 
                popup = browser.switchTo().window(windowHandle);
                if (popup.getTitle().equals("Google") {
                  break;
                }
              }
        

        以下是从 Java 转换为 C# 的示例(已替换不推荐使用的方法)

                String parentWindowHandle = _browser.CurrentWindowHandle; // save the current window handle.
                IWebDriver popup = null;
                var  windowIterator = _browser.WindowHandles;
        
                foreach (var windowHandle in windowIterator)
                {
                    popup = _browser.SwitchTo().Window(windowHandle);
        
                    if (popup.Title == "Google")
                    {
                        break;
                    }
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-08
          • 1970-01-01
          • 2011-11-13
          • 1970-01-01
          • 2015-09-17
          相关资源
          最近更新 更多