Selenium c# - 如何测试图像src文件是否存在(验证图像是否显示在页面上)

时间:2011-06-02 14:45:57

标签: c# selenium

我是Selenium和c#的新手,所以我已经走到了尽头。我需要知道如何查看天气图像src文件是否存在。当我的意思是存在时,它是否显示在页面上(不是没有图像时得到的红色x框)。

我试过file.exists(@c://imagename);和System.File.Exists 我不知道这是否正确。

任何帮助都会很棒!!我的脑袋炒了这个

由于

3 个答案:

答案 0 :(得分:1)

假设图像的路径在src属性中是相对的,您需要计算出URL,然后运行类似于本答案中概述的测试:

Test to see if an image exists in C#

如果你真的需要检查图像是否存在并且已经部署(我会怀疑这是否是一个值得考虑的测试),你可以使用类似下面的代码:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://full-path-to-your-image.png");
request.Method = "HEAD";

bool exists;
try
{
    request.GetResponse();
    exists = true;
}
catch
{
   exists = false;
}

它基本上检查URL(您的案例中的图像),以查看图像是否存在。

如果你需要一只手转过来问问;)

答案 1 :(得分:1)

我的解决方案是检查文件的长度。 您可以根据需要修改此解决方案:

    /// <summary>
    /// Gets the file lenght from location.
    /// </summary>
    /// <param name="location">The location where file location sould be located.</param>
    /// <returns>Lenght of the content</returns>
    public int GetFileLenghtFromUrlLocation(string location)
    {
        int len = 0;
        int timeoutInSeconds = 5;

        // paranoid check for null value
        if (string.IsNullOrEmpty(location)) return 0;

        // Create a web request to the URL
        HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(location);
        myRequest.Timeout = timeoutInSeconds * 1000;
        myRequest.AddRange(1024);
        try
        {
            // Get the web response
            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();

            // Make sure the response is valid
            if (HttpStatusCode.OK == myResponse.StatusCode)
            {
                // Open the response stream
                using (Stream myResponseStream = myResponse.GetResponseStream())
                {
                    if (myResponseStream == null) return 0;

                    using (StreamReader rdr = new StreamReader(myResponseStream))
                    {
                        len = rdr.ReadToEnd().Length;
                    }
                }
            }
        }
        catch (Exception err)
        {
            throw new Exception("Error saving file from URL:" + err.Message, err);
        }

        return len;
    }

答案 2 :(得分:0)

你不能这样做,至少不能单独使用Selenium。根据您正在测试的浏览器,您可以查看磁盘上的浏览器缓存并找到该文件,但并非所有浏览器都将所有内容缓存到磁盘,并且找出文件名可能非常困难。

当然,没有Selenium,你可以使用curl,wget等。下载图像文件,或者您可以屏幕截图浏览器并自己搜索“红色X盒”。但它们都不是很好的答案。