Watir 截图两种方式,保存截图到PPT里面
2009-02-04 14:41
267 查看
方法1
Watir API 本身提供了截图函数ScreenCapture, 可以直接使用,调用时会打开mspaint然后自动保存到指定路径
由于项目特殊要求,截图要直接保存到PPT当中,所以借用了ScreenCapture的一些代码, 再通过win32ole打开PPT, 并保存图片。
一些代码片断如下
require 'win32ole'
require 'watir'
def shot_screen
ie = Watir::IE.attach(:title, /regular expression/) # attach the window that you want
ie.bring_to_front # so it can be captured
# open the ppt and add a new slide, user
ppt = WIN32OLE.new('Powerpoint.Application')
ppt.visible = TRUE
pre = ppt.Presentations.Open "c://test.ppt"
ppt.ActivePresentation.Slides.Add(1,1)
# 使用键盘操作来截图,下面代码不能直接运行,请参考 watir/screen_capture.rb
# Ctrl + V : Paste
keybd_event.Call(VK_CONTROL, 1, 0, 0)
keybd_event.Call(vkKeyScan.Call(?V), 1, 0, 0)
keybd_event.Call(vkKeyScan.Call(?V), 1, KEYEVENTF_KEYUP, 0)
keybd_event.Call(VK_CONTROL, 1, KEYEVENTF_KEYUP, 0)
sleep(1)
end
方法2: 使用win32screenshot
通过gem install win32screenshot 安装
然后利用如下代码来截图并保存
require 'win32screenshot'
ie=Watir::IE.attach(:title, /reqular expression/)
ie.bring_to_front
bmp = Win32::Screenshot.capture_hwnd(ie.hwnd)
width,height,bmp = Win32::Screenshot.capture_hwnd(ie.hwnd)
File.open('C:/screenshot.bmp', "wb"){|io| io.write(bmp)}
运行后bmp格式的图片会被保存到指定路径
另注:
1. 还可以利用 'RMagick' 对截图进行处理,可以在网上查到相关资料。安装RMagick可能会碰到点麻烦,参考其index文件
下载win32screenshot: http://rubyforge.org/projects/win32screenshot/
下载Rmagick http://rubyforge.org/projects/rmagick/
2. 有时候想要截图的内容并没有显示在窗口内,某些时候可以利用下面的代码来scroll页面使其显示
ie.link(:text, '').document.srollintoview
Watir API 本身提供了截图函数ScreenCapture, 可以直接使用,调用时会打开mspaint然后自动保存到指定路径
由于项目特殊要求,截图要直接保存到PPT当中,所以借用了ScreenCapture的一些代码, 再通过win32ole打开PPT, 并保存图片。
一些代码片断如下
require 'win32ole'
require 'watir'
def shot_screen
ie = Watir::IE.attach(:title, /regular expression/) # attach the window that you want
ie.bring_to_front # so it can be captured
# open the ppt and add a new slide, user
ppt = WIN32OLE.new('Powerpoint.Application')
ppt.visible = TRUE
pre = ppt.Presentations.Open "c://test.ppt"
ppt.ActivePresentation.Slides.Add(1,1)
# 使用键盘操作来截图,下面代码不能直接运行,请参考 watir/screen_capture.rb
# Ctrl + V : Paste
keybd_event.Call(VK_CONTROL, 1, 0, 0)
keybd_event.Call(vkKeyScan.Call(?V), 1, 0, 0)
keybd_event.Call(vkKeyScan.Call(?V), 1, KEYEVENTF_KEYUP, 0)
keybd_event.Call(VK_CONTROL, 1, KEYEVENTF_KEYUP, 0)
sleep(1)
end
方法2: 使用win32screenshot
通过gem install win32screenshot 安装
然后利用如下代码来截图并保存
require 'win32screenshot'
ie=Watir::IE.attach(:title, /reqular expression/)
ie.bring_to_front
bmp = Win32::Screenshot.capture_hwnd(ie.hwnd)
width,height,bmp = Win32::Screenshot.capture_hwnd(ie.hwnd)
File.open('C:/screenshot.bmp', "wb"){|io| io.write(bmp)}
运行后bmp格式的图片会被保存到指定路径
另注:
1. 还可以利用 'RMagick' 对截图进行处理,可以在网上查到相关资料。安装RMagick可能会碰到点麻烦,参考其index文件
下载win32screenshot: http://rubyforge.org/projects/win32screenshot/
下载Rmagick http://rubyforge.org/projects/rmagick/
2. 有时候想要截图的内容并没有显示在窗口内,某些时候可以利用下面的代码来scroll页面使其显示
ie.link(:text, '').document.srollintoview
相关文章推荐
- 有一个Map集合里面存储的是学生的姓名和年龄,内容如下{赵四=21,王二=17,张三=18,小丫=25,李四=26,王五=38}(15分) * a.将里面的元素用两种遍历方式打印到控制台上 *
- YUV常用的两种保存方式_YUY2和YV12
- PHP post 接口上传图片 [接收ios ||androip 两种接收图片数据流保存图片方式]
- 学生管理系统----文件和数据库(oracle)两种保存数据方式
- Keras模型保存和加载的两种方式
- Python实现屏幕截图的两种方式
- 保存iptables规则的两种方式
- Activity状态保存的两种方式
- 关于APUE里面TELL_WAIT()之类函数的两种实现方式
- C# 修改保存 配置文件的两种方式以及区别
- Android ScrollView截图和图片保存到相册的方式
- easyui里面的加载tree的两种方式
- Python实现屏幕截图的两种方式
- HP的 BBWC FBWC (RAID 卡缓存数据保存的两种方式) 区别方法
- html页面保存数据的两种方式
- Silverlight/WPF 截图保存功能的实现---我得用这个方式试下,把项目里的功能修改下。
- PPT中实现图片放大缩小的两种方式
- 利用watir自动化测试并截图,截图后保存
- excel上传的两种方式(保存到服务器并读取/直接读取内容)
- Python实现屏幕截图的两种方式