Selenium 2 (WebDreiver) 代码示例:获取当前装载页面的屏幕快照

来源:互联网 发布:苹果7.0下载软件 编辑:程序博客网 时间:2024/06/06 11:35

在使用Selenium进行Web测试时,获取当前装载页面的屏幕快照是有益的。下面以C#为例给出获取屏幕快照的方法。

1、定义实用静态帮助器类和扩展方法

using System;
using OpenQA.Selenium;
using System.Drawing.Imaging;

namespace SeleniumTest
{
    public static class SeleniumUtils
    {
        /// <summary>
        /// 以指定的图像格式存储当前加载页面的屏幕快照到指定文件,如果文件已经存在则覆盖此文件
        /// </summary>
        /// <param name="driver">IWebDriver实例,如FirefoxDriver或InternetExplorerDriver</param>
        /// <param name="imageFilePath">保存快照的完整路径和文件名称</param>
        /// <param name="imageFormat">保存图像的格式</param>
        public static void SaveScreenShot(this IWebDriver driver, string imageFilePath, ImageFormat imageFormat)
        {
            (driver as ITakesScreenshot).GetScreenshot().SaveAsFile(imageFilePath, imageFormat);
        }
    }
}


2、使用示例:

// IWebDriver driver = new FirefoxDriver();

// 使用静态方法调用

SeleniumUtils.SaveScreenShot(driver, "C:\\SeleniumTestImages\\YourImageName.jpg", ImageFormat.Jpeg);

// 使用扩展方法调用

driver.SaveScreenShot("C:\\SeleniumTestImages\\YourImageName.jpg", ImageFormat.Jpeg);


注释:

1、帮助器方法的定义方式是灵活的,是否使用也不是必须的

2、一般不需要保存所有测试过程屏幕的快照,仅在Assert断言失败时保存屏幕快照,因此可以

         try

         {

                 // 使用测试框架,如NUnit的断言方法,如果失败将抛出异常

                 Assert.AreEqual(excepted, actual);
         }
         catch
         {
                 driver.SaveScreenShot("C:\\SeleniumTestImages\\YourImageName.jpg", ImageFormat.Jpeg);
         }