如果存在警报,WebDriver屏幕截图不起作用。如何处理使用c#.net?

问题描述 投票:3回答:2

我正在使用ASP.net,C#.net Intranet应用程序。 Selenium Webdriver测试应用程序。一个页面输入相同的名称,它显示警告消息“已经存在”(使用ajax的服务器端警报),我想用screenshort捕获该警报消息。

**Selenium webdriver version: 2.35.0.0
dotnet frame work: 4.0**

我正在写代码如下:

private static void SaveScreenShot(string screenshotFirstName)
{
    var folderLocation = Environment.CurrentDirectory.Replace("\\Out", "") + "\\ScreenShot\\";
    if (!Directory.Exists(folderLocation))
    {
        Directory.CreateDirectory(folderLocation);
    }
    var screenshot = ((ITakesScreenshot)WebDriver).GetScreenshot();
    var filename = new StringBuilder(folderLocation);
    filename.Append(screenshotFirstName);
    filename.Append(DateTime.Now.ToString("dd-mm-yyyy HH_mm_ss"));
    filename.Append(".png");
    screenshot.SaveAsFile(filename.ToString(), System.Drawing.Imaging.ImageFormat.Png);
}

但它显示错误信息

"unexpected alert open
(Session info: chrome=31.0.1650.57)
(Driver info: chromedriver=2.3,platform=Windows NT 6.1 x86)"

请帮我 。它工作正常,没有警报信息。

c# selenium selenium-webdriver asp.net-ajax
2个回答
2
投票

试过让WebDriver忽略警报?

这可以通过以下方式完成:

    var options = new InternetExplorerOptions();
    options.UnexpectedAlertBehavior = OpenQA.Selenium.IE.InternetExplorerUnexpectedAlertBehavior.Ignore;

然后你就像这样启动WebDriver:

driver = new InternetExplorerDriver(options);

这就是我为IE做的。我不是在测试Chrome,但我认为Chrome有类似的方法。


0
投票

关于OP的原始问题,“我想用截图捕获该警报消息”而不是忽略它。我有类似的情况,我需要一个“警报”的截图。

我基本上做了另一种方法,并使用System.Drawing.Graphics类使用CopyFromScreen截取屏幕截图。

并告诉它是否是一个“警报”以及我用于“警报”和非“警报”的截图方法。我刚刚创建了一个简单的布尔“检测”方法,告诉我是否存在“警报”。如果是,则返回true,如果不是,则返回false。

public static bool IsAlertPresent()
{
    try
    {
        SeleniumDrivers.driver.SwitchTo().Alert();
        return true;
    }
    catch (Exception)
    {
        return false;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.