Selenium WebDriver for C# - Popup对话框

时间:2012-05-14 20:48:59

标签: c# selenium dialog webdriver

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

在这里完整FAQ

来自Thoughtworks的

Example

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

答案 2 :(得分:2)

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

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

您可以通过发出POST或GET来查看文件下载/上传对话框,其中包含您要检索或发送到服务器的内容。

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