自动截取网站截图

时间:2011-03-07 07:23:44

标签: c# winforms

我被赋予了这样做的可怕任务。

  • 启动网站
  • 截取屏幕截图
  • 填写表单详细信息,单击“下一步”
  • 截取屏幕截图
  • ...
  • ...
  • ...

冲洗。重复。

现在,通过各种组合,最多可获得300个屏幕截图。

我必须为4种不同的浏览器执行此操作。 Chrome,Firefox,IE 6和IE 7.

我无法使用捕获屏幕截图并存储它们的工具,例如SnagIT。我需要截取屏幕截图,将其复制到Word文档并获取第二个屏幕截图并将其转换为Word文档。

我想,我会写一个小实用程序来帮助我做到这一点。这是我提出的要求规范 -

  1. 一个可执行文件,它曾在系统托盘中自行启动。
  2. 当它处于活动状态时,按下按键(Print Scrn)的所有实例,它应该将内容写入定义的Word文档(默认路径或用户定义的路径)。
  3. 定期保存文档。
  4. 现在,我的问题是 - 如果我要使用C#(Winforms应用程序)开发它,我该怎么做呢。

    我可以做一些C#编程,我愿意学习。但我无法找到如何进行后台处理的参考,以便它在后台运行。在运行时,它必须捕获Print Scrn命令。

    你能帮我们找到合适的材料,我可以从中学到这些吗?理论参考应该足够了。但是,如果有实际的参考,那就没有了。

    谢谢!

4 个答案:

答案 0 :(得分:3)

WatiN有截图方法,适用于firefox。 Selenium可能更适合,因为它支持更多的浏览器。

但是如果可以的话,我会建议你利用browsershots.org之类的东西来获取屏幕截图。

答案 1 :(得分:2)

最近在this question中回答,您可以尝试AutoIt。它不是基于浏览器的,但没有理由为什么,并且已经为你完成了所有繁重的工作。

答案 2 :(得分:1)

与你正在寻找的东西略有不同,但值得一试。

有关网站测试的自动化,请查看WatiNSelenium。至于捕获屏幕截图,请看一下 - http://www.vikramlakhotia.com/Capturing_the_image_of_the_screen_using_C.aspx。要将图像保存为Word文档,可以使用Office Automation。现在将所有这些链接在一起,你就得到了你的工具。 :)

祝你好运。让我知道它是如何运作的。

答案 3 :(得分:0)

所以你可以用Cucumber和Capybara来做到这一点,但Cucumber方式更容易。首先,在项目文件下,创建两个文件夹:(1)failed_png和(2)success_png。然后,在您的env.rb文件中,粘贴以下代码:

After do |scenario|
  take_screenshot(@browser, scenario)
end

def take_screenshot(browser, scenario)
  if scenario.failed?
    scenario_name = scenario.name.gsub /[^\w\-]/, ' '
    time = Time.now.strftime("%Y-%m-%d %H%M")
    screenshot_path = './failed_png/' + time + ' - ' + scenario_name + '.png'
  else
    scenario_name = scenario.name.gsub /[^\w\-]/, ' '
    time = Time.now.strftime("%Y-%m-%d %H%M")
    screenshot_path = './success_png/' + time + ' - ' + scenario_name + '.png'
  end
  browser.save_screenshot(screenshot_path)
end

这会在每个场景之后拍摄一个屏幕截图,然后将其放在SUCCESS文件夹或FAILED文件夹中并附上时间戳。

有关完整的env.rb文件和更多文档,请访问我的博客whitneytaylorimura.wordpress.com