数据重新发布后无法处理模态警报窗口(使用Selenium webdriver C#和IE)

时间:2012-08-09 13:17:16

标签: c# selenium webdriver

我试图在使用Selenium WebDriver(selenium-dotnet-2.25.1)+ IEDriverServer.exe(IEDriverServer_Win32_2.25.2)重新发布数据后传递模态警报窗口。

这是我的测试C#代码:

    static void Main(string[] args)
    {
        IWebDriver driver = new OpenQA.Selenium.IE.InternetExplorerDriver();

        // Navigating to gmail.com and submitting wrong data
        driver.Navigate().GoToUrl("gmail.com");
        driver.FindElement(By.Id("Email")).SendKeys("testuser");
        driver.FindElement(By.Id("signIn")).Click();
        Thread.Sleep(8000);

        // making the data re-post by F5
        driver.Navigate().Refresh();

        // Handling the aller and accepting it
        IAlert alert = driver.SwitchTo().Alert();
        Console.WriteLine(alert.Text);
        alert.Accept();
    }

这是节目输出:

    Started InternetExplorerDriver server (32-bit)
    2.25.2.0
    Listening on port 2783
    To display the webpage again, Internet Explorer needs to
    resend the information you've previously submitted.

    If you were making a purchase, you should click Cancel to
    avoid a duplicate transaction. Otherwise, click Retry to display
    the webpage again.
    Press any key to continue . . .                 

结果,警报窗口消失,没有任何数据重新发布,IE显示“页面已过期”。

请指教。

1 个答案:

答案 0 :(得分:0)

“警报”在Selenium WebDriver中定义为一件事,只有一件事:通过JavaScript显示一个对话框。也就是说,Alert API只能可靠地用于JavaScript alert()confirm()prompt()函数创建的对话框。对于任何其他对话框,您可能会很幸运,但API并不适用于这些对话框。