Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebDriver屏幕截图不';如果出现警报,则无法工作。如何使用c#.net?_C#_Selenium_Selenium Webdriver_Asp.net Ajax - Fatal编程技术网

WebDriver屏幕截图不';如果出现警报,则无法工作。如何使用c#.net?

WebDriver屏幕截图不';如果出现警报,则无法工作。如何使用c#.net?,c#,selenium,selenium-webdriver,asp.net-ajax,C#,Selenium,Selenium Webdriver,Asp.net Ajax,我正在使用ASP.net、C#net内部网应用程序。用于测试应用程序的SeleniumWebDriver。一个页面输入相同的名称,显示警报消息“已经存在”(使用ajax的服务器端警报),我想用screenshort捕获该警报消息 **Selenium webdriver version: 2.35.0.0 dotnet frame work: 4.0** 我编写的代码如下: private static void SaveScreenShot(string screenshotFirstNam

我正在使用ASP.net、C#net内部网应用程序。用于测试应用程序的SeleniumWebDriver。一个页面输入相同的名称,显示警报消息“已经存在”(使用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)"

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

是否尝试让WebDriver忽略警报

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

    var options = new InternetExplorerOptions();
    options.UnexpectedAlertBehavior = OpenQA.Selenium.IE.InternetExplorerUnexpectedAlertBehavior.Ignore;
然后按如下方式启动WebDriver:

driver = new InternetExplorerDriver(options);

这就是我在IE上应该做的。我不是在测试Chrome,但我应该想象Chrome也有类似的方法。

离开OP最初的问题,“我想用screenshort捕捉警报消息”,而不是仅仅忽略它。我有一个类似的情况,我需要一个屏幕截图的“警报”

我基本上做了另一个方法,并使用System.Drawing.Graphics类使用CopyFromScreen截图

告诉我这是不是一个“警报”,我会用哪种截图方法来表示“警报”和“非警报”。我刚刚创建了一个简单的布尔“检测”方法,用于判断是否存在“警报”。如果是,则返回true;如果不是,则返回false

public static bool IsAlertPresent()
{
    try
    {
        SeleniumDrivers.driver.SwitchTo().Alert();
        return true;
    }
    catch (Exception)
    {
        return false;
    }
}